我有一个musicPlayer应用程序,因此有一个实现android MediaPlayer的SongPlayer类。 MediaPlayer作为服务运行。
一切正常!!该应用程序正常播放一整天。但是一旦在24小时左右出现一首随机歌曲,onPrepared方法永远不会被调用。
逻辑流程如下:
1)我创建了媒体播放器(如果尚未创建) 2)我设置数据源 3)我准备媒体播放器为异步 4)在onPrepared方法中,我调用START方法
由于未调用onprepared方法,因此不会调用START方法,并且音乐播放器将开始播放下一首歌曲。
我做了一些分析,它与某首歌没有任何关系,它发生在随机时间的氡歌上。
没有报告任何错误。
任何可能出现问题的想法????
有关如何检查onPrepared方法是否未被调用的任何想法?作为备份计划?
守则摘要。
由于实现了其他方法(onComplete,onError等),因此代码更加复杂,但由于不需要这些方法,因此我没有将其包括在内。
if(MyGlobalAudioPlayer.mediaplayer == null){
MyGlobalAudioPlayer.mediaplayer = new MediaPlayer();}
MyGlobalAudioPlayer.mediaplayer.reset();
MyGlobalAudioPlayer.mediaplayer.setDataSource("http://"+SongPlayer.modS+SongPlayer.path);
MyGlobalAudioPlayer.mediaplayer.prepareAsync();
MyGlobalAudioPlayer.mediaplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
Log.e("OLE", "playThisSong onPREPARED");
MyGlobalAudioPlayer.mediaplayer = mp;
MyGlobalAudioPlayer.mediaplayer.start();
}
});
问题已解决:
找到问题的根源。它不是MediaPlayer类。这是我的应用程序中的其他一些过程。
我有一个服务,每60秒对服务器进行一次更新。在这种方法中,我还检查玩家是否真的在玩。如果不是我开始别的东西。
有一段时间发生了这个更新发生在MediaPalyer想要准备歌曲的同一时刻。并且方法更快,因此从未调用onPrepared。
答案 0 :(得分:0)