2017-11-25 20 views
0

私はちょうど2つの異なるオーディオファイルを再生できるはずの小さなAndroidアプリケーションで遊んでいます。2番目のAudioPlayerが起動しないのはなぜですか?

すでに動作しています:
2つのスイッチのうち1つをオンにして、オーディオを再生できます。 もう一度タップすると一時停止します。 他のスイッチをタップすると、実行中のメディアプレーヤーも一時停止します。

しかし、その時点で何が機能していないのですか。
2番目のオーディオは今すぐ開始する必要がありますが、そうではありません。その代わり、スイッチは...(おそらくonCompletionイベントの?)をオフし続ける

マイコード:

/** 
* Switches (play/pause music) 
*/ 
private Switch sAUDIO1, sAUDIO2 

/** 
* Media Players (components to control MP3 playback) 
*/ 
private MediaPlayer mpAUDIO1, mpAUDIO2 

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

    getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.tuAkzentfarbe1BlauHell))); 

    InitializeActivity(); 
} 

/** 
* Initialises widgets and event handlers 
*/ 
private void InitializeActivity() { 
    sAUDIO1 = (Switch) findViewById(R.id.switchAUDIO1); 
    sAUDIO2 = (Switch) findViewById(R.id.switchAUDIO2); 

    sAUDIO1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      AUDIO1Toggled(); 
     } 
    }); 

    sAUDIO2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      AUDIO2Toggled(); 
     } 
    }); 

    mpAUDIO1 = MediaPlayer.create(this, R.raw.audio1); 
    mpAUDIO2 = MediaPlayer.create(this, R.raw.audio2); 

    mpAUDIO1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      sAUDIO1.setChecked(false); 
     } 
    }); 

    mpAUDIO2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      sAUDIO2.setChecked(false); 
     } 
    }); 



} 


/** 
* Handle toggling of AUDIO 1 switch 
*/ 
private void AUDIO1Toggled() { 


    if (sAUDIO1.isChecked()) { 
     sAUDIO2.setChecked(false); 
     PauseAUDIO2(); 
     PlaybackAUDIO1(); 
    } else { 
     PauseAUDIO1(); 
    } 


} 

/** 
* Starts playback of first audio 
*/ 
private void PlaybackAUDIO1() { 

    mpAUDIO1.start(); 

} 

/** 
* Halts playback of first audio 
*/ 
private void PauseAUDIO1() { 

    mpAUDIO1.pause(); 

} 

/** 
* Handle toggling of AUDIO 2 switch 
*/ 
private void AUDIO2Toggled() { 

    if (sAUDIO2.isChecked()) { 

     sAUDIO1.setChecked(false); 
     PauseAUDIO1(); 
     PlaybackAUDIO2(); 

    } else { 
     PauseAUDIO2(); 
    } 

} 

/** 
* Starts playback of second audio 
*/ 
private void PlaybackAUDIO2() { 

    mpAUDIO2.start(); 

} 

/** 
* Halts playback of second audio 
*/ 
private void PauseAUDIO2() { 

    mpAUDIO2.pause(); 

} 

答えて

0

これが起こるあなたはMediaPlayerの

から同じインスタンスを取得するため、
関連する問題