É 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, você poderá usar este código para definir e adquirir um wake lock:
Kotlin
val wakeLock: PowerManager.WakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag").apply { acquire() } }
Java
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag"); wakeLock.acquire();
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 um erro ocorrer, será mais fácil localizar o bloqueio de despertar no código-fonte. Para mais informações, consulte Nomear o wake lock corretamente.