安卓 4.4 : Bluetooth Low Energy; Connect without scanning for a BLE device

标签 android bluetooth

我的应用程序应连接到蓝牙 LE 设备。通常,您使用 mBluetoothAdapter.startLeScan(mLeScanCallback); 执行设备扫描。回调为您提供有关可用设备的信息。

如果你想连接到专用设备,你可以做类似的事情

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

然后

mBluetoothGatt = device.connectGatt(this, false, mGattCallback);

在我看来,连接到 BLE 设备所需要做的唯一一件事就是知道 BLE 地址,然后通过上述两个步骤连接到它。因此,如果我已经知道 BLE 地址(例如,它写在 BLE 设备的标签上),我就不需要执行 BLE 扫描。

但我遇到的是,如果我有一个 BLE 设备,但我以前从未通过 BLE 扫描找到它,则无法使用其 BLE 地址直接连接到它。我必须至少用我的安卓手机扫描一次才能找到它。之后,我再也不需要扫描了,只需使用其 BLE 地址即可连接到 BLE 设备。

它应该是这样的还是我监督了什么?

非常感谢, 斯特凡

最佳答案

设备地址只是蓝牙设备的唯一标识,不包含连接信息。扫描对于检索来自蓝牙设备的广播信号中的信息是必要的,以便可以建立连接。扫描完成后,信息将保存在设备的某个位置并绑定(bind)到设备地址。

我认为如果您尝试检索蓝牙地址的值,它将返回 null,直到它被扫描一次。

关于安卓 4.4 : Bluetooth Low Energy; Connect without scanning for a BLE device,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32886725/

相关文章:

java - Android Scanner 读到一个分隔符 (UseLimiter)

android - 如何使用固定大小的webview?

java - Viewpager 中的 fragment 仅在从旁边的 fragment 打开时刷新

android - 如何通过蓝牙从 PC 流式传输音频

android - 在 android 中的 ListView 中单击按钮时出错

android - 创建样式选择器

安卓蓝牙无法连接

android - 在android中合并两个byteArray

bluetooth - Android 蓝牙 LE 聊天示例

iOS CoreBluetooth 突然处于 CBManagerStateResetting 状态