这几天浏览了下《Android应用开发揭秘》,大致看感觉不错。有不少实例,于是按书仿写了其中实例音乐播放器。但是仿写完发现老出现个奇怪的异常,android java.io.IOException: prepare failed.:status=0x1,于是试了多种方式都不行,于是网上搜搜资料,还真有同样的问题。
源代码的播放功能实现如下:
mMediaPlayer.reset(); mMediaPlayer.setDataSource(filePath);//异常在这里,filePath为要播放的歌曲全路径 mMediaPlayer.prepare(); mMediaPlayer.start(); mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { nextMusic(); } });
将mMediaPlayer.setDataSource(filePath); 修改为如下:
mMediaPlayer.reset(); //mMediaPlayer.setDataSource(filePath); FileInputStream fio = new FileInputStream(new File(filePath));//修改后 mMediaPlayer.setDataSource(fio.getFD()); mMediaPlayer.prepare(); mMediaPlayer.start(); mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { nextMusic(); } });
重新运行播放器,问题解决。记下来,与大家分享。