本地音乐的播放:
首先在清单文件中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
再在Java代码中添加请求(后面的数字是随便的):
requestPermissions(new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
},911);
先在这个文件下添加音乐
点击upload添加音乐,添加完成后需要重启模拟器
实例化ContentResolver调用它的query方法读取里面的内容
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
if (cursor!=null){
while (cursor.moveToNext()){
String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
data = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
String size = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));
String duration = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
String album_id = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));
}
}
实例化MediaPlayer
MediaPlayer常用的方法:
setDataSource(String path) :通过一个具体的路径来设置MediaPlayer的数据源,path可以是本地的一个路径,也可以是一个网络路径
getCurrentPosition() 获取当前播放的位置
getAudioSessionId() 返回音频的session ID
getDuration() 得到文件的时间
isLooping () 是否循环播放
isPlaying() 是否正在播放
pause () 暂停
mediaPlayer=new MediaPlayer();
try {
mediaPlayer.setDataSource(data);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Toast.makeText(MainActivity.this,"开始播放",Toast.LENGTH_SHORT).show();
mediaPlayer.start();
}
});
将上方获取的data本地路径通过setDataSource方法设置
prepareAsync通过异步的方式装载流媒体文件
在流媒体装载完成后回调开始播放