所以我正在开发一款安卓游戏。我的主要活动或介绍活动有游戏的背景音乐。总的来说,它是整个游戏的主要背景音乐。所以我让音乐继续播放:
private void startBgSound() {
// TODO Auto-generated method stub
//int soundFile = R.raw.backgroundmusic;
//AssetFileDescriptor afd = getResources().openRawResourceFd(soundFile);
bgsound = new MediaPlayer();
bgsound.reset();
bgsound = MediaPlayer.create(this, R.raw.backgroundmusic);
bgsound.setLooping(true);
bgsound.setVolume(100, 100);
bgsound.start();
}
将循环设置为true。当用户单击播放按钮(仍在主活动上)时,下一个活动将位于主活动之上。但是在我的第二个活动中,我已经设置了一个暂停按钮,因此当用户点击它时,背景音乐也应该暂停。
你对如何做到这一点有什么聪明的想法吗?我坚持这个问题。如果你能提供帮助,我真的很感激。感谢。
答案 0 :(得分:2)
在我的游戏中,我使用静态类处理音乐。只需在开始播放音乐时给出上下文,就可以在代码中的任何位置停止播放音乐。
只要确保在用户离开或打开游戏时重置课程,因为即使游戏已经关闭,静态课程仍可继续生活。
以下是一个例子:
import android.content.Context;
import android.media.MediaPlayer;
public class SoundHandler {
private static MediaPlayer backgroundMusic;
private static Context context;
private static boolean isMuted = false;
public static void setContext(Context cont){
context = cont;
}
public static void playMusic(int resource){
if(backgroundMusic != null) backgroundMusic.reset();
try{
backgroundMusic = MediaPlayer.create(context, resource);
backgroundMusic.setLooping(true);
backgroundMusic.setVolume(100, 100);
if(!isMuted){
backgroundMusic.start();
}
} catch (NullPointerException e){
//Creating MediaPlayer failed. This happens randomly without any clear reasons.
e.printStackTrace();
}
}
public static void setMuted(boolean muted){
if(backgroundMusic != null){
if(muted){
if(backgroundMusic.isPlaying()){
backgroundMusic.stop();
isMuted = true;
}
} else {
if(!backgroundMusic.isPlaying()){
backgroundMusic.start();
isMuted = false;
}
}
}
}
public static void quit(){
if(backgroundMusic != null){
backgroundMusic.release();
}
}
}
请记住在onCreate()中设置上下文并在onDestroy()中运行quit()函数。