Как разбудить устройство, когда оно спит

Я уже много читал об этой теме на SO. Пытаюсь написать SIP Client, который естественно должен принимать входящие звонки, когда устройство спит. Первое, что я попробовал, это использовать эти флаги в моем методе onCreate:

Window window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

И мои устройства (разные модели телефонов и разные уровни API) просыпались только тогда, когда они были подключены к ПК с помощью USB-кабеля или находились в процессе зарядки.
Когда телефоны были отключены, флажков не было. Затем я обнаружил, что один парень уже задавал аналогичный вопрос на SO: Android - Wake Up и Разблокировать устройство Ему никто не ответил, и через некоторое время он нашел ответ на свой вопрос и разместил его. Ответ заключался в использовании класса PowerManager. Его ответ мне очень помог, но в документации PowerManager сказано: «Использование этого API значительно повлияет на срок службы батареи устройства». Я почувствовал это на себе. Мое приложение стало потреблять слишком много энергии батареи. Я сравнил свое приложение с WhatsApp и увидел гигантскую разницу в расходе энергии батареи.
Итак, есть ли другой способ разбудить устройство, когда оно спит, или
кто-нибудь знает, как этот процесс работает в WhatsApp, Skype и другие приложения, которые принимают входящие звонки и экономят заряд батареи?


person Zaur Tregulov    schedule 08.12.2017    source источник


Ответы (1)


Вы можете использовать-

android:showOnLockScreen="true"

в вашем файле манифеста и в вашей деятельности, которую вы хотите, чтобы она отображалась на блокировке экрана.

person Shivam Oberoi    schedule 08.12.2017
comment
Я думаю, что это то же самое, что и window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); Но я проверил и не увидел разницы. - person Zaur Tregulov; 08.12.2017