iOS Core Bluetooth - 无法通过扫描

时间:2017-12-13 09:47:14

标签: ios bluetooth core-bluetooth cbcentralmanager

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

enter image description here

但是,当我开始使用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”。现在,我尝试播放音乐,声音不会从耳机中传出。

enter image description here

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

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

enter image description here

所以我的问题是:

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

1 个答案:

答案 0 :(得分:1)

您无法从CBCentralManager发现“A1-25”,因为它是您提到的耳机。耳机使用耳机配置文件(HSP),称为“蓝牙经典”配置文件,而核心蓝牙仅适用于蓝牙低功耗(BLE,蓝牙4.0)通用属性配置文件(GATT)。如果您检查CoreBluetooth API,您将发现它与服务和特性有关。它没有声音相关配置文件的抽象。

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