如何在Android应用程序上设置ScanFilter

时间:2018-02-07 16:08:05

标签: android bluetooth

我正在构建一个应该连接BLE设备的应用。

所以我想在扫描可用的BLE设备时设置一个过滤器。

我知道我的BLE地址是什么

9C:20:7B:CB:A6:22

所以,我尝试使用以下代码修改ScanFilter:

ScanFilter filter = new ScanFilter.Builder().setServiceUuid(
                    ParcelUuid.fromString("9C:20:7B:CB:A6:22")).build();

但如果我尝试启动我的应用程序,则会出现此错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eresult.diabesitycare.devicesensor/com.eresult.diabesitycare.devicesensor.BLEActivity}: java.lang.IllegalArgumentException: Invalid UUID: 9C:20:7B:CB:A6:22

1 个答案:

答案 0 :(得分:1)

BLE地址9C:20:7B:CB:A6:22与UUID不同。根据{{​​3}}:

  

属性协议(ATT)-GATT建立在属性协议(ATT)之上。这也称为GATT / ATT。 ATT经过优化,可在BLE设备上运行。为此,它使用尽可能少的字节。每个属性由通用唯一标识符(UUID)唯一标识,UUID是用于唯一标识信息的字符串ID的标准化128位格式。 ATT传输的属性被格式化为特征和服务。

因此,您的uuid应为字符串ID 的标准化128位格式,例如0000110B-0000-1000-8000-00805F9B34FB

查看Bluetooth Low Energy以首先阅读您的设备UUID。