News & Events
Dica Rápida: Impedir o escurecimento da tela no mobile
Recebemos recentemente alguns pedidos de ajuda, inclusive no Delphi Tour Rio Claro e Ribeirão Preto quanto a bloquear o esmaecimento do aparelho Android ou iOS quando o aparelho entra em modo Stand-by. Isso é comum e sempre ocorre quando o aparelho fica um tempo sem uso, entretanto alguns usuários informam que desejam impedir o esmaecimento da tela do device enquanto sua aplicação está no ar. Decidimos nesse post mostrar rapidamente como fazer isso.
Escurecimento de tela no iOS e Android
A dica é extremamente simples, basta fazer uma chamada a API correspondente ao evento no device que dispara essa característica. Para fazermos o teste, crie uma nova aplicação usando o menu File > New > Multi-Device Application Delphi. Escolha o template em branco e então salve sua aplicação onde desejar.
No evento OnCreate do formulário digite o algoritmo a seguir. Perceba que estamos fazendo uso de Diretivas de Compilação para detectar a plataforma ANDROID ou iOS. Caso seja Android, chamamos o método AcquireWakeLock presente no namespace Android.JNI.PowerManager. Isso desativa o esmaecimento de tela.
Do mesmo modo chamamos o método setIdleTimerDisabled passando True no parâmetro para desativar o escurecimento de tela no iOS.
{$IFDEF ANDROID} Android.JNI.PowerManager.AcquireWakeLock; {$ENDIF} {$IFDEF IOS} SharedApplication.setIdleTimerDisabled(True); {$ENDIF}
Essa metodologia é perigosa, pois desativa em todo o sistema operacional, podendo ocasionar um maior uso de bateria do celular ou tablet do usuário. Então é sempre bom reativar o método na saída do aplicativo, para evitar problemas.
Acesse o evento OnClose do formulário e digite o código a seguir. Novamente fazemos uso de diretivas de compilação para detectarmos a plataforma. Em Android apenas chamamos o método ReleaseWakeLock do mesmo namespace anterior. E no iOS passamos False no mesmo método chamado anteriormente.
{$IFDEF ANDROID} Android.JNI.PowerManager.ReleaseWakeLock; {$ENDIF} {$IFDEF IOS} SharedApplication.setIdleTimerDisabled(False); {$ENDIF}
Conclusão
Nesse artigo aprendemos como ativar e desativar o mecanismo de escurecimento padrão das telas do iOS e Android quando dentro de nossas aplicações. Isso é muito útil quando temos aplicativos que não podem sofrer algumas ações do sistema operacional. Mas é sempre bom lembrar de ter cuidado ao mexer em funcionalidades do sistema operacional para não modificar o comportamento padrão do usuário. Nesse caso específico, a desativação do escurecimento de tela pode ocasionar em maior carga de bateria.
#GoToDelphi
Para utilizar os métodos acima são necessárias as declarações de algumas units no Uses do form.
{Uses relacionadas ao NÃO TRAVA TELA} {$IFDEF ANDROID} ,Android.JNI.PowerManager {$ENDIF} {$IFDEF IOS} ,iOSAPI.UIKit {$ENDIF}