我搜索了很多,但我无法找到完整的答案,无论如何我已经为我的游戏添加了一项服务,但现在问题是当我按下主页/应用程序列表按钮时服务(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));
答案 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%