2

我使用 MediaPlayer 从网络播放一首 MP3 歌曲。数据源是从网络下载的文件。这些文件以大块的形式出现。

假设我们有以下播放状态。

歌曲时长:4:00

播放器中加载的当前块: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();
}
}
4

0 回答 0