在Android中播放音频时出现毛刺

问题描述 投票:0回答:1

我正在使用MediaPlayer在Android中播放音频。 MediaPlayer正常工作,但是当我使用随音频持续时间更新的SeekBar时,音频播放不流畅,并在播放时中断。以下是我的代码段供参考。

mSongSeekBar.setMax(mMediaPlayer.getDuration());
    mSongSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            mMediaPlayer.seekTo(progress);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

    new Timer().scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            mSongSeekBar.setProgress(mMediaPlayer.getCurrentPosition());
        }
    }, 0, 500);

此行为的原因是什么?如何摆脱这个?我应该使用Timer的替代方法吗?

java android android-mediaplayer
1个回答
0
投票

您也可以考虑覆盖onStartTrackingTouchonStopTrackingTouch方法。因为当您拖动搜索栏时,经常会调用onProgressChanged,并且每次尝试将媒体播放器设置为从特定位置播放时,都会出现音频破裂或破裂的情况。

我建议在拖动搜索栏时暂时暂停媒体播放器,并在完成拖动后恢复音频。上面提到的方法可能会帮助您实现这些行为。

© www.soinside.com 2019 - 2024. All rights reserved.