Фоновая музыка останавливается во время занятий
Как сделать так, чтобы сервис (фоновая музыка) отключался при закрытии приложения или выключении экрана, а не при переключении на другое занятие?
В настоящее время музыка играет нормально, длится до тех пор, пока экран не выключится или не закрою приложение, но также закроется при переключении на другое занятие. Это, вероятно, вызвано onStop
а также onPause
присваивается каждому виду деятельности. Пожалуйста, помогите мне решить эту проблему
Мой сервис:
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 ответа
Используйте этот код.
Удалить эту строку:
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() {
}
}
Есть два способа, которые я могу предложить
1) пусть он будет в onPause(), создайте флаг / логическое значение, которое будет по умолчанию установлено в false и будет истинным в каждом случае, например при запуске новой активности, при нажатии на спину и т. Д., Так что если вызывается onPause и flag равен false Вы можете остановить музыку.
2) у вас уже есть фоновый сервис, вы можете продолжать проверять, какие действия находятся на переднем плане, если homeScreen, вы можете остановить музыку.
Изменить:- чтобы узнать, если ваше приложение не на переднем плане