Depuración de la cámara

En esta página, se describen las herramientas de depuración del servicio de cámara para ver los cambios en las solicitudes de captura y los valores de resultados que se envían desde y hacia la HAL de la cámara. El servicio de cámara incluye los comandos watch y dumpsys. Disponible en dispositivos con Android 13 o versiones posteriores, el comando watch permite controlar cuándo se supervisan y se accede a las etiquetas, obtener una vista previa en vivo de los volcados de supervisión de etiquetas de los clientes abiertos y ver los volcados almacenados en caché de los clientes cerrados. El comando dumpsys permite acceder a la información de depuración, pero no proporciona volcados de supervisión de etiquetas de clientes cerrados.

comando watch

En esta sección, se describe cómo usar el comando watch y se proporcionan ejemplos.

Cómo comenzar a supervisar etiquetas

Para comenzar a supervisar las etiquetas, usa lo siguiente:

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

Ejemplo:

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

Argumentos:

  • tags: Es una lista de etiquetas separadas por comas que se supervisarán. También acepta la abreviatura 3a, en la que 3a hace referencia al conjunto de todas las etiquetas android.control.* relacionadas con AF, AE y AWB (para obtener la lista completa de etiquetas, consulta TagMonitor.cpp).
  • clients: Es un argumento opcional. Lista separada por comas de nombres de paquetes cliente para los que se supervisan las etiquetas. Supervisa todos los clientes si no se pasa ningún argumento de cliente o si all está presente en la lista de clientes.

Este comando inicia la supervisión de etiquetas en los clientes abiertos y en cualquier cliente que se abra posteriormente (hasta que se llame a stop). Después de llamar a start, el servicio de la cámara almacena en caché los volcados de supervisión de etiquetas de los clientes cuando estos se cierran.

A menos que se llame a start, el servicio de la cámara no supervisa las etiquetas de ningún cliente ni almacena en caché los volcados de supervisión de etiquetas. Si se pasa all en el parámetro clients, el servicio de cámara supervisa las etiquetas y almacena en caché los volcados de supervisión de todos los clientes.

Cómo volcar información de supervisión de etiquetas

Para volcar la información de supervisión de etiquetas, usa lo siguiente:

adb shell cmd media.camera watch dump

Este comando vuelca la información de supervisión de etiquetas en el resultado estándar y, luego, se cierra. Imprime los volcados de supervisión de etiquetas almacenados en caché de los clientes que se cerraron desde start (o el último clear) y el volcado de supervisión de etiquetas más reciente de los clientes abiertos.

Resultado de muestra:

$ 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
...

Obtener una vista previa de la información de supervisión de etiquetas en tiempo real

Para obtener una vista previa de la información de supervisión de etiquetas en tiempo real, usa lo siguiente:

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

Ejemplo:

adb shell cmd media.camera watch live -n 250

Argumentos:

  • refresh_interval_ms: Es un argumento opcional. Es el intervalo en milisegundos en el que se actualiza la información. El valor predeterminado es 1,000 si no se pasa ningún valor.

Este comando imprime información de supervisión de etiquetas en tiempo real. Para salir, presiona Intro.

Resultado de muestra:

$ 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]

Cómo borrar volcados almacenados en caché

Para borrar todos los volcados de supervisión de etiquetas almacenados en caché, usa lo siguiente:

adb shell cmd media.camera watch clear

Este comando no detiene la supervisión de etiquetas.

Detener la supervisión de etiquetas

Para dejar de supervisar las etiquetas en todos los clientes y borrar todos los búferes que se mantienen para almacenar en caché los volcados de supervisión de etiquetas, usa lo siguiente:

adb shell cmd media.camera watch stop

Comando dumpsys

El comando dumpsys proporciona una gran cantidad de información de depuración del servicio de la cámara. El siguiente comando captura todo el volcado de depuración del servicio de la cámara:

adb shell dumpsys media.camera

El comando dumpsys también permite capturar volcados de supervisión de etiquetas de clientes abiertos. Sin embargo, dumpsys no proporciona volcados de supervisión de etiquetas desde clientes cerrados. Los siguientes son ejemplos del uso de dumpsys para la supervisión de etiquetas:

  • Captura volcados de supervisión de etiquetas de todos los clientes abiertos:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
  • Obtén una vista previa en vivo de la información de supervisión de etiquetas con el comando watch de Linux:

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