2017-11-25 67 views
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(); 

} 

回答

0

這是因爲你的MediaPlayer

得到相同的實例
相關問題