Depuração da câmera

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

comando de observação

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

Comece 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 , onde 3a se refere ao conjunto de todas as tags android.control.* relacionadas a AF, AE e AWB (para a lista completa de tags, consulte TagMonitor.cpp ).
  • clients : argumento opcional. Lista separada por vírgulas de nomes de pacotes de clientes para os quais as tags são monitoradas. Observa todos os clientes se nenhum argumento de cliente for passado ou se all estiverem presentes na lista de clientes.

Este comando inicia o monitoramento de tags em clientes abertos e em quaisquer clientes que sejam abertos posteriormente (até que stop seja chamado). Depois que start é chamado, o serviço de câmera armazena em cache dumps de monitoramento de tags dos clientes quando os clientes fecham.

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 dumps de monitoramento de tags. Se all for passado no parâmetro clients , o serviço de câmera monitora tags e armazena em cache os dumps de monitoramento de todos os clientes.

Informações de monitoramento de tag de despejo

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

adb shell cmd media.camera watch dump

Este comando despeja as informações de monitoramento de tag na saída padrão e depois sai. Ele imprime os dumps de monitoramento de tags em cache de clientes que foram fechados desde start (ou pela última clear ) e o dump de monitoramento de tags mais recente de 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
...

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

Para visualizar 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. O padrão é 1000 se nenhum valor for passado.

Este comando imprime 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 dumps em cache

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

adb shell cmd media.camera watch clear

Este comando não interrompe o monitoramento de tags.

Pare de monitorar tags

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

adb shell cmd media.camera watch stop

comando dumpsys

O comando dumpsys fornece uma série de informações de depuração do serviço de câmera. O comando a seguir captura todo o dump de depuração do serviço de câmera:

adb shell dumpsys media.camera

O comando dumpsys também permite capturar dumps de monitoramento de tags de clientes abertos. No entanto, dumpsys não fornece dumps de monitoramento de tags de clientes fechados. A seguir estão exemplos de uso dumpsys para monitoramento de tags:

  • Capture dumps de monitoramento de tags de todos os clientes abertos:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
    
  • Obtenha uma visualização ao vivo 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'