2013-05-07 210 views
0

我在我的Android應用程序中的一個方法中使用此setOnClickListener()。在這裏我使用了一個mediaPlayer,它是在本地聲明的。這樣我也有兩個更多的方法,所有使用mediaplayer。此外,我已宣佈全球Mediaplayer &在我的onCreate()的各個地方使用它。如何停止從其他方法播放媒體播放器

public void setOnClickListenerWithMedia(ImageView iv,final int drawable,final int sound) { 
    iv.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      stopAllSoundsAndClearMemory(); 
     switchCases(); 
     iv_gone(); 
     fullscreenImage.setVisibility(View.VISIBLE); 
     fullscreenImage.setImageResource(drawable); 
     MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), sound); 
     mediaPlayer.start(); 
     } 
    }); 
} 

我的問題是,如果我點擊任何其他方法,我必須停止MediaPlayer。對於全局聲明的MediaPlayer對象(mp。)。我可以直接使用,

if(mp!=null&&mp.isPlaying()){ 
    mp.stop(); 
} 

我可以阻止它。但是我也想停止所有方法的聲音。這怎麼可能?

P.S: - >如果我在所有方法中使用mp,它不會播放聲音&說創建靜態mediaPlayer。

謝謝。

+0

你在說什麼方法?他們應該做什麼? – Cornholio 2013-05-07 12:09:45

+0

Plz看到編輯的代碼,我會創建兩個這樣的方法,並在我的代碼中的某處使用它們。如果我調用這個方法,應該停止其他方法的聲音。而已。 – sai 2013-05-07 12:15:48

+0

在這種情況下,您應該爲全部應用全局MediaPlayer。 – Cornholio 2013-05-07 12:24:43

回答

2

每當您創建新玩家時,將其分配到Global MediaPlayer實例。這樣

MediaPlayer mp; 

,然後在onClick或以外的其他方法

聲明MediaPlayer的使用這樣

並檢查MediaPlayer是否已存在或不

f(mp!=null&&mp.isPlaying()){ 
    mp.stop(); 
    mp.release(); 
} 
mp=MediaPlayer.create(getApplicationContext(), sound); 
mp.start(); 
+0

工作謝謝花花公子 – sai 2013-05-07 12:27:33

1

嘗試設計您的中介aplayer作爲單身模式,然後你的mediaplayer將只通過整個應用創建一個實例對象。