Muitos entusiastas do Android utilizam recuperações personalizadas, como TWRP e ClockworkMod, para realizar tarefas como atualização de ROMs, instalação de mods, criação e restauração de backups completos dos dispositivos e até mesmo para gerenciar arquivos através do explorador AROMA. Embora a maioria dos usuários não precise fazer capturas de tela no modo de recuperação, para blogueiros, desenvolvedores de recuperações customizadas, de aplicações baseadas em AROMA e designers de temas de recuperação, esta funcionalidade é frequentemente necessária para ilustrar o seu trabalho. Este artigo tem como objetivo apresentar um guia detalhado sobre como tirar screenshots do seu dispositivo Android enquanto este está no modo de recuperação, independentemente da recuperação personalizada em uso.
Ao contrário do procedimento padrão no Android, a combinação de botões “Diminuir Volume + Ligar/Desligar” não funciona para capturar a tela no modo de recuperação. Anteriormente, a ferramenta DDMS do SDK Android era eficaz para este propósito, mas deixou de o ser após as últimas atualizações.
A única solução prática conhecida até agora envolvia a extração manual dos dados brutos do framebuffer e o seu processamento através da ferramenta de linha de comando ffmpeg para gerar a imagem desejada. No entanto, esta solução tem uma limitação significativa: não é um comando único e universal aplicável a todos os dispositivos Android. Isto ocorre porque diferentes dispositivos e recuperações utilizam formatos de pixel distintos para o seu framebuffer, o que obriga a ajustes do comando para considerar a resolução nativa do dispositivo e um fator de deslocamento na imagem bruta. A experiência de tentar descobrir estes parâmetros para vários dispositivos pode ser bastante demorada e frustrante.
Felizmente, existe uma pequena ferramenta, desenvolvida pelo membro makers_mark do XDA, que simplifica este processo ao lidar com todas estas complexidades em segundo plano.
Conheça o Recovery Screenshot
O Recovery Screenshot é um script (atualmente disponível apenas para Windows) que utiliza ADB e ffmpeg para extrair o framebuffer bruto do seu dispositivo e processá-lo adequadamente para gerar a captura de tela em formato PNG.
Antes de começar a capturar screenshots no modo de recuperação, é preciso configurar a ferramenta para o seu dispositivo. Veja como:
Configuração Inicial
Primeiramente, certifique-se de que o seu dispositivo esteja no modo de recuperação, conectado ao computador através de um cabo USB e que os drivers necessários estejam instalados.
Descarregue o Recovery Screenshot e extraia o conteúdo do ficheiro ZIP para uma localização conveniente no seu computador. Depois, execute a ferramenta através do ficheiro RUNrs.bat. O script irá apresentar as seguintes opções:
Selecione a primeira opção, “Configure settings”, pressionando 1. Em seguida, será solicitado a inserir as dimensões do ecrã do seu dispositivo em pixels. É importante introduzir a dimensão mais curta como largura e a mais longa como altura.
O Recovery Screenshot irá agora extrair o framebuffer do seu dispositivo e processá-lo em vários formatos de pixel com ffmpeg, colocando os ficheiros PNG resultantes numa pasta ‘Pixel_formats’ dentro da pasta onde extraiu a ferramenta.
Aceda à pasta Pixel_formats e examine todas as imagens. A maioria delas parecerá distorcida, o que é normal. Elas foram processadas utilizando um formato de pixel diferente do seu dispositivo. O objetivo é encontrar a imagem que aparece corretamente. Ao identificá-la, anote o seu nome (que corresponde ao nome do seu formato de pixel) e pressione qualquer tecla para prosseguir.
Se encontrou a imagem correta na pasta, pressione 1 para finalizar as configurações. Se não tiver encontrado, pressione 2 e a ferramenta tentará outros formatos menos comuns. Neste caso, verifique novamente as novas imagens na pasta e anote o nome do ficheiro correto.
Após identificar o formato de pixel correto, introduza-o no próximo ecrã, tal como aparece no nome do ficheiro correto (sem a extensão .PNG). Por exemplo, no teste com o Nexus 5, a imagem correta era rgb0.png, logo o formato de pixel correto era rgb0.
Após inserir o formato de pixel correto e clicar em Enter, a configuração está completa. As configurações são guardadas e não precisará configurar o script novamente para o mesmo dispositivo.
Capturando Screenshots em Recuperação
Após a configuração inicial, as seguintes opções estarão disponíveis sempre que iniciar a ferramenta.
A presença de três opções para capturar o framebuffer pode ser confusa. Explicar o sistema de duplo framebuffer do Android está fora do âmbito deste guia. A imagem que procura pode estar em qualquer um dos framebuffers, por isso, é recomendado selecionar a terceira opção, que captura ambos os framebuffers. Ao pressionar 3, o Recovery Screenshot irá extrair e processar os dois framebuffers.
Os ficheiros de imagem resultantes serão guardados numa subpasta dentro da pasta principal do script, com nomes baseados na data atual. As imagens terão nomes baseados na hora atual e no framebuffer (superior ou inferior).
É importante notar que, ao tentar capturar screenshots de um dispositivo diferente, poderá ser necessário configurar a ferramenta novamente. Para o fazer, pressione 4 no ecrã principal para redefinir as configurações. A quinta opção, o modo manual, permite especificar as configurações manualmente e processar qualquer ficheiro de imagem bruta como fonte, sem a necessidade de um dispositivo no modo de recuperação.
Exemplos de Resultados
Abaixo estão exemplos de imagens capturadas no modo de recuperação utilizando este script. A primeira imagem é o ecrã inicial do TWRP, a segunda mostra uma barra de progresso, e a terceira é o AROMA File Manager.
Embora não seja uma funcionalidade essencial para todos os utilizadores, o Recovery Screenshot pode ser extremamente útil para aqueles que, como eu, precisam frequentemente capturar screenshots de recuperação e anteriormente tinham de lidar com a complexidade de extrair manualmente os framebuffers e processar imagens brutas através de comandos ffmpeg.