Приложение Music Player - избегайте одновременного воспроизведения двух музыкальных проигрывателей

Я разрабатываю приложение Player Player с использованием ExoPlayer. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что на устройствах Android 7.x пользователь может одновременно прослушивать два игрока. Кажется, это вещь из новых версий Android.

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

1 ответ

Решение

Вероятно, вам нужно управлять Audio Focus в вашем приложении. Вы можете посмотреть здесь: https://developer.android.com/guide/topics/media-apps/audio-focus.html

Чтобы избежать одновременного воспроизведения всех музыкальных приложений, в Android реализована идея фокусировки звука. Только одно приложение может удерживать аудио фокус одновременно.

Когда ваше приложение должно выводить звук, оно должно запрашивать фокусировку звука.

AudioManager mAudioManager_ = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener_ = new AudioManager.OnAudioFocusChangeListener()
        {   @Override
            public void onAudioFocusChange (int focusChange)
            {   switch (focusChange)
                {   case AudioManager.AUDIOFOCUS_GAIN:
                        Log.e("DEBUG", "##### AUDIOFOCUS_GAIN");
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                        Log.e("DEBUG", "##### AUDIOFOCUS_LOSS_TRANSIENT");
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                        Log.e("DEBUG", "##### AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS:
                        Log.e("DEBUG", "##### AUDIOFOCUS_LOSS");
                        break;
                }
            }
        };


if (mAudioManager_.requestAudioFocus(mOnAudioFocusChangeListener_, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED)
{   // start play
    // ...
    mAudioManager_.abandonAudioFocus(mOnAudioFocusChangeListener_);
}
Другие вопросы по тегам