Android 如何从SD卡中播放音乐

我能读取到SD卡中音频文件的相关属性,路径能够获取到,但是如何根据路径,可以点击播放。每次这样设定获取的都是空指针,求大神帮个忙publicclassPlayServic... 我能读取到SD卡中音频文件的相关属性,路径能够获取到,但是如何根据路径,可以点击播放。每次这样设定获取的都是空指针,求大神帮个忙

public class PlayService extends Service {

private File file ;

private String mPath;

public PlayService() {
}
static boolean isPlay;
MediaPlayer player;

@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}

@Override
public void onCreate() {
// player = MediaPlayer.create(this, R.raw.test);

player = MediaPlayer.create(this, Uri.parse(file.getAbsolutePath()));
player.reset();

player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
play();
}
});
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(!player.isPlaying()){
player.start();
isPlay = player.isPlaying();
}else{
player.pause();
isPlay = player.isPlaying();
}
return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
player.stop();
isPlay = player.isPlaying();
player.release();
super.onDestroy();
}

private void play(){
try{
player.reset();
player.setDataSource(file.getAbsolutePath());
player.prepare();
player.start();
} catch (Exception e) {
e.printStackTrace();
}
}

public void setPath(Object path) {
mPath = path.toString();
Log.v("TAG","string path = "+mPath);
file = new File(mPath);

}
}
展开
 我来答
林风dX
2018-03-28 · TA获得超过106个赞
知道答主
回答量:47
采纳率:94%
帮助的人:6.1万
展开全部
有两种方法
第一种
sd卡的默认目录是"/mnt/sdcard",只需要
1、File mFile = new File ("/mnt/sdcard");
mFile.listFile就可以遍历出SD一级目录下的所有文件、文件夹。递归实现读取所有文件
2、根据文件后缀名可判断是否为音乐文件(包括mp3、acc等等)
3、提取出音乐文件
第二种方法
下载一个播放器软件,酷狗、天天动听或是QQ音乐,打开后他能够自动扫描出音乐文件。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式