Я пытаюсь получить несколько возвратов с устройств BLE на Android.
Я получаю только один ответ.
Раньше это работало на старых устройствах.
Мои устройства работают под управлением 5.0.2.
Вот мой код:
@TargetApi(Build.VERSION_CODES.M)
private void api21Scan(UUID[] uuids) {
List<ScanFilter> scanFilters = new ArrayList<ScanFilter>();
if (uuids != null) {
for (int i = 0; i < uuids.length; ++i)
scanFilters.add(new ScanFilter.Builder().setServiceUuid(ParcelUuid.fromString(uuids[i].toString())).build());
}
ScanSettings settings = new ScanSettings.Builder().setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES).build();
ScanCallback scanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result)
{
mLeScanCallback.onLeScan(result.getDevice(), result.getRssi(), result.getScanRecord().getBytes());
}
@Override
public void onBatchScanResults(List<ScanResult> results)
{
for (ScanResult sr : results)
{
mLeScanCallback.onLeScan(sr.getDevice(), sr.getRssi(), sr.getScanRecord().getBytes());
}
}
};
if (uuids != null)
mBluetoothAdapter.getBluetoothLeScanner().startScan(scanFilters, settings, scanCallback);
else
mBluetoothAdapter.getBluetoothLeScanner().startScan(null, settings, scanCallback);
}
В LogCat, пока мое приложение сканирует, я вижу постоянный вывод строк из TAG: bt-btm, где текст говорит: новый адрес: XX: XX: XX: XX: XX: XX, где я снова и снова вижу свое устройство.
Почему эти сканы не попадают в мое приложение?
У меня также есть устаревший код, который использует устаревший адаптер bluetooth startLeScan и также возвращает только первое сканирование устройства.