Я пытаюсь запустить фоновый сервис, который постоянно работает и сканирует рекламные объявления BLE.
Я запустил службу. Работает как положено и работает все время. При перезапуске фоновой службы (после закрытия действия) я запускаю сканирование BLE:
mBluetoothLeScanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
ScanFilter.Builder builder = new ScanFilter.Builder();
builder.setManufacturerData(0x0590,new byte[]{});
ScanFilter filter = builder.build();
filters = new ArrayList<ScanFilter>();
filters.add( filter );
ScanSettings settings = new ScanSettings.Builder()
.setScanMode( ScanSettings.SCAN_MODE_LOW_LATENCY )
.build();
// mBluetoothLeScanner.stopScan(mScanCallback);
mBluetoothLeScanner.startScan(filters, settings, mScanCallback);
Работает 30-50 секунд. По истечении этого времени обратный вызов сканирования не отправляет рекламные данные.
Ты хоть представляешь, почему он остановлен и что я могу сделать? IBeacon или Eddystone - лучшее решение? Мое намерение состоит в том, чтобы постоянно слушать сообщение от устройства BLE в фоновом режиме, пока приложение закрыто. Я использую Android 8.1 с Xiaomi Redmi 5.