Проверка Android - это Bluetooth в режиме ожидания - PullRequest
0 голосов
/ 30 января 2019

Добрый день.Я хотел бы знать, если сканирование Bluetooth сейчас недоступно (заблокировано режимом ожидания?).

Теперь я проверяю это следующим способом:

fun isInDozeMode(context: Context) : Boolean {
    val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && powerManager.isDeviceIdleMode
}

Но этот метод возвращает true, даже еслия получаю событие Bluetooth (iBeacon) только сейчас.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Bluetooth не напрямую зависит от режима Doze:

Doze не влияет на возможность сканирования по Bluetooth или запуска таймеров на основе обработчика, но влияет на возможность использования системы Android AlarmManager., которые некоторые системы на основе маяка используют для планирования сканирования Bluetooth.Для приложений, основанных на библиотеке маяков Android, отключение сигналов тревоги не вызывает проблем при сканировании маяков, поскольку оно использует сигналы тревоги в качестве резервной копии только в случае сбоя таймеров на основе обработчика.Тесты на Nexus 9, работающем в третьей предварительной версии Android M (номер сборки MPA44l), показывают, что обнаружение маяка обычно продолжается в режиме Doze.

См. Мой блог здесь .Хотя этот пост был написан для Android 6.0, последующие изменения дозы, добавленные в 7.0, также не влияют на сканирование Bluetooth.Смотри здесь .

0 голосов
/ 30 января 2019

Определяет, когда приложение входит / выходит из режима ожидания из-за Doze

ОС отправит DEVICE_IDLE_MODE_CHANGED трансляцию, чтобы мы могли отслеживать, когда приложение вошло или вышло из режима ожидания.

Примечание: Эта трансляция будет отправлена, когда устройство время от времени запускает или заканчивает 10-минутное окно обслуживания в режиме ожидания.

См .: https://developer.android.com/reference/android/os/PowerManager.html#ACTION_DEVICE_IDLE_MODE_CHANGED)

...