簡體   English   中英

暫停活動后,如何在倒數計時器中正確停止Media Player?

[英]How do I correctly stop a Media Player in a CountDown Timer when the activity is Paused?

在活動暫停時,我可以在倒數計時器完成之前成功取消它。 但是,在已取消計時器的OnTick方法中實現的媒體播放器不會停止5-8秒。 當活動暫停時,在倒數計時器中禁用媒體播放器聲音的正確方法是什么?

private Button soundOn;
private Button soundOff;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_level_one);



   SharedPreferences savedSoundToggle = getSharedPreferences(PREFS_SOUNDTOGGLE, 0);
    final SharedPreferences.Editor soundEditor = savedSoundToggle.edit();

    nSound = savedSoundToggle.getInt("SoundOnorOff", 0);


    if(nSound == 1){
        soundOff.setEnabled(false);
        soundOff.setVisibility(View.INVISIBLE);
        soundOn.setEnabled(true);
        soundOn.setVisibility(View.VISIBLE);
    }
    else if( nSound == 0){
        soundOn.setEnabled(false);
        soundOn.setVisibility(View.INVISIBLE);
        soundOff.setEnabled(true);
        soundOff.setVisibility(View.VISIBLE);
    }

}

public void OneGame(){

  final MediaPlayer intro = MediaPlayer.create(getApplicationContext(), R.raw.minicycleaudio);
  final MediaPlayer go = MediaPlayer.create(getApplicationContext(), R.raw.flashgoaudio);

  getReadyTimer = new CountDownTimer(6000, 1000) {

        public void onTick(long millisUntilFinished) {

            getReadyTimeText.setText("" + millisUntilFinished / 1000);

            if(soundOn.isEnabled()){
                intro.start();
            }
            if(soundOff.isEnabled()){
                if(intro.isPlaying()){
                    intro.pause();
                }
            }
         }

          public void onFinish() {

            if(intro.isPlaying()) {
                intro.stop();
                intro.release();
            }
             if(soundOn.isEnabled()) {
                go.start();
            }


@Override
public void onPause() {

  super.onPause();
  getReadyTimer.cancel();

  }
}

我幾乎100%地肯定,由於從未調用過onFinish()函數中的媒體播放器,因此在活動暫停時,倒數計時器將被取消。 為什么onTick方法中的媒體播放器繼續播放?

我弄清楚了:若要在活動停止時在CountDown計時器中取消媒體播放器,則必須將MediaPlayer聲明為靜態的,而不是最終的。

static  MediaPlayer intro;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_level_one);
    getReadyTimeText = (TextView) findViewById(R.id.levelonetimerText);

 public void OneGame(){
    intro = MediaPlayer.create(getApplicationContext(), R.raw.minicycleaudio);


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM