Gravação de Tela em Dispositivos Android via Linha de Comando e Python

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 comando adb 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 como True, a gravação só iniciará após a chamada explícita de gravador.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.

Tags: android ADB Python ScreenRecord mobile-development

Publicado em 8-9 07:18