Android MediaPlayer上seekBar的奇怪流程

时间:2012-11-06 10:40:02

标签: android android-mediaplayer media

我使用MediaPlayer从网络播放单首MP3歌曲。数据源是从网络下载的文件。这个文件是chuncks。

我们假设我们有以下比赛状态。

歌曲持续时间:4:00

当前chunck加载到玩家:1:00

假设我想跳过一首歌的某些部分并向前寻求。我使用MediaPlayer.seekTo()方法。如果我寻找位置(1:40)它没有正确执行,搜索栏会在开始位置(00:00)进行,并且玩家停止。

public static void seekTo(int progress) {
try {
    MediaPlayer mp = new MediaPlayer();
    mp.setDataSource(sFilePath);
    mp.prepare();
    int offset = (progress * mp.getDuration()) / 100;

    if (sCompleted)
        return;
    sLastSeek = offset;

    if (offset > sMediaPlayer.getDuration()) {
        sMediaPlayer.reset();
        sMediaPlayer.setDataSource(sFilePath);
        sMediaPlayer.prepareAsync();


    } else {
        sMediaPlayer.seekTo(offset);
    }
} catch (Exception ex) {
    ex.printStackTrace();
}
}

0 个答案:

没有答案