当前位置: 首页 > 知识库问答 >
问题:

连接到车载蓝牙系统会导致设备自动拨打电话

胡越泽
2023-03-14

我们编写了在后台录制音频的应用程序。我们将AVAudioSession与AVAudioSessionCategoryPlayAndRecord类别和AVAudioSessionCategoryOptionAllowBluetooth选项一起使用:

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions: AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionAllowBluetooth  error:&error];

我们注意到一个奇怪的问题——当iPhone连接到多媒体汽车蓝牙系统并且我们的应用程序运行时,会显示从设备到自身的电话呼叫(在所有设备连接到蓝牙系统期间呼叫会继续)。当我们关闭应用程序时——呼叫结束,当我们再次打开应用程序时——呼叫开始等等。这个问题会在所有多媒体蓝牙系统上重现。我们如何解决它?谢谢

共有1个答案

阮梓
2023-03-14

认为您需要添加AVAudioSessionClass oryOptionAllowBluetoothA2DP而不是旧的HFP配置文件。该调用用于使旧的蓝牙设备正常工作。

在iOS 10中,苹果增加了AvaudioSessionCategoryoOptionalLowBluetoothA2DP选项。他们还改变了AudioSessionCategoryoOptionalLowBluetooth的含义,只允许使用HFP蓝牙模式输出,这就是获得低质量音频输出的地方。

如果您在代码段中使用这个新选项来代替AudioSessionCategoryoOptionalLowBluetooth选项,它将允许高质量的输出,但不允许低质量的音频输出。

这是选项的在线文档,但不幸的是,没有对新的iOS 10选项的在线描述。您可以在AVAudioSession的代码内文档中看到更多详细信息。hhttps://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions?language=objc

信息来源:初始化音频会话时保持蓝牙声音

 类似资料:
  • 连接设备 接口说明 用于连接 扫描出来的蓝牙设备。 参数说明 字段 类型 必须? 说明 device RKBLEDevice 是 蓝牙设备 示例代码 Swift: RokidMobileSDK.binder.connect(device: RKBLEDevice) Objc: [RokidMobileSDK.binder connect:device]; 断开设备 接口说明 用于断开已经连接的

  • 连接蓝牙设备 接口说明 接口需传入蓝牙名称(蓝牙address重启后会变) 参数说明 字段 类型 必须? 说明 name String 是 设备名称 举个大栗子 RokidMobileSDK.binder.connectBT(name, new IBTConnectCallBack() { @Override public void onConnectSucceed(BTDevic

  • 我想连接第三方蓝牙设备到我的Android Wear手表(三星Gear Live)。我试图找到留档如何做到这一点,但我没有任何运气。所有的搜索,我似乎都认为我想连接到手机上。 有谁知道一个很好的例子来演示如何将蓝牙心率监视器(或其他设备)连接到Android Wear,以便我在手机不存在时保存历史记录?这可能吗?它是否与从手机/平板电脑上执行相同的协议?

  • 我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件? 或者,我看到您可以通过BluetoothManager获取特定配置文件的所有连接设备。获取连接的设备。 我想我可以通过ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED监听连接/断开来查看哪些设备连接...似乎容易出错。 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。

  • 我试图创建一个简单的android应用程序来连接到我的ELM327设备,以获取一些汽车诊断数据。但我无法在我的android手机和我的ELM327设备上设置蓝牙连接。 我的代码很简单,如下所示: } 在mainactivity中,我将首先新建一个Bluetooth类,然后调用Bluetooth.connect(): mBluetooth=新蓝牙();MBluetooth.Connect(); 当我

  • 我想知道当我检查我的设备是否通过蓝牙连接到汽车系统时,是否有任何特定的回调或类似的东西。 我知道有些公司在连接到这些系统时会更改用户界面。比如说,一个没有蓝牙连接或戴着耳机的蓝牙连接的用户界面与一个连接到汽车时完全不同的用户界面(例如,在开车时很容易点击的大按钮) 我看了Android的BluetoothAdapter。我特别感兴趣的是,ACTION\u CONNECTION\u STATE\u