我正在使用安卓的MediaPlayer类来开始播放一首歌曲以某个偏移量为起点。在代码中指定了这个偏移量之后,我播放这首歌曲,希望从那个偏移位置开始听到它,但实际上我听到的是从开头开始播放。请注意以下代码:
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);
这段代码在模拟器上运行没有错误(已经测试过Android 1.6、2.1和2.2),但是在某些手机上运行时歌曲会从头播放。我确定在我的Droid Incredible(Android 2.2)上也会发生这种情况。同时,需要注意的是,LogCat中始终会有一些来自MediaPlayer类的输出,说明歌曲的位置确实已经被设置为某个偏移量。我已经调试了几个小时并搜索了论坛,但仍然没有解决方案。请帮忙。