如果按下stopButton,则停止音乐

时间:2017-11-01 12:18:27

标签: android audio

我正在创建一个音频播放器,无法解决一个问题。我有两个按钮 - 启动和停止,以及一个进度条。当我更改进度条时,我会停止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();
}

2 个答案:

答案 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();
}