アンドロイドでBLEを使用して簡単なアドバタイズ+スキャン機能を実装しています。何らかの理由で同じデバイスをコールするonScanResult
コールバック広告のためのBluetoothLeScannerを使用してスキャンすると、同じデバイスに対して複数回onScanResultが呼び出されます
:スキャンのための
//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());
:
BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
bluetoothAdapter = bluetoothManager.getAdapter();
bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner();
bluetoothLeScanner.startScan(getScanFilters(), getScanSettings(), new BLEScanCallback());
たびは、RSSI値の差であると考えられる唯一の違い。
この複数回の呼び出しを回避する手段はありますか?
目的を表示するために、以前と同じデバイスが選択されたかどうかを確認する必要があります。私も同じ問題に遭遇しました。 –