4
我使用Android的MediaPlayer类从一些偏移量开始播放歌曲。在代码中指定此偏移量后,我播放歌曲,期望从该偏移位置听到它,但我从头开始听到它播放。请注意以下代码:MediaPlayer seekTo不一致地播放歌曲
MediaPlayer mplayer = new MediaPlayer();
mplayer.reset();
try {
// For example's sake, specify some known song path
mplayer.setDataSource("//media/external/audio/media/1");
// call blocking prepare()
mplayer.prepare();
} catch (Exception e) {
// Keep try/catch simple for example's sake
e.printStackTrace();
return;
}
// seekTo is an asynchronous operation. Set it's complete callback to play the song once seekTo has completed
mplayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
@Override
public void onSeekComplete(MediaPlayer mp) {
// Start the song 30 seconds in
mp.start();
}
});
// Seek to 30 seconds into the song
mplayer.seekTo(30000);
此代码示例运行,而无需在模拟器中的错误(对机器人1.6,2.1测试,和2.2);然而,在某些手机上运行时,该歌曲将从一开始播放。我知道这确实发生在我的Droid Incredible(android 2.2)上。另外请注意,LogCat将始终有一些MediaPlayer类的输出,表明歌曲的位置确实已设置为某个偏移量。我已经调试了几个小时,并搜索论坛,仍然没有解决方案。请帮忙。
感谢您的输入。我不认为这些问题是相同的。您连接的错误涉及流媒体,并声称可以在2.2版本中进行补救。我所描述的错误似乎只影响HTC手机(据我所知)。 – jdgilday 2011-01-20 02:13:25
他们声称已经在2.2中修复了,但如果你在评论中读到大多数人仍然有问题。我有一个难以置信的,仍然有这个问题。您是否在非HTC手机上进行过测试? – Cameron 2011-01-21 15:52:30
在我的HTC Evo上,如果我寻求缓冲或无缓冲的位置,它会从头开始重新启动流,并在日志中看到StageFright错误。 – HenryAdamsJr 2011-01-28 21:27:48