我需要的是用Androidstudio做出来一个本地音乐播放器,可以读取本地音乐的
时间: 2024-04-29 22:21:07 浏览: 101
以下是一个简单的本地音乐播放器的示例代码,使用Android Studio编写:
1. 首先,在Android Studio中创建一个新项目,并在布局文件中添加一个ListView(列表视图),用于显示本地音乐文件。
2. 接下来,创建一个类来读取本地音乐文件,如下所示:
```
public class MusicUtils {
public static ArrayList<String> getMusic(Context context) {
ArrayList<String> musicList = new ArrayList<>();
ContentResolver contentResolver = context.getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] projection = {
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DATA
};
String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
Cursor cursor = contentResolver.query(uri, projection, selection, null, null);
if (cursor != null && cursor.getCount() > 0) {
while (cursor.moveToNext()) {
String title = cursor.getString(0);
String path = cursor.getString(1);
musicList.add(path);
}
}
if (cursor != null) {
cursor.close();
}
return musicList;
}
}
```
该类使用ContentResolver查询MediaStore.Audio.Media.EXTERNAL_CONTENT_URI(外部存储器中的音频媒体文件)来获取本地音乐文件的标题和路径。在这个示例中,我们只获取包含音乐的文件,即MediaStore.Audio.Media.IS_MUSIC属性不等于0的文件。
3. 然后,在MainActivity.java中,我们将获取到的音乐文件列表传递给ListView进行显示,如下所示:
```
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private ArrayAdapter<String> mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = findViewById(R.id.listView);
mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, MusicUtils.getMusic(this));
mListView.setAdapter(mAdapter);
}
}
```
我们将MusicUtils.getMusic()方法返回的ArrayList作为ArrayAdapter的数据源,并将其设置为ListView的适配器。
4. 最后,我们需要添加一个MediaPlayer对象来播放选定的音乐文件。在MainActivity.java中,我们可以将MediaPlayer对象声明为类成员变量,并在ListView的onItemClickListener中实例化和控制MediaPlayer,如下所示:
```
public class MainActivity extends AppCompatActivity {
// ...
private MediaPlayer mMediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String path = mAdapter.getItem(i);
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
}
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
mMediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
```
在onItemClick事件中,我们获取用户所选的文件路径,然后实例化MediaPlayer,并设置其数据源,准备并开始播放。
这就是一个简单的本地音乐播放器的实现。当然,还有很多其他功能可以添加,例如播放列表、进度条、暂停和停止按钮等。
阅读全文