【发布时间】:2017-06-10 14:16:59
【问题描述】:
我正在访问来自
的音频文件/data/user/0/app_packagename/files/filename
我没有 WRITE_EXTERNAL READ_EXTERNAL 权限。
现在我可以在没有WRITE_EXTERNAL READ_EXTERNAL 权限的情况下访问保存在/data/user/0/app_packagename/files/ 中的文件。
并且可以播放我的应用程序中的所有音频文件。
在我的应用程序中,我正在播放队列中的所有文件。第一个音频文件完成后,我的少数用户无法播放第二个音频文件。
下面是我的代码
void playNext(File varientFile) {
if (mSessionMediaPlayer != null) {
if (mSessionMediaPlayer.isPlaying()) {
mSessionMediaPlayer.stop();
}
mSessionMediaPlayer.release();
mSessionMediaPlayer = null;
}
mSessionMediaPlayer = new MediaPlayer();
if (mSessionMediaPlayer != null) {
Uri uri = Uri.parse(variantFile.getAbsolutePath());
mSessionMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mSessionMediaPlayer.setDataSource(this, uri);
mSessionMediaPlayer.setLooping(false);
mSessionMediaPlayer.prepare();
mSessionMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
playNext(mFiles.get(mNextIndex);
}
});
mSessionMediaPlayer.start();
runScheduler();
}
}
代替
mSessionMediaPlayer = new MediaPlayer();
我试过了
mSessionMediaPlayer = MediaPlayer.create(getApplicationContext(), uri);
即使MediaPlayer.create() 也在返回null。 mSessionMediaPlayer.prepare() 正在抛出异常
原因:准备失败。:status=0x1
我的代码有什么问题?为什么会得到null 或prepare failed?我已经测试了文件以及它们是否正常工作,音频文件格式为.aac。
无法播放第二个音频文件的同一用户。他能够使用相同的代码播放第一个文件。但是,如果从 onCompleted() 调用相同的方法,则它不起作用。为什么这样?
谁能帮我解决这个问题?
【问题讨论】:
标签: android android-mediaplayer aac