背景音乐在开关活动时停止

时间:2016-12-30 10:40:38

标签: android android-studio service media-player

如何关闭应用程序或关闭屏幕时关闭服务(背景音乐),但是当我切换到其他活动时却不能关闭?

目前音乐播放正常,我会持续到屏幕关闭或关闭应用程序,但在切换到其他活动时也会关闭。这可能是由分配给每项活动的onStoponPause引起的。请帮我解决这个问题

我的服务:

public class MyService extends Service {


private final String TAG = null;
MediaPlayer player;

public IBinder onBind(Intent arg0) {

    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    player = MediaPlayer.create(this, R.raw.music;
    player.setLooping(true); // Set looping
    player.setVolume(100, 100);




}

public int onStartCommand(Intent intent, int flags, int startId) {
    player.start();
    return 1;
}

public void onStart(Intent intent, int startId) {
    // TO DO
}

public IBinder onUnBind(Intent arg0) {
    // TO DO Auto-generated method
    return null;
}


protected void onStop() {
    player.pause();
}

public void onPause() {
    player.pause();
}

@Override
public void onDestroy() {
    player.stop();
    player.release();
}

@Override
public void onLowMemory() {

}

}

我的示例活动有:

public void onPause() {
    super.onPause();
    stopService(new Intent(a.this, MyService.class));



}

public void onStop() {
    super.onStop();
    stopService(new Intent(a.this, MyService.class));

}

public void onResume() {
    super.onResume();
    startService(new Intent(a.this, MyService.class));

}

public void onRestart() {
    super.onRestart();
    startService(new Intent(a.this, MyService.class));

}

2 个答案:

答案 0 :(得分:0)

我可以通过两种方式建议

1)让它在onPause()中,创建一个标志/布尔值,默认情况下将设置为false,并且在每种情况下都为真,例如新活动启动,背压等等。所以如果调用onPause并且旗帜是假的,你可以停止音乐。

2)你已经有后台服务,你可以继续检查哪个活动在前台,如果是homeScreen,你可以停止音乐。

编辑: - 了解您的应用是否不在前台

check this link

this is good example

答案 1 :(得分:0)

使用此代码。

删除此行:

player.pause();

public class MyService extends Service {


private final String TAG = null;
MediaPlayer player;

public IBinder onBind(Intent arg0) {

return null;
}

@Override
public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.music;
player.setLooping(true); // Set looping
player.setVolume(100, 100);
}

public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return 1;
}

public void onStart(Intent intent, int startId) {
// TO DO
}

public IBinder onUnBind(Intent arg0) {
// TO DO Auto-generated method
return null;
}

protected void onStop() {
//player.pause();
}

public void onPause() {
//player.pause();
}

@Override
public void onDestroy() {
//player.stop();
player.release();
}

@Override
public void onLowMemory() {
 }
}