Я использую класс Android 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, сообщая, что положение песни действительно было установлено с некоторым смещением.Я отлаживал это часами, просматривал форумы и до сих пор не нашел решения.Пожалуйста, помогите.