我有一个媒体播放器应用程序,我在其中使用链接路径从服务器获取我的数据源。问题是当我在测试时,我故意删除了我mp.setDataSource(musicUri);
要检查的音频链接路径的数据源文件,但我似乎无法捕捉到错误并解决它。
我已经替换了我mp.prepare();
的 tomp.prepareAsync();
和 simple mp.start()
to
mp.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.start();
}
});
听媒体播放器是否在启动之前准备好。
这是堆栈跟踪:
07-23 13:55:52.492: E/MediaPlayer(6870): Attempt to call getDuration without a valid mediaplayer
07-23 13:55:52.492: E/MediaPlayer(6870): error (-38, 0)
07-23 13:55:52.492: E/MediaPlayer(6870): Error (-38,0)
07-23 13:55:52.492: E/MediaPlayer(6870): stop called in state 0
07-23 13:55:52.492: E/MediaPlayer(6870): error (-38, 0)
07-23 13:55:52.492: E/MediaPlayer(6870): error (1, -107)
似乎没有任何效果,我想抓住这个错误来修复它会对媒体播放器造成的异常结果。任何帮助都可以。谢谢!
编辑:
好的,所以我添加了 onErrorListener 但仍然无法正常工作:
mp.reset();
mp.setDataSource(musicUri);
mp.prepareAsync();
// mp.prepare();
mp.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(final MediaPlayer mp, final int what,
final int extra) {
Log.e(Constant.TAG_MYREC, "Error occurred while playing audio.");
mp.stop();
return false;
}
});
mp.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.start();
}
});