上下文:
我有两个设备: 1. LG G7 2.华为Pra LX1
我当前正在使用 实现“ com.polidea.rxandroidble2:rxandroidble:1.10.0”
当我致电
Disposable scanSubscription = rxBleClient.scanBleDevices(
new ScanSettings.Builder()
// .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) // change if needed
// .setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES) // change if needed
.build()
// add filters if needed
)
.subscribe(
scanResult -> {
// Process scan result here.
},
throwable -> {
// Handle an error here.
}
);
当我调用scanResults对象中的getScanRecord()。getServiceData()时,我会得到不同的行为:
对于设备#1,我得到一个带有值的数组(正确) 对于2号设备,我得到了一个空数组(错误)
问题是,我正在使用第三个应用程序(nRF Connect)来查看设备#2是否具有任何硬件限制,并且我可以看到广告中的ServiceData信息具有预期的1个结果。
我做错什么了吗?
答案 0 :(得分:1)
您没有提到测试设备的Android OS版本,但似乎它们一个是Android <8.0,另一个是Android> = 8.0。
您遇到的是对Android OS实现的简单更改。您可以比较如何在Android 7.1和Android 8.0上解析广告数据。在Android 8.0之前,未解析包含UUID超过16位的服务中的服务数据的广告数据。
Android OS广告解析的较新实现可能会在库中向后移植。我为此创建了an issue。