Kamera-Debugging

Auf dieser Seite werden die Debugging-Tools im Kameradienst zum Anzeigen von Änderungen in den Erfassungsanforderungen und Ergebniswerten beschrieben, die an und von der Kamera-HAL gesendet werden. Der Kameradienst umfasst die Befehle watch und dumpsys . Der auf Geräten mit Android 13 oder höher verfügbare Befehl watch ermöglicht die Kontrolle darüber, wann Tags überwacht und auf sie zugegriffen werden, eine Live-Vorschau von Tag-Überwachungs-Dumps von offenen Clients und die Anzeige zwischengespeicherter Dumps von geschlossenen Clients. Der Befehl dumpsys ermöglicht den Zugriff auf Debugging-Informationen, stellt jedoch keine Tag-Überwachungs-Dumps von geschlossenen Clients bereit.

Watch-Befehl

In diesem Abschnitt wird die Verwendung des watch Befehls beschrieben und Beispiele bereitgestellt.

Beginnen Sie mit der Überwachung von Tags

Um mit der Überwachung von Tags zu beginnen, verwenden Sie:

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

Beispiel:

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

Argumente:

  • tags : Durch Kommas getrennte Liste der zu überwachenden Tags. Akzeptiert auch die Abkürzung 3a , wobei 3a sich auf die Menge aller android.control.* Tags bezieht, die sich auf AF, AE und AWB beziehen (die vollständige Liste der Tags finden Sie unter TagMonitor.cpp ).
  • clients : Optionales Argument. Durch Kommas getrennte Liste der Client-Paketnamen, für die Tags überwacht werden. Überwacht alle Clients, wenn kein Client-Argument übergeben wird oder all in der Liste der Clients vorhanden sind.

Dieser Befehl startet die Tag-Überwachung in geöffneten Clients und in allen anschließend geöffneten Clients (bis stop aufgerufen wird). Nach dem Aufruf von start speichert der Kameradienst Tag-Überwachungs-Dumps von Clients im Cache, wenn die Clients geschlossen werden.

Sofern start nicht aufgerufen wird, überwacht der Kameradienst keine Tags für Clients und speichert keine Tag-Überwachungs-Dumps zwischen. Wenn all im Parameter clients übergeben wird, überwacht der Kameradienst Tags und speichert Überwachungsdumps von allen Clients im Cache.

Informationen zur Dump-Tag-Überwachung

Um Tag-Überwachungsinformationen zu sichern, verwenden Sie Folgendes:

adb shell cmd media.camera watch dump

Dieser Befehl gibt die Tag-Überwachungsinformationen an die Standardausgabe aus und wird dann beendet. Es druckt die zwischengespeicherten Tag-Überwachungs-Dumps von Clients, die seit start (oder der letzten clear ) geschlossen wurden, und den neuesten Tag-Überwachungs-Dump von geöffneten Clients.

Beispielausgabe:

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

Vorschau der Tag-Überwachungsinformationen in Echtzeit

Um eine Vorschau der Tag-Überwachungsinformationen in Echtzeit anzuzeigen, verwenden Sie:

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

Beispiel:

adb shell cmd media.camera watch live -n 250

Argumente:

  • refresh_interval_ms : Optionales Argument. Intervall in Millisekunden, in dem die Informationen aktualisiert werden. Der Standardwert ist 1000, wenn kein Wert übergeben wird.

Dieser Befehl druckt Tag-Überwachungsinformationen in Echtzeit. Zum Beenden drücken Sie die Eingabetaste / Eingabetaste .

Beispielausgabe:

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

Zwischengespeicherte Dumps löschen

Um alle zwischengespeicherten Tag-Überwachungs-Dumps zu löschen, verwenden Sie:

adb shell cmd media.camera watch clear

Dieser Befehl stoppt die Tag-Überwachung nicht.

Stoppen Sie die Überwachung von Tags

Um die Überwachung von Tags in allen Clients zu stoppen und alle Puffer zum Zwischenspeichern von Tag-Überwachungs-Dumps zu löschen, verwenden Sie Folgendes:

adb shell cmd media.camera watch stop

dumpsys-Befehl

Der Befehl dumpsys stellt eine Vielzahl von Debugging-Informationen vom Kameradienst bereit. Der folgende Befehl erfasst den gesamten Debugging-Dump vom Kameradienst:

adb shell dumpsys media.camera

Der Befehl dumpsys ermöglicht auch die Erfassung von Tag-Überwachungs-Dumps von offenen Clients. dumpsys stellt jedoch keine Tag-Überwachungs-Dumps von geschlossenen Clients bereit. Im Folgenden finden Sie Beispiele für die Verwendung von dumpsys zur Tag-Überwachung:

  • Erfassen Sie Tag-Überwachungs-Dumps von allen geöffneten Clients:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
    
  • Erhalten Sie eine Live-Vorschau der Tag-Überwachungsinformationen mit dem Linux-Befehl watch :

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