我正在使用ExoPlayer开发一个歌曲播放器应用程序。 我目前遇到的问题是,在Android 7.x设备上,用户可以同时收听两个播放器。它似乎是新Android版本的一部分。
我想知道是否可以避免这种行为,使用户在收听我的应用中的媒体时无法收听两位玩家。
答案 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_);
}