A captura de tela em dispositivos Android é uma tarefa essencial para desenvolvedores que precisam documentar bugs intermitentes ou demonstrar funcionalidades, especialmente em dispositivos ou versões de sistema que não possuem um gravador nativo acessível. Abaixo, detalhamos dois métodos técnicos para realizar essa operação utilizando o computador.
1. Utilizando o binário nativo Screenrecord via ADB
O Android possui uma ferramenta nativa chamada screenrecord que pode ser invocada diretamente através do Android Debug Bridge (ADB). Este método é rápido e não requer a instalação de bibliotecas adicionais, apenas o SDK Platform-Tools.
# Iniciando a gravação com resolução específica
adb shell screenrecord --size 1280x720 "/sdcard/captura_debug.mp4"
# Transferindo o arquivo gerado para o computador (Windows/Linux/Mac)
adb pull /sdcard/captura_debug.mp4 C:/videos/registro_erro.mp4
Detalhes dos parâmetros:
--size: Define a resolução do vídeo. É recomendável utilizar a resolução nativa do dispositivo, que pode ser consultada com o comandoadb shell wm size.- O primeiro caminho (
/sdcard/...) referee-ce ao armazenamento interno do dispositivo Android. - O comando
adb pullé necessário para mover o arquivo da memória do celular para o disco rígido do PC.
2. Automação com Python e a biblioteca adbutils
Para fluxos de trabalho automatizados ou testes integrados, a biblioteca adbutils simplifica a interação com o dispositivo. Ela abstrai comandos complexos do shell em métodos Python legíveis.
Primeiro, realize a instalação do pacote:
pip install adbutils
Abaixo, um exemplo de script para capturar um intervalo específico de tempo e transferir o arquivo automaticamente:
import adbutils
import time
import os
def capturar_video_android(duracao_segundos=10):
# Inicializa a conexão com o dispositivo conectado
dispositivo = adbutils.adb.device()
# Gera um nome de arquivo baseado no timestamp atual
timestamp = time.strftime('%Y%m%d_%H%M%S')
nome_local = f"video_log_{timestamp}.mp4"
diretorio_destino = "C:\\Logs_Automacao\\"
caminho_final = os.path.join(diretorio_destino, nome_local)
# Inicia o processo de gravação no dispositivo
# O parâmetro remote_path define onde o arquivo temporário ficará no Android
gravador = dispositivo.screenrecord("/sdcard/temp_video.mp4")
print(f"Gravando por {duracao_segundos} segundos...")
time.sleep(duracao_segundos)
# O método stop_and_pull interrompe a gravação, baixa o arquivo para o PC
# e remove o arquivo temporário do dispositivo Android automaticamente.
gravador.stop_and_pull(caminho_final)
print(f"Arquivo salvo em: {caminho_final}")
if __name__ == '__main__':
capturar_video_android(15)
Diferenciais do adbutils
O método dispositivo.screenrecord() oferece flexibilidade através de argumentos adicionais:
remote_path: Se omitido, a biblioteca gera um nome aleatório no/sdcard/.no_autostart: Se definido comoTrue, a gravação só iniciará após a chamada explícita degravador.start().stop_and_pull(path): É a forma mais eficiente de gerenciar o ciclo de vida do arquivo, pois limpa o armazenamento do dispositivo móvel imediatamente após a transferência bem-sucedida.