我正在try 使用REACT-Native-WebRTC创建一个视频呼叫应用程序,当呼叫开始并且我的手机连接到蓝牙耳机时,它总是使用我的Android手机麦克风而不是蓝牙耳机

有人知道如何解决这个问题吗?当我的蓝牙耳机连接时如何使用麦克风

推荐答案

我也面临着这个问题,我添加了一个插件来管理音频路径,并在XML文件中为Android添加了一些权限

Android视频通话应用程序所需的权限

<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="33" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="33" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MICROPHONE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

当您的WebRTC流启动时调用此代码,它将 Select 音频路径

import HeadphoneDetection from 'react-native-headphone-detection';

    HeadphoneDetection.isAudioDeviceConnected().then(async(e) => {
          if (e.audioJack) {
            console.log("i'm wired headset");
            InCallManager.setForceSpeakerphoneOn(false);
            InCallManager.chooseAudioRoute("WIRED_HEADSET");
            InCallManager.start()
          }
          else if (e.bluetooth) {
            console.log("i'm bluetooth headset",);
            InCallManager.setForceSpeakerphoneOn(false);
            InCallManager.chooseAudioRoute("BLUETOOTH");
            InCallManager.start()
          } else {
            console.log("i'm others");
            if (isHangUp) {
              InCallManager.setForceSpeakerphoneOn(false);
              InCallManager.stopRingback();
              InCallManager.stopRingtone();
              InCallManager.stop({ media: 'video', ringback: '_BUNDLE_' });
            } else {
              InCallManager.setForceSpeakerphoneOn(true);
              InCallManager.stopRingback();
              InCallManager.stopRingtone();
              InCallManager.chooseAudioRoute("SPEAKER_PHONE");
              InCallManager.start({ media: 'video' });
            }
          }
        });

React-native相关问答推荐

如何重复使用expo 音频对象S录音?

是否有用于react-native 的简单同步存储选项?

react-redux connect 和 redux 数据的组件生命周期顺序

React Native - 为什么我们对 Image 组件使用 tintColor 属性?

React Native:在 ScrollView contentContainerStyle 上设置 flex:1 会导致组件重叠

ReactJS toLowerCase 不是一个函数

React - 类内的useContext

react-native android中出现此问题Cannot convert argument of type class org.json.JSONArray的原因是什么?

未找到 xcode 'boost/config/user.hpp' 文件

React Native:错误:找不到资源 android:style/TextAppearance.Material.Widget.Button.Borderless.Colored

Xcode 12 问题:Build input file cannot be found

Test suite无法运行 TypeError:Cannot read property ‘default’ of undefined

React-Native 应用程序中来自 Babel 的未知选项错误

当组件在react-native 中重新呈现时,动态不透明度不会改变

React Native STUCK 启动打包器

ReactNative TextInput 不可见 iOS

如何在react-native中绘制虚线边框样式

如何在 react-native 中为在后台杀死的 android 应用程序保持状态

React-Native 最低 Android API 级别

python 3与本机兼容吗?还是我应该按照 react 文档的建议安装 python 2?