Почему звук включается и выключается часто после добавления seekbar к аудиоплееру?

Я сделал приложение для Android. В этом приложении есть звуковой плеер. Я поставил Seekbar для аудиоплеера. Однако при воспроизведении звука звук часто включается и выключается. Эта проблема была создана с момента добавления seekbar. Я использую Thread для решения этой проблемы, но она не решена. Я использую следующие коды в методе OnCreate:

btn_playSound.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            stop_background_sound();
            if (mPlayer.isPlaying()) {
                mPlayer.pause();
            } else {
                mPlayer.start();
                new Thread() {
                    public void run() {
                        seekBar.post(new Runnable() {

                            @Override
                            public void run() {
                                // seekTo(getCurrentPosition());
                                seekBar.setProgress(mPlayer.getCurrentPosition());
                                seekBar.setMax(mPlayer.getDuration());
                                mHandler.postDelayed(this, 100);

                            }
                        });
                    }
                }.start();
            }
            call_audio_player();
        }
    });



seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
        }
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
        }
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            seekTo(progress);
        }
    });

1 ответ

Решение

Как я и ожидал, вы обновляете прогресс воспроизведения плеера, даже когда вы меняете положение панели поиска с помощью своего обработчика, а не пользователя.
замещать

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    seekTo(progress);
} 

с

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    if(fromUser) {
        seekTo(progress);
    }
} 
Другие вопросы по тегам