android - 我可以连接到非广告的蓝牙绑定(bind)/配对外围设备吗?

标签 android bluetooth bluetooth-lowenergy android-bluetooth nrf52

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

我的 BLE 外设是 nrf52832 (Nordic) 设备,我已加载 BLE_SM ( security manager ) 示例项目,以便我可以使用绑定(bind)/配对进行安全通信。

我的 Android 代码已成功与外围设备配对/绑定(bind),但从我所看到的情况来看,外围设备现在停止广告。我不确定这是否正常,或者是因为我收到了 REMOTE_USER_TERMINATED_CONNECTION 类型的gap.onDisconnection 事件。

无论如何,我已经绑定(bind)了,所以你会认为我现在不再需要扫描设备,只需调用 device.connectGatt(),但它不起作用,我的回调得到一个 GATT STATE_DISCONNECTED 事件。 我在另一篇文章中读到,其中粘贴了来自 Nordic 的以下内容( Tutorial ):

It is not possible to connect to a peripheral which is not advertising, even though one knows its address from before. This is because the peripheral will only turn on the receiver for a set amount of time after transmitting an advertisement. This time is used to listen for connection requests and scan requests.

如果这是真的,我似乎无法阻止外设不断地广告,如果我试图降低外设的功耗,这没有帮助。

最佳答案

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

如果您想最大限度地减少功耗,请确保在不需要时不转换广告。根据您的用例,您可以提供任何触发广告的内容吗?例如按钮或传感器事件?

如果您需要一直进行广告,可以尝试使用较长的广告间隔来节省电量,但​​这会增加发现和连接设置时间。

关于android - 我可以连接到非广告的蓝牙绑定(bind)/配对外围设备吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54738661/

相关文章:

ios - 在 iOS 7.1 中检测附近带有 "iBeacon"的设备存在哪些技术限制?

android - 如何打开 Google Play 商店的开发者页面(市场 ://)

ios - 第一次发送后发送 'CBPeripheralManager' 的多个 NSData 实例失败

java - 我已经从 API 的 JSON 格式中获取了文本,现在我想从 Android 应用程序中的相同 API 向其中添加图像

java - Android 应用程序在退出时未正确释放蓝牙

ios - 是否可以使用 HM-10 或 HM-11 BLE 模块与 Arduino 与 iOS 设备 (ANCS) 进行通信?

java - 安卓 : Programmatically pair a bluetooth device; Incorrect pin or passkey on some devices?

bluetoothctl 找不到我的设备,而 hcitool 如果不受信任则可以/找不到设备

android - adb "geo fix"命令到Android真机?

java - Android:使用 drawable 与 drawable-nodpi 文件夹时内存消耗存在巨大差异