【问题标题】:iOS Core Bluetooth - Can't discover the real device from scaniOS Core 蓝牙 - 无法通过扫描发现真实设备
【发布时间】:2018-05-27 03:48:43
【问题描述】:

我正在尝试发现蓝牙设备并通过使用CBCentralManager 连接到它。该设备是耳机。可以通过手机蓝牙扫描发现。设备名称为“A1-25”。当我直接从手机蓝牙设置连接“A1-25”时,我可以用它播放歌曲,它工作正常。

但是,当我开始使用 CBCentralManager 扫描外围设备时。我看不到名为“A1-25”的外围设备。但相反,我看到了一个名为“EQ_Test_llyan”的外围设备。但是之前,当我从蓝牙设置中扫描附近的设备时,“EQ_Test_llyan”没有出来。

2017-12-13 16:35:07.233021+0800 Test[1405:500801] started scanning
2017-12-13 16:35:17.469375+0800 Test[1405:500801] discovered peripheral with name EQ_Test_llyan advertisementData:{
    kCBAdvDataIsConnectable = 1;
    kCBAdvDataLocalName = "EQ_Test_llyan";
    kCBAdvDataManufacturerData = <b0024551 5f544553 54>;
}
2017-12-13 16:35:17.470672+0800 Test[1405:500801] connecting with device!!!!!!!
2017-12-13 16:35:17.654884+0800 Test[1405:500801] connected to peripheral name:EQ_Test_llyan id:7326E741-BF68-D9E8-D7A6-5F27227685A7
2017-12-13 16:35:17.656526+0800 Test[1405:500801] discovering services for peripheral name:EQ_Test_llyan
2017-12-13 16:35:18.193311+0800 Test[1405:500801] discovered services:(
) for peripheral name:EQ_Test_llyan

外围“EQ_Test_llyan”没有服务(见上面的日志),所以我无法与之通信。现在,当我回到手机设置中的蓝牙设备时,我现在连接到“EQ_Test_llyan”,但没有连接到“A1-25”。现在,我尝试播放音乐,耳机没有声音。

当我关闭耳机时,我将与“EQ_Test_llyan”断开连接,“A1-25”将消失。因此我得出结论,“EQ_Test_llyan”和“A1-25”来自同一个设备。

请注意,我可以同时连接到两者。我将以编程方式连接到“EQ_Test_llyan”,然后它将出现在设置中。然后我从手机设置中手动连接到“A1-25”。它将如下图所示。当我播放音乐时,我仍然可以听到耳机发出的声音。所以,只要我连接到“A1-25”,它就可以正常工作,而不是单独连接到“EQ_Test_llyan”。

所以我的问题是:

  1. CBPeripheral 指的是实际设备吗?因为如果是, 为什么我不能扫描“A1-25”,但我可以扫描“EQ_Test_llyan”?
  2. 请注意,当手机连接到“A1-25”时,它有一个“i” 除此之外,这意味着可以终止连接。但 当手机连接到“EQ_Test_llyan”时,没有“i” 在它旁边。因此,除非您关闭电源,否则无法断开连接 设备。那么,两者有什么区别呢?是“AI-25”吗 真实设备,而“EQ_Test_llyan”只是一个连接?我不 了解。

【问题讨论】:

    标签: ios bluetooth core-bluetooth cbcentralmanager


    【解决方案1】:

    您无法从CBCentralManager 中发现“A1-25”,因为它是您提到的耳机。 Headset 使用 Headset Profile (HSP),也就是所谓的“Bluetooth Classic”profile,而 Core Bluetooth 仅适用于 Bluetooth Low Energy (BLE, Bluetooth 4.0) General Attribute Profile (GATT)。如果您检查 CoreBluetooth API,您会发现它完全是关于服务和特性的。它没有对声音相关配置文件的抽象。

    另一方面,GATT 是非常通用和抽象的配置文件,可以被任何类型的设备使用,每次都用于一些非常具体的数据——速度、温度、心率、某些设备配置,以及几乎任何其他数据价值观。因此,您只能从知道该确切设备的应用程序与 GATT 设备配对。您与手机设置屏幕中的此类通用服务无关。

    【讨论】:

    • 您好,感谢您的回答。那么,如果是这种情况,我是否仍然可以从蓝牙耳机的麦克风中获取声音并从应用程序中播放?我的意思是,您说 BLE GATT 配置文件中没有与声音相关的配置文件,对吗?那么,这是否意味着我无法使用 BLE 传递实时声音数据?
    • 您无法通过 BLE 连接传递实时声音,它具有不合适的 API 并且运行速度太低而无法传输声音。您可以使用耳机播放和录制应用程序中的声音。在电话设置屏幕上配对耳机 (A1-25)。之后,您需要在应用中配置音频会话以使用耳机,而不是内置麦克风和扬声器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2020-06-03
    • 1970-01-01
    相关资源
    最近更新 更多