【发布时间】:2019-10-31 12:46:11
【问题描述】:
我们的设备使用 «Service Data - 128-bit UUID» AD 类型来信标数据:0x21。 对于 Android 扫描,我们通过 MAC 地址过滤 BLE 设备。 它工作正常。
因为我们需要更大的灵活性,所以我们想按 UUID 进行过滤。
我的代码仅适用于小米 MI9 (Android 9)。
它不适用于小米 MI A1 (Android 9) 和华为 P10 (Android 8)。 (但当我使用另一个应用程序(如 nRF Connect)启动 BLE 扫描仪时它可以工作)
有人知道如何解决这个问题,还是有些手机根本不支持某些类型的过滤?
static final UUID SERVICE_DATA_UUID = UUID.fromString("00010001-0000-1000-8000-112233445566");
byte[] setServiceData = new byte[] {
0x11
};
filters = new ArrayList<>();
ScanFilter.Builder builder = new ScanFilter.Builder()
.setServiceData(new ParcelUuid(SERVICE_DATA_UUID), setServiceData);
//.setDeviceAddress(Globals.MAC[1]);
filters.add(builder.build());
mBluetoothLeScanner.startScan(filters, settings, mLeScanCallback);
Logcat 工作时(MI9 或我并行激活 nRF 时)
D/Constraints: ScanRecord [mAdvertiseFlags=2, mServiceUuids=null, mServiceSolicitationUuids=null, mManufacturerSpecificData={}, mServiceData={00020001-0000-1000-8000-112233445566=[17]}, mTxPowerLevel=-2147483648, mDeviceName=null]
【问题讨论】:
标签: android bluetooth-lowenergy beacon