0
我只是在玩一個應該能夠播放兩個不同音頻文件的小型Android應用程序。爲什麼我的第二個AudioPlayer無法啓動?
已經工作:
我可以點擊兩個開關之一和音頻播放。 當我再次點擊它暫停。 當我點擊其他開關時,正在運行的媒體播放器也暫停。
但是到那時還有什麼不起作用:
第二個音頻應該現在開始,但是不是。相反,開關一直關閉。(因爲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();
}