Android MediaPlayer onPrepared方法有时不会被调用

时间:2015-05-06 07:17:17

标签: android android-mediaplayer

我有一个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。