2013-02-06 82 views
0

我有3項活動。我想爲所有這些活動播放一首背景音樂。我通過這個做到了這一點。這樣做。播放/停止其他活動的聲音

在活動1:

bgmp = MediaPlayer.create(this, R.raw.menu); 
bgmp.setLooping(true); 
bgmp.start(); 

這會讓我的音樂玩到第三活性。在活動三。我需要停止這種背景音樂,因爲當我參加第4次活動時會播放另一種背景音樂。如何以第一項活動中創建的第三項活動來阻止音樂。有任何想法嗎?謝謝!

回答

2

在需要參數的普通類中定義方法,並在您的活動中使用該方法。

public class CommonMethod { 
public static MediaPlayer player; 
    public static void SoundPlayer(Context ctx,int raw_id){ 
      player = MediaPlayer.create(ctx, raw_id); 
      player.setLooping(false); // Set looping 
      player.setVolume(100, 100); 

      //player.release(); 
      player.start(); 
     } 
} 

在您的第三項活動中,停止媒體代碼。

CommonMethod.player.stop();

+0

我應該在int raw_id中傳遞什麼? – ljpv14

+0

CommonMethod.SoundPlayer(this,R.raw.menu); – RobinHood

+0

在我的第一次活動中,這個類的實例會在第三個類中有所不同嗎?例如:在第一個活動中,我將創建一個通用類的實例作爲cc,然後cc.SoundPlayer(this,R.raw.menu)來播放音樂。在第三項活動中,我是否可以通過實例化常用類ex:cc來停止在第一個活動中創建的音樂,並使用此代碼。 cc.player.stop();?先謝謝你! – ljpv14

1

創建服務來播放聲音並將所有播放器代碼移動到服務中。

之後,將您的活動綁定到此服務並控制音樂播放器(播放下一個,後退,暫停,停止等)功能。

0

你應該開始服務,在後臺運行,並在服務播放音樂寫代碼..

1

做一個單獨的類並添加音樂播放代碼到它的停止和啓動,並使用單獨的類中的所有你的如3個活動:

public class MusicManager { 

    private static MusicManager refrence = null; 

    public static MusicManager getInstance(){ 
     if(refrence == null){ 
      refrence = new MusicManager(); 
     } 
     return refrence; 
    } 

} 

添加一個公共的方法來此singleton類用於啓動和停止音樂像

public void initalizeMediaPlayer(Context context, int musicId){ 

// add initalization of media player in it and loop it 
} 

public void startPlaying(){ 
// add code to start playing music 
} 

public void stopPlaying(){ 
// add code to stop playing music 
} 

和FO r使用這個類使用像這樣

MusicManager.getInstance().initalizeMediaPlayer(this, R.raw.menu); // to initalize of media player 
MusicManager.getInstance().startPlaying();// to start playing music 
MusicManager.getInstance().stopPlaying(); // to stop playing music 

讓我知道這是否對你有幫助。 意思是,您還可以使用service來執行此任務,因爲service在後臺運行。你就可以開始service和停止service代碼中的任何時間

0

所有你需要做的就是這段代碼添加到您的意圖,最後活動:

yourMediaPlayer.pause()

所以整個代碼將是:

yourMediaPlayer.pause(); 
Intent i ... 
startActivity(i);