首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个简单的游戏中播放Android背景音乐

问在一个简单的游戏中播放Android背景音乐
EN

Stack Overflow用户
提问于 2015-10-07 09:51:18
回答 2查看 570关注 0票数 1

我试着用Services在安卓上玩简单游戏中的背景音乐。

使用链接:Android Life Cycles

但是这段代码不能正常工作,onResumeActivity, onPauseActivity被调用,但是即使在调用onPauseActivity方法时,音乐仍然在后台运行。

当应用程序处于后台时,音乐继续播放。

在Android应用程序/游戏中还有其他播放背景音乐的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-22 15:55:27

代码语言:javascript
复制
public class SoundGameBaseActivity extends Activity {
public static boolean isSoundPaused = false;





public static MediaPlayer mp;

protected static final String TAG = SoundGameBaseActivity.class.getName();

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);


    playMusic();
}

public static boolean isAppWentToBg = false;

public static boolean isWindowFocused = false;

public static boolean isMenuOpened = false;

public static boolean isBackPressed = false;

@Override
protected void onStart() {
    Log.d(TAG, "onStart isAppWentToBg " + isAppWentToBg);

    applicationWillEnterForeground();

    super.onStart();
}

private void applicationWillEnterForeground() {
    if (isAppWentToBg) {
        //Google Analytics
        MyApp.getInstance().trackScreenView("ApplicationActivated");
        isAppWentToBg = false;
    //  Toast.makeText(getApplicationContext(), "App is in foreground",
    //          Toast.LENGTH_SHORT).show();
        playMusic();
    }
}

@Override
protected void onStop() {
    super.onStop();

    Log.d(TAG, "onStop ");


        applicationdidenterbackground();


}

public void applicationdidenterbackground() {

    if (!isWindowFocused) {

        isAppWentToBg = true;
        Toast.makeText(getApplicationContext(),
                "App is Going to Background", Toast.LENGTH_SHORT).show();

        stopMusic();

    }
}

public void TurnOnMusicAgain() {

}

void playMusic() {





        if (mp == null) {
            mp = MediaPlayer.create(this, R.raw.background1);
            // mp.prepare();
            mp.start();
            mp.setLooping(true);

        } else {
            if (mp.isPlaying()) {

            } else {
                Log.e("", "coming back");
                mp.start();
            }
        }

}

void stopMusic() {
    if (mp != null)

        mp.pause();
}

@Override
public void onBackPressed() {

    if (this instanceof StartScreen) {

    } else {
        isBackPressed = true;
    }

    Log.d(TAG,
            "onBackPressed " + isBackPressed + ""
                    + this.getLocalClassName());
    super.onBackPressed();
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {

    isWindowFocused = hasFocus;
    Log.e("Is Window Focus", "" + isWindowFocused);
    if (isBackPressed && !hasFocus) {
        isBackPressed = false;
        isWindowFocused = true;
    }

    super.onWindowFocusChanged(hasFocus);
}

}

票数 -1
EN

Stack Overflow用户

发布于 2015-10-07 10:10:55

我想这个密码对你有用。添加这个类(包含在活动类中)。

代码语言:javascript
复制
public class BackgroundMusic extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        MediaPlayer backgroundmusic = MediaPlayer.create(YourActivity.this, R.raw.yourbackgroundmusic); 
        player.setVolume(100,100); 
        player.setLooping(true); 
        player.start(); 

        return null;
    }

}

并创造它

代码语言:javascript
复制
BackgroundMusic bm = new BackgroundMusic();

关于onResume方法:

代码语言:javascript
复制
public void onResume() {
    super.onResume();
    bm.execute(null);
}

和onPause方法:

代码语言:javascript
复制
public void onPause() {
    super.onPause();
    bm.cancel(true);
}

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32989105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档