2015-09-04 87 views
0

當我點擊一個按鈕,一個音頻播放,但如果在我的應用程序中播放另一個音頻剪輯的第一個並沒有停止,但兩個音頻剪輯同時運行。如果我多次單擊按鈕,音頻文件的多個實例運行,則存在此問題。我想一次僅運行一個音頻文件。如果我單擊另一個音頻文件,則應自動停止以前的音頻文件。Android:音頻問題

的java文件代碼

button_audio2.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      mysound = MediaPlayer.create(MyActivity.this, R.raw.audio2); 
      if(mysound.isPlaying()){ 
       button_audio2.setText("play"); 
       mysound.pause();} 
      else{ 
       button_audio2.setText("pause"); 
       mysound.start(); 
       mysound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mp) { 
         mp.release(); 
        } 
       }) 
       ; 
      } 
     } 
    }); 
+0

'MediaPlayer'對象具有'isPlaying'和'stop'方法。 – Michael

+0

isPlaying()或setOnCompletionListener()? – 18446744073709551615

+0

isPlaying在我的代碼中沒有工作..我再次粘貼了我的代碼...但它不起作用。 –

回答

0

至於在帖子中說,每次按鈕單擊此創建一個新的MediaPlayer

你可以做你的代碼稍加改變,以測試是否mysound已經初始化。

button_audio2.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     if (mysound == null){ 
      mysound = MediaPlayer.create(MyActivity.this, R.raw.audio2); 
      mysound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer mp) { 
        mp.release(); 
        mysound = null; 
       } 
      }); 
     } 
     if(mysound.isPlaying()){ 
      button_audio2.setText("play"); 
      mysound.pause(); 
     } 
     else{ 
      button_audio2.setText("pause"); 
      mysound.start(); 
     } 
    } 
}); 
+0

通過這段代碼現在解決了這個問題......但是它引起了新的問題..音頻完成後,我再次嘗試通過點擊按鈕應用程序崩潰來運行音頻。異常是:java.lang.IllegalStateException at android.media.MediaPlayer.isPlaying(Native Method) at com.baswal.neeraj.myfirstapp.MyActivity $ 2.onClick(MyActivity.java:72) at android.view.View。 performClick(View.java:4761) –

+0

我編輯了代碼,添加了'mysound = null',這將重新創建一個新的MediaPlayer,如果你不想發佈mediaplayer,你必須添加'mp.reset();'而不是'mp.release();'和'mysound = null;' – Hacketo

+0

@neerajbaswal如果我的回答幫助了你,隨時接受它 – Hacketo