在不同的Android活动上暂停主要背景音乐

时间:2013-06-22 15:42:57

标签: android android-activity media-player

所以我正在开发一款安卓游戏。我的主要活动或介绍活动有游戏的背景音乐。总的来说,它是整个游戏的主要背景音乐。所以我让音乐继续播放:

 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。当用户单击播放按钮(仍在主活动上)时,下一个活动将位于主活动之上。但是在我的第二个活动中,我已经设置了一个暂停按钮,因此当用户点击它时,背景音乐也应该暂停。

你对如何做到这一点有什么聪明的想法吗?我坚持这个问题。如果你能提供帮助,我真的很感激。感谢。

1 个答案:

答案 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()函数。