Ich implementiere eine einfache Werbung + Scan-Funktionalität mit BLE auf Android, und aus irgendeinem Grund bekomme ich viele Anrufe an die onScanResult
Rückruf über das gleiche Gerät.Scannen mit BluetoothLeScanner Anrufe onScanResult mehrere Male für das gleiche Gerät
Für Werbung:
//Advertise settings build
AdvertiseSettings.Builder builder = new AdvertiseSettings.Builder();
builder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY);
builder.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH);
builder.setConnectable(true);
AdvertiseSettings advSettings = builder.build();
//Advertise data build
AdvertiseData.Builder advDataBuilder = new AdvertiseData.Builder();
advDataBuilder.addServiceUuid(ParcelUuid.fromString(SFGattAttributes.SERVICE));
AdvertiseData advertiseData = advDataBuilder.build();
//Start Advertising
bluetoothLeAdvertiser.startAdvertising(advSettings, advertiseData, advertiseData, new BLEAdvertiserCallback());
Beim Scannen:
BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
bluetoothAdapter = bluetoothManager.getAdapter();
bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner();
bluetoothLeScanner.startScan(getScanFilters(), getScanSettings(), new BLEScanCallback());
Der einzige Unterschied scheint jedes Mal, wenn ein Unterschied in dem RSSI-Wert zu sein.
Gibt es eine Möglichkeit, diese Mehrfachanrufe zu vermeiden?
Zum Anzeigen Zweck, ich denke, Sie müssen überprüfen, ob das gleiche Gerät zuvor abgeholt wurde oder nicht. Ich bin auch auf dasselbe Problem gestoßen. –