Почему звук включается и выключается часто после добавления 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);
}
}