关于AudioManager在项目中遇到的一些问题的记录

来源:互联网 发布:小土豆编程能过360吗 编辑:程序博客网 时间:2024/05/28 17:05

在项目中涉及到语音的一些处理,其中遇到了一些问题。在打完电话后重新进入项目调起TTS,语音从话筒中出来,不从扩音器中出来,audiofocus变成了-2,并且没有重新获取。解决方案为:监听电话,手机空闲设置模式为speakeron,手机挂起是释放audiofocus。

代码如下:

mPhoneManager = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE));
mPhoneManager.listen(mPhoneStateListener,PhoneStateListener.LISTEN_CALL_STATE);

private PhoneStateListener mPhoneStateListener = new PhoneStateListener(){
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:
                    Log.d(TAG, "手机空闲");
                    mAudioManager.setSpeakerphoneOn(true);
                    break;
                case TelephonyManager.CALL_STATE_RINGING:
                    Log.d(TAG, "手机来电");
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    Log.d(TAG, "手机挂起");
                    mAudioManager.abandonAudioFocus(mAudioFocusListener);
                default:
                    break;
            }
            super.onCallStateChanged(state, incomingNumber);
        }
    };

0 0