1

我是蓝牙新手,但已经在连接到 BLE 外围设备以将数据写入特征的 Android 客户端上工作了一个月左右。

我的 BLE 外围设备是一个 nrf52832(北欧)设备,我已经加载了 BLE_SM(安全管理器)示例项目,以便我可以使用绑定/配对进行安全通信。

我的 Android 代码与外围设备成功配对/绑定,但据我所知,外围设备现在停止了广告。我不确定这是正常的还是因为我收到了 REMOTE_USER_TERMINATED_CONNECTION 类型的 gap.onDisconnection 事件。

不管我是绑定的,所以你会认为我现在不需要扫描设备并且可以调用device.connectGatt(),但它不起作用,我的回调会收到 GATT STATE_DISCONNECTED 事件。我在另一篇文章中读到了从北欧(教程)粘贴以下内容的文章:

不可能连接到不做广告的外围设备,即使之前知道它的地址。这是因为外围设备只会在发送广告后打开接收器一段时间。该时间用于监听连接请求和扫描请求。

如果这是真的,似乎我将无法停止外围设备的持续广告,如果我试图降低外围设备的功耗,这将无济于事。

4

1 回答 1

2

引用是 100% 真实的。连接设置与设备是否绑定无关(假设您不使用定向广告)。如果外围设备既没有连接也没有广告,则无线电完全关闭,因此中央无法连接。

如果您想尽量减少功耗,请确保在不需要时不要做广告。根据你的用例,你能有什么触发广告的东西吗?例如按钮或传感器事件?

如果你需要一直做广告,你可以尝试使用更长的广告间隔来节省电池,但这会增加发现和连接建立时间。

于 2019-02-18T00:16:22.347 回答