小弟最近正在嘗試開發遊戲,不過最近遇到了一個問題,就是小弟的遊戲音樂是用mediaplayer播放,之前在手機測試時正常,但今天測試時卻發生同時播放兩個同樣的背景音樂,小弟遊戲設置為一進入遊戲開始選單會播放一個背景音樂,但卻發生同個音樂同時有兩個在播放,而遊戲開始切換另一首背景音樂時發現,有一個能夠因我的設置而stop(),但另一個卻會繼續播放,但小弟只有設置一個mediaplayer來循環播放那個背景音樂,卻不知為何會重疊多播放一次,小弟試著不要start()後發現兩者皆不會播放,但小弟就是找不到原因,而在模擬器上測試為正常,不曉得是不是和手機有關係?
![[求助]android mediaplayer問題](https://www.cool3c.com/assets/img/default-cover.jpg?auto=compress&fix=max&w=2560)
4 則回應
stop()之後有試過rsset()、release()嗎?
surfaceDestroyed()有做音樂處理嗎?
你是有跳轉頁面嗎?
你這邊是開啟關閉音樂的判斷而已
如果有跳轉頁面,我需要的是生命周期的部分
不然貼整個程式碼應該比較好判斷,
把會動到生命週期的部分貼出來
OnResume , OnStart 那些
你有開始或停止 media 的部分
把會動到生命週期的部分貼出來
OnResume , OnStart 那些
你有開始或停止 media 的部分
public void playWelcomeViewBackgroundMusic(){
if(activity.musicOn && activity.welcomeViewBackgroundMusic != null){
activity.welcomeViewBackgroundMusic.setLooping(true);
activity.welcomeViewBackgroundMusic.start();
}
else{
activity.welcomeViewBackgroundMusic.stop();
try{
activity.welcomeViewBackgroundMusic.prepare();
}catch(Exception e){
e.printStackTrace();
}
}
}
public void stopWelcomeViewMusic(){
if(activity.welcomeViewBackgroundMusic.isPlaying()){
activity.welcomeViewBackgroundMusic.stop();
try{
activity.welcomeViewBackgroundMusic.prepare();
}catch(Exception e){
e.printStackTrace();
}
}
}
這是小弟寫的其中一個surfaceview的方法,小弟有兩個surfaceview,兩個surfaceview的play跟stop方法都一樣,再切換到另一個surfaceview之前先將原本surfaceview播放的音樂stop,在play要切換的sufaceview的音樂