public void Start(IAudioManagerEvents audioManagerEvents) { ThreadUtils.CheckIsOnMainThread(); if (_amState == AudioManagerState.Running) { return; } _audioManagerEvents = audioManagerEvents; _amState = AudioManagerState.Running; // Store current audio state so we can restore it when stop() is called _savedAudioMode = _audioManager.Mode; _savedIsSpeackerPhoneOn = _audioManager.SpeakerphoneOn; _savedIsMicrophoneMute = _audioManager.MicrophoneMute; _hasWiredHeadset = HasWiredHeadset(); _audioFocusChangeListener = new OnAudioFocusChangeListener(); //var result = _audioManager.RequestAudioFocus(_audioFocusChangeListener,Stream.VoiceCall,AudioFocus.GainTransient); _audioManager.Mode = Mode.InCommunication; _proximitySensor.Start(); SetMicrophoneMute(false); _userSelectedAudioDevice = AudioDevice.None; _selectedAudioDevice = AudioDevice.None; _audioDevices.Clear(); UpdateAudioDeviceState(); RegisterReceiver(_wiredHeadsetReceiver, new IntentFilter(Intent.ActionHeadsetPlug)); }
public void Stop() { ThreadUtils.CheckIsOnMainThread(); if (_amState != AudioManagerState.Running) { return; } _amState = AudioManagerState.Uninitialized; UnregisterReceiver(_wiredHeadsetReceiver); //_bluetoothManager.Stop(); //restored previously stored audio states SetSpeakerphoneOn(_savedIsSpeackerPhoneOn); SetMicrophoneMute(_savedIsMicrophoneMute); _audioManager.Mode = _savedAudioMode; _audioManager.AbandonAudioFocus(_audioFocusChangeListener); _audioFocusChangeListener = null; if (_proximitySensor != null) { _proximitySensor.Stop(); _proximitySensor = null; } _audioManagerEvents = null; }
public RtcAudioManager(Context context) { _context = context; _audioManager = (AudioManager)context.GetSystemService(Context.AudioService); //_wiredHeadsetReceiver = new WiredHeadsetReceiver(); _amState = AudioManagerState.Uninitialized; ISharedPreferences preferences = PreferenceManager.GetDefaultSharedPreferences(context); _useSpeakerPhone = preferences.GetString(context.GetString(Resource.String.pref_speakerphone_key), context.GetString(Resource.String.pref_speakerphone_default)); if (_useSpeakerPhone.Equals(SpeakerPhoneFalse)) { _defaultAudioDevice = AudioDevice.Earpiece; } else { _defaultAudioDevice = AudioDevice.SpeakerPhone; } _proximitySensor = RTCProximitySensor.Create(_context, new Runnable(OnProximitySensorChangedState)); _wiredHeadsetReceiver = new WiredHeadsetReceiver(new Runnable(() => { UpdateAudioDeviceState(); })); }