我正在开发 Android 上的在线流媒体播放器。我发现 MediaPlayer 永远不会停止缓冲!它读取了缓冲区的 100% 并继续执行“某些”操作,因为流只能被读取一次,并且没有剩余的内容可以缓冲...
public void onBufferingUpdate(MediaPlayer player, int percent)
当percent = 100时,音频播放器会无限循环调用,导致电池在一夜之间被耗尽。我是否有什么操作不正确或有合理的解释?似乎缓冲无法取消,唯一停止它的方法是重置媒体播放器本身。我需要一种停止这个无限“缓冲”的方法!
这是我如何初始化媒体播放器的:
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(streamUrl);
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnInfoListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.prepareAsync();
我看到的日志信息:
10-30 08:45:21.169: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=93, ext2=0x0
10-30 08:45:22.169: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=100, ext2=0x0
10-30 08:45:23.169: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=100, ext2=0x0
10-30 08:45:24.172: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=100, ext2=0x0
10-30 08:45:25.172: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=100, ext2=0x0
...