作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的应用程序应连接到蓝牙 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/
我是一名优秀的程序员,十分优秀!