java - Android 蓝牙设备 UUID

标签 java android bluetooth bluetooth-lowenergy

我正在尝试使用蓝牙 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/

相关文章:

java - 为什么我在 avd 应用程序菜单中看不到我的应用程序?

ios - 在哪里可以获得 SRVResolver 示例代码?

安卓权限 : App crashes needing bluetooth permission

Java Servlet 附加到 StringBuffer 无法识别的 HTML 代码

java - 运行Spring项目时出现空指针异常

java - 从选定的 JTable 中获取对象

c# - 列出并连接到蓝牙设备

java - 使用流 API 将 arraylist 添加到 arraylist

java - 用PHP压缩的字符串与用Java压缩的字符串不匹配

android - 如何在 firebase 中创建关系数据库?