@katavagner

Как поставить на паузу фоновую музыку в приложении?

Есть такой класс для создания фоновой музыки:
public class MyService extends Service {
    MediaPlayer player;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        player = MediaPlayer.create(this, R.raw.fon);
        player.setLooping(true); // зацикливаем
    }

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

    @Override
    public void onStart(Intent intent, int startid) {
        player.start();
    }
}


Далее на самом первом экране (экран загрузки) я запускаю плеер и музыку начинает работать во всех окнах:
startService(new Intent(this, MyService.class));

Далее в каждом классе я пишу такой код, что остановить музыку после сворачивания приложения:
// свернули приложение
    @Override
    public void onPause() {
        Play.super.onPause();
        stopService(new Intent(this, MyService.class)); // остановить песню
    }

    // развернули приложение
    @Override
    public void onResume() {
        Play.super.onResume();
        startService(new Intent(this, MyService.class)); // запустить песню
    }


Получается, что при каждом сворачивании / разворачивании приложения музыка начинает играть заново (это и понятно, ведь я перезапускаю класс)

Вопрос: как мне поставить фоновую мелодию на паузу, после того как пользователь свернет приложение и продолжить песню с того же места после развертывания?
  • Вопрос задан
  • 1564 просмотра
Пригласить эксперта
Ответы на вопрос 1
@onepavel
Консультация и разработка мобильных приложений
В onPause не надо вызывать stopService, вы тем самым убиваете сервис.
Вы должны в onPause вызывать startService(new Intent(this, MyService.class),putExtra("pause", true));
с параметром, который поймаете в сервисе.
В сервисе в методе onStartCommand сделать проверку на наличие параметра
если intent.getBooleanExtra("pause", false) == true тогда player.pause()
Читать developer.android.com/guide/components/services.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы