音乐播放器应用程序 - 避免两个音乐播放器同时播放

时间:2017-11-17 10:42:21

标签: android audio-player exoplayer android-7.1-nougat android-music-player

我正在使用ExoPlayer开发一个歌曲播放器应用程序。 我目前遇到的问题是,在Android 7.x设备上,用户可以同时收听两个播放器。它似乎是新Android版本的一部分。

我想知道是否可以避免这种行为,使用户在收听我的应用中的媒体时无法收听两位玩家。

1 个答案:

答案 0 :(得分:3)

您可能需要在应用程序中管理音频焦点。 你可以看看这里: 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_);
}