为什么我的第二个AudioPlayer无法启动?

时间:2017-11-25 10:18:51

标签: java android

我正在玩一个小型的Android应用程序,应该可以播放两个不同的音频文件。

已经有效:
我可以点击两个开关中的一个并播放音频。 当我再次点击它时,它会暂停。 当我点击另一个开关时,正在运行的媒体播放器也会暂停。

但那时还有什么不起作用:
第二个音频现在应该开始,但事实并非如此。相反,开关保持关闭..(可能是因为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();

}

1 个答案:

答案 0 :(得分:0)

这是因为您从MediaPlayer获得相同的实例