2013-05-08 148 views
1
private MediaPlayer mpintro; 
mpintro = MediaPlayer.create(this, R.raw.bgmusic); 
mpintro.setLooping(true); 
mpintro.start(); 

這些是我的mediaplayer代碼,不斷在應用程序背景中播放,儘管我有一個小問題。當應用程序在後臺或我關閉它(沒有強制關閉)時,它仍然播放聲音,然後我再次播放它播放兩次,每次更多。我如何停止或暫停它並獲得一個聲音?Android的音樂播放器播放同一個聲音不止一個

PS:我不想在應用程序apk的聲音文件,我怎麼能從任何文件夾調用它?

+0

你有兩個mediaPlayers? mpclick和mpintro?爲了停止聲音,只需調用例如mpintro.stop();在你的活動的onPause()或onStop()方法 – Opiatefuchs 2013-05-08 13:30:59

+0

編輯:對不起,這是錯誤的代碼,我有兩個mp和其他播放只是點擊,介紹一個暫停和點擊播放,然後介紹再次播放。 我應該在哪裏停止或暫停方法?當程序沒有顯示在屏幕上,然後只有一個聲音再次播放不會兩次或更多:) – 2013-05-08 13:43:55

回答

0

在您的主要活動中您可以通過覆蓋onPause(),onStop()方法來處理它。如果您在Eclipse中開發,請右鍵單擊鼠標按鈕 - >源代碼 - >覆蓋/實現方法。在這裏,您可以選擇的onPause()或的onStop()方法,那麼他們將被添加到您的代碼:

@override 
     protected void onPause(){ 

     if(mpintro!=null){ 

     mpintro.stop(); 
     } 

      super.onPause(); 
     } 

用相同的onStop()。但這取決於你想要什麼。如果你想停止媒體播放器,這應該工作。但如果你想暫停您的播放器,因此,如果您恢復您的應用程序也可能再次播放,那麼你可以稱之爲:

 @override 
     protected void onPause(){ 

     if(mpintro!=null){ 

     mpintro.pause(); 
     } 
     super.onPause(); 
     } 

,並在您的onResume():

 @override 
     protected void onResume(){ 

     if(mpintro!=null){ 
     mpintro.start(); 
     } 
      super.onResume(); 
     } 

我couldn'現在就測試這個代碼,所以如果有什麼不對,請說點什麼,我會稍後再試。但是這應該給你例子如何處理它。

+1

謝謝,它的工作,只是自動添加 'super.onPause();' 和 'super.onResume() ;' – 2013-05-08 14:33:03

+0

是的,你是賴特....我忘了......現在我修好了...... – Opiatefuchs 2013-05-08 17:05:07