У меня есть служба, работающая для моего приложения, чтобы отправлять уведомления каждый час. Это работает нормально, так как я слышал звук и вибрацию каждый час из-за моего уведомления, но я также хочу, чтобы мое уведомление также освещало мой экран. Но я не могу включить экран, когда появляется уведомление.
Загорается экран при получении уведомления Android
Ответы (2)
Есть мое решение:
createNotification(); //your implementation
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = Build.VERSION.SDK_INT >= 20 ? pm.isInteractive() : pm.isScreenOn(); // check if screen is on
if (!isScreenOn) {
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "myApp:notificationLock");
wl.acquire(3000); //set your time in milliseconds
}
Дополнительные сведения см. в PowerManager.
person
Jan Moravec
schedule
11.04.2019
Нужно ли снимать wakelock как
wl.release()
?
- person xaif; 02.05.2020
person
schedule
FULL_WAKE_LOCK устарел. Что использовать вместо этого?
- person orium; 21.10.2014
У меня тот же вопрос, что и у Ориума.
- person user590849; 30.04.2015
вам нужно разрешение WakeLock в манифесте: ‹uses-permission android:name=android.permission.WAKE_LOCK /›
- person javad; 01.07.2015
isScreenOn() устарела на уровне API 20. Вместо этого используйте isInteractive().
- person FCA; 14.05.2016
Спасибо. Вы решили мою проблему с блокировкой пробуждения. Теперь мое приложение правильно просыпается для уведомлений.
- person BK19; 29.01.2018
FULL_WAKE_LOCK устарел. Вместо этого используйте PARTIAL_WAKE_LOCK.
- person Kai Wang; 20.04.2018
@KaiWang Должны ли мы использовать PARTIAL_WAKE_LOCK как для экземпляров wl, так и для экземпляров wl_cpu?
- person SametSahin; 30.09.2019
@SametSahin Я не уверен в этом. Извини чувак :)
- person Kai Wang; 02.10.2019
PARTIAL_WAKE_LOCK
не будет разбудить устройство самостоятельно, и состояние документов Android его нельзя использовать с ACQUIRE_CAUSES_WAKEUP
- person The Fluffy Robot; 01.01.2020