我正在构建一个应该连接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
答案 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。