Приложение 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_);
}