Детектирование маяка в Oreo после пробуждения из режима Doze
Я пытаюсь разбудить службу переднего плана с http://www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8
Ожидаемое поведение
Посмотрите первый маяк и отправьте PendingIntent в BroadcastReceiver, который запускает мой приоритетный сервис с BeaconConsumer.
Фактическое поведение
После режима дозирования ничего не вызывается.
Шаги, чтобы воспроизвести это поведение
Используя тот же код, который находится здесь: http://www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8, чем положить телефон в режим ожидания и обратно Терминал:
adb shell dumpsys deviceidle force-idle
adb shell dumpsys deviceidle unforce
код вещательного приемника:
class BluetoothScanReceiver: BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val bleCallbackType = intent.getIntExtra(BluetoothLeScanner.EXTRA_CALLBACK_TYPE, -1)
if (bleCallbackType != -1) {
val scanResults = intent.getParcelableArrayListExtra<Parcelable>(
BluetoothLeScanner.EXTRA_LIST_SCAN_RESULT)
println("xxxxx BluetoothScanReceiver onreceive ")
context.startBeaconScanning()
}
}
}
Инициализация Ble сканера
val settings = ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_POWER).build()
val bluetoothManager = applicationContext.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
val bluetoothAdapter = bluetoothManager.adapter
val i = Intent(applicationContext, BluetoothScanReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(applicationContext, 0, i, FLAG_UPDATE_CURRENT)
val scanner = bluetoothAdapter.bluetoothLeScanner
scanner.startScan(null, settings, pendingIntent)
Модель мобильного устройства и версия ОС
Nokia 5 - Android 8.1
Что мне следует сделать, чтобы запустить службу переднего плана, когда я вижу первый маяк, даже если мое приложение убито / в режиме ожидания / после режима ожидания?
Спасибо