Я разрабатываю приложение, и я использую сервис для воспроизведения фоновой музыки. Музыка должна воспроизводиться только в том случае, когда приложение используется, означает на переднем плане. Музыка останавливается, когда я оставляю приложение с помощью кнопки «Главная» или «Назад» (приложение может оставаться в фоновом режиме, но не видно -> нет музыки). Когда я возвращаюсь в приложение (используя домашнюю кнопку и переключаюсь обратно в приложение), музыка также возобновляется.Android запустить службу, пока приложение используется
Моя_служба:
public class MusicService extends Service {
MediaPlayer myPlayer;
private final IBinder localBinder = new LocalBinder();
public class LocalBinder extends Binder {
MusicService getService() {
return MusicService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return localBinder;
}
public boolean onUnbind(Intent intent) {
return true;
// called when the last Activity is unbound from this service
// stop your timed operations here
}
@Override
public void onCreate() {
Toast.makeText(this, "Music Service Created", Toast.LENGTH_LONG).show();
myPlayer = MediaPlayer.create(this, R.raw.ost);
myPlayer.setLooping(true); // Set looping
}
@Override
public void onDestroy() {
Toast.makeText(this, "Music Service Stopped", Toast.LENGTH_LONG).show();
myPlayer.stop();
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "Music Service Started", Toast.LENGTH_LONG).show();
if(!myPlayer.isPlaying())
myPlayer.start();
}
}
Я также использую родительский класс для всех Активности. В этом родительском классе я хочу, чтобы остановить службу на методах OnPause() и OnStop():
ComponentName topActivity = taskInfo.get(0).topActivity;
if(!topActivity.getPackageName().equals(getApplicationContext().getPackageName())) {
stopService(new Intent(this, MusicService.class));
я запустить службу на моей пусковой деятельности
startService(new Intent(this, MusicService.class));
Intent intent = new Intent(this, MusicService.class);
bindService(intent, this, 0);
Теперь к моим проблемам: Служба не останавливается, когда я нажимаю кнопку «домой», служба не останавливается, когда я покидаю приложение (кнопка «Назад»). Когда я убью задачу приложения, служба запустится через несколько секунд, и музыка будет работать до тех пор, пока я не заставлю приложение в настройках не остановить службу или не удалить приложение.
Итак, как отключить услугу полностью, когда приложение не видно или закрыто? Я прошел через несколько потоков здесь, youtube видео, учебники и много пробовал. Я также попробовал не-сервисные решения, но я не мог решить проблему.
Спасибо!
Service используется только тогда, когда вы хотите сделать некоторые фоновую задачу, так как вам не требуется фоновое задание, вы не должны использовать службу, а взять MediaPlayer управления на уровне приложений –
Тогда я должен был бы остановить медиаплеера когда я начинаю новую активность и снова запускаю игрока в новом действии. – AlcuPala
Нет. Когда вы создаете объект MediaPlayer на уровне приложения, вы можете перемещаться по любому экрану на любой экран, проигрыватель будет воспроизводиться до тех пор, пока вы не остановите/не приостановите его. –