É possível definir um bloqueio de despertar para manter o dispositivo ativo temporariamente.
Dependências
O app precisa ter a permissão WAKE_LOCK
para definir um bloqueio de despertar.
Adicione a permissão ao manifesto do app:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Criar e adquirir um wake lock
Para adquirir um wake lock, faça o seguinte:
Chame
PowerManager.newWakeLock()
para criar um bloqueio de despertar. Isso cria e configura um objetoPowerManager.WakeLock
, mas não mantém o dispositivo ativo.Quando quiser manter o dispositivo ativo, chame o método
acquire()
do objeto wake lock.
Por exemplo, se o app incluir um broadcast receiver que usa um serviço para fazer algum trabalho, use este código para definir e adquirir um wake lock:
Kotlin
val wakeLock: PowerManager.WakeLock = (getSystemService(POWER_SERVICE) as PowerManager).run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag").apply { acquire(WAKELOCK_TIMEOUT) } }
Java
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag"); wakeLock.acquire(WAKELOCK_TIMEOUT);
Pontos principais sobre esse código
Quando o código cria o objeto de bloqueio de despertar, ele usa o nome da classe como parte da tag de bloqueio de despertar. Recomendamos incluir o nome do pacote, da classe ou do método como parte da tag de wake lock. Assim, se ocorrer um erro, será mais fácil localizar o bloqueio de despertar no código-fonte. Para mais informações, consulte Nomeie o wake lock corretamente.
WakeLock.acquire(long)
recebe um valor de tempo limite em milissegundos. O sistema libera o wake lock após esse período, se você não o tiver liberado antes.