Beispiel #1
0
        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));
        }
Beispiel #2
0
        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;
        }