Java 使用后台服务播放音乐时,移动到其他活动时音乐停止
我正在开发一个游戏,我使用服务在所有活动中播放音乐。 我想在我们按home键时停止播放音乐,当从一个活动切换到另一个活动时,它不应该停止播放音乐Java 使用后台服务播放音乐时,移动到其他活动时音乐停止,java,android,android-activity,service,Java,Android,Android Activity,Service,我正在开发一个游戏,我使用服务在所有活动中播放音乐。 我想在我们按home键时停止播放音乐,当从一个活动切换到另一个活动时,它不应该停止播放音乐 public class backService extends Service { private MediaPlayer mp; @Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } @Over
public class backService extends Service {
private MediaPlayer mp;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mp.stop();
mp.release();
}
@Override
public void onCreate() {
super.onCreate();
mp = MediaPlayer.create(this, R.raw.all);
mp.setLooping(true);
mp.start();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
和我的主要活动文件
public class Home extends AppCompatActivity {
private AdView mAdView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
hide();
setContentView(R.layout.activity_home);
Intent i = new Intent(this, backService.class);
adv();
}
@Override
protected void onResume(){
super.onResume();
Intent i = new Intent(this, backService.class);
startService(i);
}
@Override
protected void onStop() {
super.onStop();
Intent i = new Intent(this, backService.class);
stopService(i);
}
@Override
protected void onDestroy(){
super.onDestroy();
Intent i = new Intent(this, backService.class);
stopService(i);
}
}
当我按home键时如何停止音乐,当我们在其他活动之间切换时如何继续播放音乐
TIA尝试在中停止服务
@Override
public void onPause()
{
super.onPause();
// Check if app is in foreground
if(!isAppOnForeground(context))
{
stop music here
}
}
下面是检查应用程序是否位于前台的方法。只需在此处替换您的包,在此处替换您的包名称
请删除Activity中的stopServicei inside onStop方法,因为无论何时您将一个活动转到另一个活动,都会调用onStop方法,这就是您的服务正在终止的原因
如果您想在按下home(主页)按钮的同时暂停或停止音乐,则将ComponentCallbacks2界面实现为这样的活动
@Override
public void onTrimMemory(final int level) {
if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
if(mService != null){
mService.pauseMusic();
}
}
}
我尝试过,但当我转到另一个活动时,它仍然会停止。编辑了我的答案,请检查您的应用程序在测试它时的当前行为?使用基本活动并将其扩展到所有活动,这样您就可以初始化服务类一次,并停止使用按下“主页”按钮的Listener它工作了,当我回家时,音乐停止了,当我去参加其他活动时,音乐也不会停止,但有一个问题。按home键后,当我返回应用程序时,音乐不会恢复。你必须处理这个问题,即将你的服务绑定到活动并处理所有数据
@Override
public void onTrimMemory(final int level) {
if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
if(mService != null){
mService.pauseMusic();
}
}
}