在播放 Media Player 时更新 Android seebar 时音频中断

Audio interrupted when updating Android seebar while playing Media Player

我正在开发一个应用程序,可以播放 原始音乐文件 中的音乐,并且在 media player 播放时每秒更新一次搜索栏。但是,每次通过 Runnable 更新搜索栏时,这都会 中断 音频。我已尝试使用 Sound Pool(来自 here)或创建其他帖子建议的新线程,但问题仍然存在。我应该改用服务吗?

以下代码片段 运行 来自 ListFragment。谢谢

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        updateProgress = false;
    }
});

seekBar.setMax(mediaPlayer.getDuration());
seekBar.setProgress(0);
updateProgress = true;

updateRunnableHandler = new Handler();
mUpdateRunnable = new Runnable() {
    @Override
    public void run() {
        if (updateProgress) {
            seekBar.setProgress(mediaPlayer.getCurrentPosition());
            updateRunnableHandler.postDelayed(mUpdateRunnable, 1000);
        }
    }
};

updateRunnableHandler.postDelayed(mUpdateRunnable, 1000);
mediaPlayer.start();

发现问题。代码需要检查seekbar的setOnSeekBarChangeListener处理的onProgressChanged事件是否来自用户。

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        if (fromUser) {
            musicService.setPosition(progress);
        }
    }