#android #wakelock #powermanager
#Android #блокировка работы #powermanager
Вопрос:
Я хочу установить время блокировки на «неограниченное» время или, по крайней мере, установить время на xx минут / часов. Если я попробую этот код :
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();
Это просто дает мне 30 секунд для блокировки. Но если я изменю свой код на wl.acquire(10*60*1000L /10 minutes/);
, как предложено в Android Studio, это не приведет к каким-либо изменениям времени блокировки, есть идеи об этом?
Ответ №1:
Убедитесь, что у вас есть тег разрешений манифеста
<uses-permission android:name="android.permission.WAKE_LOCK" />
обязательно вызывайте WakeLock.release() при выходе из действия
@Override
protected void onDestroy() {
wakeLock.release();
super.onDestroy();
}
Блокировка работы не означает, что ваш экран будет включен.
если вы хотите, чтобы экран оставался включенным :
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
this.setTurnScreenOn(true);
} else {
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
затем, когда вы захотите отключить его :
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
this.setTurnScreenOn(false);
} else {
final Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
Комментарии:
1. Я пробовал это
@Override protected void onDestroy() { wakeLock.release(); super.onDestroy(); }
, но ничего не произошло2. затем попробуйте это setTurnScreenOn(true) и window.addFlags(WindowManager. Параметры компоновки. FLAG_TURN_SCREEN_ON)