public void OnAudioFocusChange(AudioFocus focusChange) { switch (focusChange) { case AudioFocus.Gain: audioFocus = PlayerAudioState.Focused; break; case AudioFocus.Loss: case AudioFocus.GainTransient: case AudioFocus.LossTransientCanDuck: var canDuck = focusChange == AudioFocus.LossTransientCanDuck; audioFocus = canDuck ? PlayerAudioState.NoFocusCanDuck : PlayerAudioState.NoFocusNoDuck; if (State == PlaybackStateCompat.StatePlaying && !canDuck) { playOnFocus = true; } break; default: Console.WriteLine($"Audio focus changed {focusChange}"); break; } ConfigureMediaPlayerState(); }
void GiveUpAudioFocus() { if (audioFocus != PlayerAudioState.Focused) { return; } if (audioManager.AbandonAudioFocus(this) == AudioFocusRequest.Granted) { audioFocus = PlayerAudioState.NoFocusNoDuck; } }
void TryToGetAudioFocus() { if (audioFocus == PlayerAudioState.Focused) { return; } var result = audioManager.RequestAudioFocus(this, Stream.Music, AudioFocus.Gain); if (result == AudioFocusRequest.Granted) { audioFocus = PlayerAudioState.Focused; } }