我正在创建一个音频播放器,无法解决一个问题。我有两个按钮 - 启动和停止,以及一个进度条。当我更改进度条时,我会停止setOnSeekBarChangeListener的onStartTrackingTouch方法中的音乐,以便在更改停止时顺利更改并恢复onStopTrackingTouch中的音乐。但是如果按下StopButton并且在我停止更改之后正在进行更改,音乐将再次开始播放。只有在更改之前没有按下StopButton时,我想在停止更改后恢复音乐。如何解决?
playProgress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
{
@Override
public void onProgressChanged (SeekBar seekBar,int i, boolean fromUser){
if(fromUser){
mPlayer.seekTo(i);
}
}
@Override
public void onStartTrackingTouch (SeekBar seekBar){
mPlayer.pause();
}
@Override
public void onStopTrackingTouch (SeekBar seekBar){
mPlayer.start();
}
});
//======================================================
}
public void startAudio(View view) {
mPlayer.start();
}
public void pauseAudio(View view) {
mPlayer.pause();
}
答案 0 :(得分:0)
试试这个,
playProgress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
{
@Override
public void onProgressChanged (SeekBar seekBar,int i, boolean fromUser){
}
@Override
public void onStartTrackingTouch (SeekBar seekBar){
mPlayer.pause();
}
@Override
public void onStopTrackingTouch (SeekBar seekBar){
mPlayer.seekTo(seekbar.getProgress());
mPlayer.start();
}
});
//======================================================
}
答案 1 :(得分:0)
使用始终简单的标志。标志可以是任何变量类型。在这种情况下,通常以其他方式为布尔值,通常为Int。
// Create flag
var STOP_BTN_IS_PRESSED = false;
playProgress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
{
@Override
public void onProgressChanged (SeekBar seekBar,int i, boolean fromUser){
if(fromUser){
mPlayer.seekTo(i);
}
}
@Override
public void onStartTrackingTouch (SeekBar seekBar){
mPlayer.pause();
}
@Override
public void onStopTrackingTouch (SeekBar seekBar){
if ( STOP_BTN_IS_PRESSED == false) {
mPlayer.start();
}
}
});
//======================================================
}
public void startAudio(View view) {
STOP_BTN_IS_PRESSED = false;
mPlayer.start();
}
public void pauseAudio(View view) {
STOP_BTN_IS_PRESSED = true;
mPlayer.pause();
}