我正在尝试使用蓝牙 4.0 (LE) 连接到蓝牙外围设备。我正在按照找到的 android 开发人员页面中的指南 here .
我已经在 iOS 上成功构建了这个应用程序,这是我第一次使用 Android。我正在运行 4.4 版。当 android 设备进行蓝牙搜索时,我希望能够检查找到的外围设备的 UUID(就像我在 iOS 上所做的那样)。我不确定如何执行此操作,但我相信它会在这种方法中发生:
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
Log.i(TAG, "New LE Device: " + device.getName() + " @ " + rssi);
//DETERMINE UUID OF PERIPHERAL
}
谁能告诉我这是怎么做到的?
谢谢!
最佳答案
您只能搜索指定 UUID 的设备:( Android BLE Doc )
public boolean startLeScan (UUID[] serviceUuids, BluetoothAdapter.LeScanCallback callback)
但是,有known issues在Android 4.4.4版本中使用此方法,将来可能会改变。
您可以通过 16 位 UUID 搜索成功使用此方法,但在 Nexus 设备上使用 128 位 UUID 会失败。 (为我在三星 S5 上工作)。
如果你想坚持使用 128 位 UUID 搜索,你需要一些 workaround (至少对于当前的 android 版本 4.4.4)
This post有一些关于 scanRecord 字节数组结构的很好的细节。
关于java - Android 蓝牙设备 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617483/