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