Ejemplo n.º 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));
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 3
0
        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(); }));
        }