Como ativar o modo imersivo em todo o sistema sem root

Um tutorial sobre como ativar o modo imersivo em todo o sistema (ou por aplicativo) sem exigir acesso root. Funciona em todos os dispositivos Android 4.4+.

À medida que as telas dos telefones ficam cada vez maiores, às vezes queremos ocultar o status e a barra de navegação para que possamos visualizar nosso conteúdo usando toda a bela e nítida tela HD.

A partir do Android 4.4, os aplicativos poderiam implementar Modo Imersivo para realmente trazer uma experiência de tela cheia para o usuário final. Infelizmente, o Google e os OEMs nunca expuseram a capacidade dos usuários controlarem manualmente quando desejam ativar o modo imersivo. Um aplicativo de terceiros chamado Modo imersivo em tela cheia GMD fornece uma solução alternativa há alguns anos, mas o maior problema com o uso deste aplicativo é que ele quebra o teclado virtual.

Os usuários flutuam em torno de um comando ADB que aciona um modo imersivo em todo o sistema há algum tempo, mas durante anos acreditou-se que usar este comando quando desconectado de um terminal ADB exigiria root acesso. No entanto, no final do ano passado, os usuários descobriram que certos comandos ADB poderiam de fato ser acionados no dispositivo 

sem acesso root, desde que o aplicativo tenha uma determinada permissão. Isso significa que você pode ativar o modo imersivo em todo o sistema Sob demanda. Você pode, por exemplo, criar um bloco Nougat para alternar o modo imersivo ou até mesmo definir o modo imersivo por aplicativo.


Alternar modo imersivo sem root

Como você pode ver no vídeo acima, criei um bloco Nougat que alterna o modo imersivo quando pressiono nele. Isso está no meu Huawei Mate 9 sem root, mas deve funcionar quase todos os dispositivos Android 4.4+. Você só precisa de dois aplicativos para fazer isso funcionar: Tasker e AutoFerramentas Beta. Você também precisará instalar Notificação automática se você quiser fazer um bloco Nougat com isso, mas não é obrigatório.

Depois de instalar os dois aplicativos, você precisará conceder o WRITE_SECURE_SETTINGS permissão para AutoTools para poder alternar o modo imersivo (entre outras configurações incríveis que abordaremos mais tarde). Isso ocorre porque o comando para o Modo Imersivo é definido no Configurações. Global classe, embora a sintaxe exata do comando esteja oculta no AOSP. Veremos primeiro como conceder a permissão necessária ao AutoTools e depois como usar o comando no Tasker.


No sistema de gerenciamento de permissões do Android, os aplicativos definem as permissões que desejam receber no arquivo de manifesto. Os usuários podem então conceder ou negar permissões na instalação (pré-Marshmallow) ou sob demanda (Marshmallow+). No entanto, existem certas permissões que os aplicativos não podem ser concedidos, mesmo que solicitem no Manifesto, como WRITE_SECURE_SETTINGS. Isso ocorre porque conceder a qualquer aplicativo uma permissão tão poderosa como essa daria ao aplicativo muito controle sobre o seu dispositivo.

Mas há uma solução alternativa que podemos usar para conceder a permissão WRITE_SECURE_SETTINGS a qualquer aplicativo que desejarmos. Usando ADB gerenciador de pacotes (pm) ferramenta, podemos conceder qualquer permissão a qualquer aplicativo que desejarmos (desde que o aplicativo solicite essa permissão no arquivo de manifesto).

A primeira coisa que você precisa fazer é instale o binário ADB no seu computador seguido pelo driver certo para o seu dispositivo. Em seguida, habilite a depuração USB nas opções do desenvolvedor (vá para Configurações -> Sobre o telefone e toque no número da versão 7 vezes, se ainda não o fez) e conecte seu telefone ao computador. Por fim, envie o seguinte comando depois de abrir um terminal:

adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS

Agora o AutoTools poderá alterar qualquer configuração global, segura ou de sistema no seu dispositivo. Existem várias maneiras de brincar com essas configurações e a lista de configurações disponíveis em cada categoria depende completamente do seu dispositivo e da construção do software, mas essa discussão é para outra tempo. De qualquer forma, continuaremos mostrando como usar o AutoTools para alternar o modo imersivo.


Usando Tasker para alternar o modo imersivo via Nougat Tile

Alternar o modo imersivo por meio de um bloco obviamente requer o Android Nougat, então, se você não tiver o Nougat, pule esta seção para saber como alterná-lo por aplicativo. Se ainda não o fez, baixe o AutoNotification na Google Play Store e conceda-lhe acesso à notificação. Este plug-in Tasker é o que usaremos para criar nosso próprio Notification Tile personalizado.

Aqui está a descrição do perfil para aqueles que estão familiarizados com Tasker. Se você não está familiarizado com o Tasker, continue lendo para obter instruções passo a passo.

Alternar modo imersivo do bloco Nougat

Profile: Toggle Immersive Mode (30)
Event: AutoNotification [ Configuration: Event Behaviour
Filter: immersivemode ]
Enter: Immersive Mode (33)
A1: AutoNotification Tiles [ Configuration: Tile: 1
Command: immersivemode
Label: Immersive mode
Icon: /storage/emulated/0/Tasker/immersive.png
State: 999 Timeout (Seconds):60 ]
A2: AutoToolsSecureSettings[ Configuration: Immersive Mode: Toggle Timeout (Seconds):60 ]

consulte Mais informação

Abra o Tasker e pressione o botão + botão no canto inferior direito. Criar um Evento contexto e selecione Plug-in -> AutoNotificação. Clique no ícone de lápis para abrir a página de configuração do AutoNotification. Debaixo de Filtro de comando digitar modo imersivo. Este é o comando exato que será enviado quando tocarmos em um bloco Nougat.

Agora crie uma nova Tarefa (com qualquer nome) anexada a este Perfil, e para a primeira Ação vá para Plugin -> AutoNotificação -> Blocos. Para o número do ladrilho, escolha o primeiro ladrilho. Para o Comando digitar modo imersivo exatamente como está escrito. O rótulo é o que será exibido sob o bloco, então nomeie-o como "Modo Imersivo". Para o Ícone, salve o ícone que anexei no início desta seção em seu armazenamento interno e use-o. Finalmente para o Estado selecione Alternar ativo/inativo.

Quando terminar, execute a tarefa uma vez (pressione o botão play no canto inferior esquerdo da tela de criação da tarefa) para que o bloco seja preenchido. Agora, depois de expandir a lista de blocos de notificação disponíveis, você deverá ver o novo botão de alternância do modo imersivo.


Usando Tasker para alternar o modo imersivo por aplicativo

Alternar o modo imersivo por aplicativo é bastante simples, tudo o que precisamos fazer é criar um contexto de aplicativo em Tasker que será acionado quando o aplicativo for iniciado ou fechado e, quando isso acontecer, o Modo Imersivo é alternado. Para que Tasker monitore aplicativos, você precisará habilitar seu Serviço de acessibilidade.

Aqui está a descrição do perfil para aqueles que estão familiarizados com Tasker. Se você não está familiarizado com o Tasker, continue lendo para obter instruções passo a passo.

Modo imersivo por aplicativo

Profile: Per-App Immersive Mode (192)
Application: Chrome or XDA Labs
Enter: Anon (199)
A1: AutoToolsSecureSettings[ Configuration: Immersive Mode: Toggle Timeout (Seconds):60 ]

Exit: Anon (204)
A1: AutoToolsSecureSettings[ Configuration: Immersive Mode: Toggle Timeout (Seconds):60 ]

consulte Mais informação

Primeiro, você desejará abrir o Tasker, pois criaremos um perfil para iniciar o Modo Imersivo quando determinados aplicativos estiverem abertos. Abra o Tasker e pressione o botão + botão no canto inferior direito para criar um novo perfil. Para o tipo de contexto, selecione Aplicativo e selecione todos os aplicativos nos quais deseja que o Modo Imersivo esteja ativo.

Quando terminar, pressione Voltar e Tasker solicitará que você crie uma tarefa. Não há necessidade de nomear a tarefa, basta pressionar a marca de seleção para iniciar a criação da tarefa. Depois de entrar na tela de criação de tarefas, há apenas uma ação que você precisa adicionar. aperte o + botão na parte inferior e vá para Plug-in -> AutoTools -> Configuração segura. Pressione o ícone de lápis para configurar o AutoTools. Aqui, vá para Mostrar em seguida, toque em Modo Imersivo e escolha "Alternar."

Há uma última coisa que precisamos fazer: desativar o Modo Imersivo ao sair do aplicativo. Volte para a tela principal do Tasker e pressão longa na tarefa que você acabou de criar para que você possa criar um Sair da tarefa. Ao criar uma tarefa de saída, basta adicionar a mesma ação adicionada na primeira tarefa - isso alternará o Modo Imersivo.


Modo imersivo de ajuste fino

Como mencionei anteriormente, os comandos exatos disponíveis para forçar o Modo Imersivo podem ser extraído do AOSP. Você pode configurar o Modo Imersivo para ocultar apenas a barra de notificação ou também ocultar a barra de navegação, emitindo um dos seguintes comandos:

settings put global policy_control immersive.status=*

settings put global policy_control immersive.navigation=*

É claro que o AutoTools não permite enviar comandos shell diretamente como este, mas em vez disso, você enviará o comando usando sua interface. Basta selecionar "Configuração personalizada" em Configurações seguras do AutoTools, definir o tipo de configuração como "global", definir o "Tipo de entrada" como "String" e para o Nome você deve inserir "policy_control immmersive.status=*" ou "policy_control imersivo.navigation=*". Você pode usar este comando no lugar daquele que usamos para o Nougat Tile ou controle por aplicativo se preferir que o Modo Imersivo oculte uma das barras de status ou de navegação.


Baixe e importe para Tasker

Como sempre, fornecemos o arquivo XML do script que você pode baixar e importar. Basta baixar o arquivo no link abaixo e salvá-lo em qualquer lugar do seu armazenamento interno. Abra o Tasker e desative o Modo Iniciante em Preferências. Em seguida, volte para a tela principal e mantenha pressionada a guia “Perfil” no topo. Você deverá ver um pop-up com uma das opções sendo “Importar”. Toque nele e navegue até onde você salvou o arquivo .prf.xml e selecione o arquivo para importar.

Se você optar por importar o Bloco de Notificação, salve o ícone do Modo Imersivo como immersive.png e salve-o em /sdcard/Tasker. Se você optar por importar o perfil por aplicativo, certifique-se de entrar e personalizar os aplicativos nos quais ele será acionado, pois meu exemplo está configurado para ser acionado apenas ao usar o Chrome ou o XDA Labs.

Baixe o botão de alternância do modo imersivo do bloco de notificação

Baixe o perfil de alternância do modo imersivo por aplicativo

Esperamos que esta dica seja útil. Deixe-nos saber nos comentários abaixo se isso funciona para você!