Débogage de la caméra

Cette page décrit les outils de débogage du service de caméra permettant d'afficher les modifications apportées aux valeurs des requêtes et des résultats de capture envoyés à la HAL de la caméra et reçus de celle-ci. Le service de caméras inclut les commandes watch et dumpsys. Disponible sur les appareils équipés d'Android 13 ou version ultérieure, la commande watch permet de contrôler le moment où les tags sont surveillés et consultés, de prévisualiser en direct les dumps de surveillance des tags à partir des clients ouverts et d'afficher les dumps mis en cache à partir des clients fermés. La commande dumpsys permet d'accéder aux informations de débogage, mais ne fournit pas de dumps de surveillance des balises à partir de clients fermés.

commande watch

Cette section explique comment utiliser la commande watch et fournit des exemples.

Commencer à surveiller les tags

Pour commencer à surveiller les tags, utilisez :

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

Exemple :

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

Arguments :

  • tags : liste de tags à surveiller, séparés par une virgule. Accepte également le raccourci 3a, où 3a fait référence à l'ensemble des balises android.control.* liées à AF, AE et AWB (pour obtenir la liste complète des balises, consultez TagMonitor.cpp).
  • clients : argument facultatif. Liste de noms de packages client séparés par une virgule pour lesquels les tags sont surveillés. Surveille tous les clients si aucun argument client n'est transmis ou si all est présent dans la liste des clients.

Cette commande démarre la surveillance des tags dans les clients ouverts et dans tous les clients qui seront ouverts par la suite (jusqu'à l'appel de stop). Une fois start appelé, le service de caméras met en cache les dumps de surveillance des tags des clients lorsque ceux-ci se ferment.

Sauf si start est appelé, le service de caméras ne surveille pas les tags pour les clients et ne met pas en cache les dumps de surveillance des tags. Si all est transmis dans le paramètre clients, le service de caméras surveille les tags et met en cache les dumps de surveillance de tous les clients.

Afficher les informations de surveillance des balises

Pour afficher des informations sur la surveillance des tags, utilisez la commande suivante :

adb shell cmd media.camera watch dump

Cette commande transfère les informations de surveillance des tags vers la sortie standard, puis se ferme. Il affiche les dumps de surveillance des tags mis en cache des clients qui ont été fermés depuis start (ou la dernière clear) et le dernier dump de surveillance des tags des clients ouverts.

Exemple de résultat :

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

Prévisualiser les informations de surveillance des balises en temps réel

Pour prévisualiser les informations de surveillance des balises en temps réel, utilisez :

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

Exemple :

adb shell cmd media.camera watch live -n 250

Arguments :

  • refresh_interval_ms : argument facultatif. Intervalle en millisecondes pour actualiser les informations. Si aucune valeur n'est transmise, la valeur par défaut est 1 000.

Cette commande affiche des informations sur la surveillance des tags en temps réel. Pour quitter, appuyez sur Retour/Entrée.

Exemple de résultat :

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

Effacer les vidages mis en cache

Pour effacer tous les dumps de surveillance des tags mis en cache, utilisez la commande suivante :

adb shell cmd media.camera watch clear

Cette commande n'arrête pas la surveillance des balises.

Arrêter la surveillance des balises

Pour arrêter la surveillance des balises dans tous les clients et vider tous les tampons conservés pour la mise en cache des dumps de surveillance des balises, utilisez la commande suivante :

adb shell cmd media.camera watch stop

Commande dumpsys

La commande dumpsys fournit de nombreuses informations de débogage provenant du service de caméras. La commande suivante capture l'intégralité du vidage de débogage du service de caméras :

adb shell dumpsys media.camera

La commande dumpsys permet également de capturer des dumps de surveillance des tags à partir de clients ouverts. Toutefois, dumpsys ne fournit pas de dumps de surveillance des tags à partir de clients fermés. Voici des exemples d'utilisation de dumpsys pour la surveillance des balises :

  • Capturez les dumps de surveillance des tags de tous les clients ouverts :

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
  • Obtenez un aperçu en direct des informations de surveillance des tags à l'aide de la commande Linux watch :

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