关于同时链接USB耳机与蓝牙耳机时,麦克风数据只走USB不走蓝牙耳机

Posted 不二菜菜子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于同时链接USB耳机与蓝牙耳机时,麦克风数据只走USB不走蓝牙耳机相关的知识,希望对你有一定的参考价值。

   mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

 private void openSco()
        if (!mAudioManager.isBluetoothScoAvailableOffCall())
            Log.d(TAG, "系统不支持蓝牙录音");
            return;
       
        //mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
        //蓝牙录音的关键,启动SCO连接,耳机话筒才起作用
        mAudioManager.stopBluetoothSco();
        mAudioManager.startBluetoothSco();
        //蓝牙SCO连接建立需要时间,连接建立后会发出ACTION_SCO_AUDIO_STATE_CHANGED消息,通过接收该消息而进入后续逻辑。
        //也有可能此时SCO已经建立,则不会收到上述消息,可以startBluetoothSco()前先
        //stopBluetoothSco()
        registerReceiver(new BroadcastReceiver()
            @Override
            public void onReceive(Context context, Intent intent)
                int state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -1);
                if (AudioManager.SCO_AUDIO_STATE_CONNECTED == state)
                    mAudioManager.setBluetoothScoOn(true);  //打开SCO
                    //voiceRecogniton();//开始语音识别
                    unregisterReceiver(this);  //别遗漏
                else //等待一秒后再尝试启动SCO
                    try
                        Thread.sleep(1000);
                    catch (InterruptedException e)
                        e.printStackTrace();
                   
                    mAudioManager.startBluetoothSco();
               
           
        , new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED));
   

  private void closeSco()
        if(mAudioManager.isBluetoothScoOn())
            mAudioManager.setBluetoothScoOn(false);
            mAudioManager.stopBluetoothSco();
       
   
 

以上是关于关于同时链接USB耳机与蓝牙耳机时,麦克风数据只走USB不走蓝牙耳机的主要内容,如果未能解决你的问题,请参考以下文章

USB Composite 组合设备之耳机+多路CDC

USB Composite 组合设备之耳机+多路CDC

USB Composite 组合设备之耳机+多路CDC

USB耳机声卡-音频输入/输出控制器:DP108替代兼容CM108

鑫创SSS1530/USB Typec音频声卡芯片方案设计参考资料

iPhone/iPad上的双通道录音:耳机+内置麦克风