Android Media Player: обработка входящих телефонных звонков и проигрывание аудио в фоновом режиме - PullRequest
3 голосов
/ 29 декабря 2011

Я довольно новичок в разработке приложений для Android, и мне нужно какое-то направление.Я написал приложение, которое воспроизводит mp3-файлы из Интернета через Android MediaPlayer по одному или из списка воспроизведения.

Пользователь может воспроизводить по одному mp3 за раз или поставить в очередь несколько mp3, перейти к экрану списка воспроизведения и прослушивать каждое из них по очереди.У меня есть индикатор выполнения, кнопки запуска, остановки, паузы и продолжения на экране, который воспроизводит один mp3.На экране списка воспроизведения нет индикатора выполнения, но есть кнопки запуска, остановки, паузы и продолжения.

Мне нужно следующее поведение, но я не уверен, как правильно его реализовать:

  • , когда воспроизводится mp3 и принимается входящий телефонный звонок, mp3приостановлена;когда пользователь кладет трубку, mp3 автоматически возобновляется

  • , когда проигрывается mp3, и пользователь нажимает кнопку «домой» на телефоне, mp3 продолжает воспроизводиться, пока пользователь свободенделать другие вещи (например, проверять электронную почту);

Нужно ли реализовывать медиаплеер как сервис?Нужен ли отдельный поток для запуска медиаплеера?

Я не делаю ни сейчас.

Есть ли хороший урок по этому вопросу?

Я попробовал следующий урок в отдельном приложении, которое реализует медиаплеер как сервис, и, кажется, он выполняет большую часть того, что я хочу, но я не смог понять, как включить «паузу»Кнопка «и» продолжить.«ServicesDemo - Использование служб Android»: http://marakana.com/forums/android/examples/60.html

В качестве дополнительного вопроса, есть ли стандартные медиаплееры, которые можно приобрести или бесплатно загрузить, которые уже имеют эту функцию, которая может быть включена в мое приложение?

Я пока не публикую здесь никакого кода, так как это более общий вопрос, но он будет продолжен.

Заранее спасибо, Дейв

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Попробуйте этот код для остановки и возобновления песни между вызовами

PhoneStateListener phoneStateListener=new PhoneStateListener()
      {
        @Override
        public void onCallStateChanged(int state, String phoneNumber) 
        {
            if(state==TelephonyManager.CALL_STATE_RINGING )
            {
                MP.Pause();
            }
           else if(state==TelephonyManager.CALL_STATE_OFFHOOK )
           {
           MP.Pause();

         }else if (state==TelephonyManager.CALL_STATE_IDLE)
            {
                MP.Start();
            }

        }

    };
    TelephonyManager manger = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    if(manger!= null) {
        manger.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
    }
0 голосов
/ 04 ноября 2013

Да, вам нужен сервис для вашего медиаплеера, а также о том, как обрабатывать телефонные звонки, читайте об AUDIO_FOCUS.

...