private bool InitPlayerStates(string mediaId) { Logger.Debug("GetAudioFocus"); _playOnFocusGain = true; if (_audioFocusState != AudioFocusState.Focused) { var result = _audioManager.RequestAudioFocus(this, Android.Media.Stream.Music, AudioFocus.Gain); if (result == AudioFocusRequest.Granted) { _audioFocusState = AudioFocusState.Focused; } } bool mediaHasChanged = mediaId != _currentMediaId; if (mediaHasChanged) { _currentPosition = 0; _currentMediaId = mediaId; } return(mediaHasChanged); }
private void GiveUpAudioFocus() { Logger.Debug("GiveUpAudioFocus"); if (_audioFocusState == AudioFocusState.Focused) { if (_audioManager.AbandonAudioFocus(this) == AudioFocusRequest.Granted) { _audioFocusState = AudioFocusState.NoFocusAndNoHide; } } }
public void OnAudioFocusChange(AudioFocus focusChange) { Logger.Debug($"OnAudioFocusChange. focusChange={focusChange}"); if (focusChange == AudioFocus.Gain) { _audioFocusState = AudioFocusState.Focused; } else if (focusChange == AudioFocus.Loss || focusChange == AudioFocus.LossTransient || focusChange == AudioFocus.LossTransientCanDuck) { bool canDuck = focusChange == AudioFocus.LossTransientCanDuck; _audioFocusState = canDuck ? AudioFocusState.NoFocusAndCanHide : AudioFocusState.NoFocusAndNoHide; _playOnFocusGain |= MusicPlayerState == PlaybackStateCode.Playing && !canDuck; } ConfigMediaPlayerState(); }
public MusicPlayer(MusicService service, MusicProvider musicProvider) { MusicPlayerState = PlaybackStateCode.None; _audioFocusState = AudioFocusState.NoFocusAndNoHide; _musicService = service; _musicProvider = musicProvider; _audioManager = (AudioManager)service.GetSystemService(Context.AudioService); _wifiLock = ((WifiManager)service.GetSystemService(Context.WifiService)) .CreateWifiLock(WifiMode.Full, "mywifilock"); if (_mediaPlayer == null) { _mediaPlayer = new MediaPlayer(); _mediaPlayer.SetWakeMode(_musicService.ApplicationContext, Android.OS.WakeLockFlags.Partial); _mediaPlayer.SetOnPreparedListener(this); _mediaPlayer.SetOnCompletionListener(this); _mediaPlayer.SetOnErrorListener(this); _mediaPlayer.SetOnSeekCompleteListener(this); } }