BLE扫描过滤不适用于三星Note 10



我刚刚发现,在 ScanFilter 中设置 serviceUid 进行扫描将阻止 scanResults 返回到回调。这适用于Pixel和其他设备,似乎只影响三星Note 10(Plus(。

这是行不通的。

internal class Scanner {
private val scanFilter = ScanFilter.Builder()
.setServiceUuid(ParcelUuid("someUuid"))
.setManufacturerData(someIntId, someByteArray, someMask)
.build()
private fun startScan(scanSettings: ScanSettings, scanCallback: ScanCallback) 
{
bleAdapter.bluetoothLeScanner.startScan(listOf(scanFilter), scanSettings, scanCallback)
}

这将起作用。

internal class Scanner {
private val scanFilter = ScanFilter.Builder()
//.setServiceUuid(ParcelUuid("someUuid"))
.setManufacturerData(someIntId, someByteArray, someMask)
.build()
private fun startScan(scanSettings: ScanSettings, scanCallback: ScanCallback) 
{
bleAdapter.bluetoothLeScanner.startScan(listOf(scanFilter), scanSettings, scanCallback)
}

我已经检查了你的代码。请参考我下面的代码,我不确定这一点,因为我没有测试,希望它有效!

val scanFilter = ScanFilter.Builder().setServiceUuid(ParcelUuid("someUuid")).build()
val scanFilter1 = ScanFilter.Builder().setManufacturerData(someIntId, someByteArray, someMask).build()
val arrayList = ArrayList<ScanFilter>()
arrayList.add(scanFilter)
arrayList.add(scanFilter1)
private fun startScan(scanSettings: ScanSettings, scanCallback: ScanCallback)
{
bleAdapter.bluetoothLeScanner.startScan(arrayList, scanSettings, scanCallback)
}

最新更新