Depuração da câmera

Esta página descreve as ferramentas de depuração no serviço da câmera para conferir as mudanças na solicitação de captura e nos valores de resultado que são enviados de e para a HAL da câmera. O serviço de câmera inclui os comandos watch e dumpsys. Disponível em dispositivos com Android 13 ou versões mais recentes, o comando watch permite controlar quando as tags são monitoradas e acessadas, visualização em tempo real de despejos de monitoramento de tags de clientes abertos e visualização de despejos armazenados em cache de clientes fechados. O comando dumpsys permite acessar informações de depuração, mas não fornece despejos de monitoramento de tags de clientes fechados.

Comando watch

Esta seção descreve como usar o comando watch e fornece exemplos.

Começar a monitorar tags

Para começar a monitorar tags, use:

adb shell cmd media.camera watch start -m <tags> [-c <clients>]

Exemplo:

adb shell cmd media.camera watch start \
-m android.control.effectMode,android.control.aeMode \
-c com.google.android.GoogleCamera,com.android.chrome

Argumentos:

  • tags: lista separada por vírgulas de tags a serem monitoradas. Também aceita a abreviação 3a, em que 3a se refere ao conjunto de todas as tags android.control.* relacionadas a AF, AE e AWB. Para conferir a lista completa de tags, consulte TagMonitor.cpp.
  • clients: argumento opcional. Lista separada por vírgulas de nomes de pacotes de cliente para os quais as tags são monitoradas. Observa todos os clientes se nenhum argumento de cliente for transmitido ou se all estiver presente na lista de clientes.

Esse comando inicia o monitoramento de tags em clientes abertos e em todos os clientes que são abertos posteriormente (até que stop seja chamado). Depois que start é chamado, o serviço da câmera armazena em cache os despejos de monitoramento de tags dos clientes quando eles são fechados.

A menos que start seja chamado, o serviço de câmera não monitora tags para nenhum cliente e não armazena em cache despejos de monitoramento de tags. Se all for transmitido no parâmetro clients, o serviço da câmera monitorará tags e armazenará em cache os despejos de monitoramento de todos os clientes.

Informações de monitoramento da tag de despejo

Para descartar informações de monitoramento de tags, use:

adb shell cmd media.camera watch dump

Esse comando descarta as informações de monitoramento da tag para a saída padrão e, em seguida, sai. Ele imprime os despejos de monitoramento de tags armazenados em cache dos clientes que fecharam desde start (ou clear) e o despejo mais recente do monitoramento de tags dos clientes abertos.

Exemplo de saída:

$ adb shell cmd media.camera watch dump
Client: com.android.chrome (active)
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.aeMode: [ON] output stream ids:  0
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  0
..
Client: com.google.android.GoogleCamera (cached)
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.aeMode: [ON] output stream ids:  0  3  1  2
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  1  3  0
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.awbMode: [AUTO] output stream ids:  0  3  1  2
...

Visualizar informações de monitoramento de tags em tempo real

Para conferir uma prévia das informações de monitoramento de tags em tempo real, use:

adb shell cmd media.camera watch live [-n refresh_interval_ms]

Exemplo:

adb shell cmd media.camera watch live -n 250

Argumentos:

  • refresh_interval_ms: argumento opcional. Intervalo em milissegundos para atualizar as informações. Se nenhum valor for passado, o padrão será 1.000.

Esse comando mostra informações de monitoramento de tags em tempo real. Para sair, pressione Return/Enter.

Exemplo de saída:

$ adb shell cmd media.camera watch live
Press return to exit...

0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.aeMode: [ON] output stream ids:  1  3  0  2
0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  0  3  1
...
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 3                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 2                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.afState: [PASSIVE_SCAN]

Limpar despejos em cache

Para limpar todos os despejos de monitoramento de tags armazenadas em cache, use:

adb shell cmd media.camera watch clear

Esse comando não interrompe o monitoramento de tags.

Interromper o monitoramento de tags

Para interromper o monitoramento de tags em todos os clientes e limpar todos os buffers mantidos para armazenar em cache os despejos de monitoramento de tags, use:

adb shell cmd media.camera watch stop

comando dumpsys

O comando dumpsys fornece várias informações de depuração do serviço de câmera. O comando a seguir captura todo o despejo de depuração do serviço de câmera:

adb shell dumpsys media.camera

O comando dumpsys também permite capturar despejos do monitoramento de tags de clientes abertos. No entanto, dumpsys não fornece despejos do monitoramento de tags de clientes fechados. Confira abaixo exemplos de como usar dumpsys para monitorar tags:

  • Capture despejos do monitoramento de tags de todos os clientes abertos:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
  • Confira uma prévia em tempo real das informações de monitoramento de tags usando o comando watch do Linux:

    watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'