Как разбудить устройство в BroadcastReceiver? - PullRequest
0 голосов
/ 29 сентября 2019

Состояние: Есть приложение, которое должно разбудить устройство (должен включиться экран устройства) и одновременно показывать уведомление.Я сделал это через BroadcastReceiver.

override fun onReceive(context: Context, intent: Intent)
{
    //Wake up the deivce
    wakeDevice(context)

    //Call notification display function
    makeBarNotification(context)
}

Все, что касается пробуждения устройства, я написал в отдельной функции.Код ниже:

private fun wakeDevice(context: Context)
{
    //Create Power manager
    val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager

    //Create WakeLock
    val myWakeLock = powerManager.newWakeLock(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, "MyApp:NotificationWakelockTag")

    //Specify the duration of work (In this case, 5 seconds)
    myWakeLock.acquire(5 * 1000L)

    //ReleaseWakeLock
    myWakeLock.release()
}

Я написал в манифесте этот код: <uses-permission android:name="android.permission.WAKE_LOCK" />

Проблема: Устройство не просыпается ивозникает ошибка: «java.lang.IllegalArgumentException: Must specify a valid wake lock level.» Ошибка, указывающая на строку, где я создаю WakeLock (val myWakeLock = ...)

Гипотеза: Возможно, проблема в WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON.Этот код рекомендуется использовать вместо PowerManager.SCREEN_BRIGHT_WAKE_LOCK здесь: source

Вопрос: Как затем разбудить устройство в BroadcastReceiver, если код PowerManager.SCREEN_BRIGHT_WAKE_LOCKустарела, а код WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON приводит к ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...