直播app与微信qq同时占用麦克风,或者播放音乐时来电,解决麦克风冲突

//来电状态监听
    public class PhoneVVStateListener {
        // 电话管理器
        private TelephonyManager tm;
        // 监听器对象
        private MyListener listener;
        private AudioManager ams = null;//音频管理器

        public void start() {//开始监听
            tm = (TelephonyManager) context.getSystemService(TELEPHONY_SERVICE);
            listener = new MyListener();
            tm.listen(listener, android.telephony.PhoneStateListener.LISTEN_CALL_STATE);
            initAudio();
        }

        public void stop() {//停止所有任务
            tm.listen(listener, PhoneStateListener.LISTEN_NONE);
            listener = null;
            ams.abandonAudioFocus(mAudioFocusListener);
        }

        private Context context;

        public PhoneVVStateListener(Context context) {
            super();
            this.context = context;
        }

        //微信,qq通话监听
        private void initAudio() {
            ams = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            ams.getMode();//这里getmode返回值为3时代表,接通qq或者微信电话
            ams.requestAudioFocus(mAudioFocusListener, 1, 1);
        }

        private class MyListener extends android.telephony.PhoneStateListener {
            // 当电话的呼叫状态发生变化的时候调用的方法
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                super.onCallStateChanged(state, incomingNumber);
                Log.e("TAG", "state" + state);
                try {
                    switch (state) {
                        case TelephonyManager.CALL_STATE_IDLE://空闲状态。
                            //继续播放音乐
                            Log.e("TAG", "空闲状态");
                            break;
                        case TelephonyManager.CALL_STATE_RINGING://铃响状态。
                            //暂停播放音乐
                            Log.e("TAG", "铃响状态");
                            break;
                        case TelephonyManager.CALL_STATE_OFFHOOK://通话状态
                            Log.e("TAG", "通话状态");
                            break;
                        default:
                            break;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        private AudioManager.OnAudioFocusChangeListener mAudioFocusListener = new AudioManager.OnAudioFocusChangeListener() {
            public void onAudioFocusChange(int focusChange) {
                Log.e("TAG", "focusChange----------" + focusChange);
                if (focusChange == 1) {//视频语音挂断状态
                    Log.e("TAG", "电话挂断" + focusChange);
                    videoRenderAdapter.setLocalVideoEnable(roomStateControl.isVideo(), roomStateControl.isAudio());
                } else {//微信或者qq语音视频接通状态
                    Log.e("TAG", "接听电话" + focusChange);
                }

            }
        };
    }

需要以下权限

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

忘了原作者是谁了。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值