2016-03-15 182 views
0

我只是想停止我的MediaPlayer文件,我真的不明白爲什麼這麼複雜。我有這樣的方法來啓動音樂:停止MediaPlayer文件

public void startMusic() { 
    mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy); 
     mediaPlayer1.start(); 
     mediaPlayer1.setVolume(0.2f, 0.2f); 
     mediaPlayer1.setLooping(true); 
     play = true; 
    } 

而且我想停止音樂用這種方法:

public void stopMusic(){ 
    mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy); 
    if(play){ 
     mediaPlayer1.stop(); 
     mediaPlayer1.reset(); 
     mediaPlayer1.release(); 
     mediaPlayer1 = null; 
     play = false; 
    } 

當我打電話startMusic方法音樂開始,但是當我打電話stopMusic方法然後沒有反應。如果有人知道如何做,請回應。

回答

1
mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy); 

在此行中要創建一個新的MediaPlayer對象,你失去的舊對象引用(它會繼續玩到GC)。使用相同的對象,如下所列

public void stopMusic(){ 
    if (mediaPlayer1 != null){ 
     if(mediaPlayer1.isPlaying()){ 
     mediaPlayer1.stop(); 
     mediaPlayer1.reset(); 
     mediaPlayer1.release(); 
     mediaPlayer1 = null; 
     } 
    } 
+1

謝謝你現在工作! –

1

您正在再次創建MediaPlayer實例並停止新實例。但是您需要做的是停止正在運行並播放音頻的現有MediaPlayer實例。改變你的stopMusic() -

public void stopMusic(){ 

    if(play && mediaPlayer1 != null){ 
     mediaPlayer1.stop(); 
     mediaPlayer1.reset(); 
     mediaPlayer1.release(); 
     mediaPlayer1 = null; 
     play = false; 
    } 
+0

謝謝你現在正在工作! –