如何将BGM添加到我的Android游戏中

时间:2017-04-18 21:18:18

标签: android

我搜索了很多,但我无法找到完整的答案,无论如何我已经为我的游戏添加了一项服务,但现在问题是当我按下主页/应用程序列表按钮时服务(BGM)仍在使用,我已尝试在主要活动中停止服务(onPause功能),但我的游戏使用多个活动,所以当我开始另一项活动时,BGM会丢失(因为它&# 39; s调用MainActivity-> onPause函数)

那么我所做的是什么?

(我的Serivce班)

package com.hema.mrlibya.firstgame;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;

/**
 * Created by MrLibya on 18/04/17.
 */

public class BGMusic extends Service {
    MediaPlayer mMediaPlayer;

    @Override
    public void onCreate(){
        super.onCreate();
        mMediaPlayer = MediaPlayer.create(this,R.raw.bg);
    }

    public int onStartCommand(Intent intent, int flags, int startId) {
        mMediaPlayer.setLooping(true); // Set looping
        mMediaPlayer.start();
        return START_NOT_STICKY;
    }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public void onDestroy() {
        mMediaPlayer.stop();
        mMediaPlayer.release();
    }
    /*
    public void onPause() {
        mMediaPlayer.pause();
        length=mMediaPlayer.getCurrentPosition();
    }
    public void onResume(){
        mMediaPlayer.seekTo(length);
        mMediaPlayer.start();

    }
    */
}

(清单)

<service android:enabled="true" android:name="BGMusic" />

(在MainActivity中我只写(onCreate函数)

startService(new Intent(this, BGMusic.class));

2 个答案:

答案 0 :(得分:0)

首先:我建议根本不使用服务,因为没有必要。只需在应用程序中实例化音乐播放器即可。但这取决于您的偏好。

其次(你的实际问题):切换活动时只需设置一个标志,例如keepMusicOn = true;然后

public void onPause() {
    if(!keepMusicOn){
        mMediaPlayer.pause();
    }
    //reset flag so that the music stops next time onPause is called
    keepMusicOn = false;
...
}

答案 1 :(得分:0)

我找到了solotuion here

它的工作100%