Debugowanie kamery

Na tej stronie opisano narzędzia debugowania w usłudze kamery umożliwiające przeglądanie zmian w żądaniach przechwytywania i wartościach wyników wysyłanych do i z warstwy HAL kamery. Usługa kamery obejmuje polecenia watch i dumpsys . Dostępne na urządzeniach z systemem Android 13 lub nowszym polecenie watch umożliwia kontrolę nad tym, kiedy tagi są monitorowane i kiedy uzyskuje się do nich dostęp, podgląd na żywo zrzutów monitorowania tagów z otwartych klientów oraz przeglądanie buforowanych zrzutów z zamkniętych klientów. Komenda dumpsys umożliwia dostęp do informacji debugowania, ale nie zapewnia zrzutów monitorowania tagów od zamkniętych klientów.

polecenie oglądania

W tej sekcji opisano sposób korzystania z polecenia watch i podano przykłady.

Rozpocznij monitorowanie tagów

Aby rozpocząć monitorowanie tagów użyj:

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

Przykład:

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

Argumenty:

  • tags : oddzielona przecinkami lista tagów, które mają być monitorowane. Akceptuje również skrót 3a , gdzie 3a odnosi się do zestawu wszystkich tagów android.control.* związanych z AF, AE i AWB (pełna lista tagów znajduje się w TagMonitor.cpp ).
  • clients : Argument opcjonalny. Rozdzielana przecinkami lista nazw pakietów klientów, dla których monitorowane są znaczniki. Obserwuje wszystkich klientów, jeśli nie został przekazany żaden argument klienta lub jeśli all są obecni na liście klientów.

To polecenie uruchamia monitorowanie tagów w otwartych klientach i w każdym kliencie, który zostanie otwarty później (aż do wywołania stop ). Po start uruchomienia usługa kamery buforuje zrzuty monitorowania znaczników od klientów po ich zamknięciu.

O ile nie zostanie wywołany start , usługa kamery nie monitoruje tagów dla żadnego klienta i nie buforuje zrzutów monitorowania tagów. Jeśli w parametrze clients zostanie przekazane all , usługa kamery monitoruje znaczniki i buforuje zrzuty monitorujące ze wszystkich klientów.

Informacje o monitorowaniu znacznika zrzutu

Aby zrzucić informacje o monitorowaniu tagów, użyj:

adb shell cmd media.camera watch dump

To polecenie zrzuca informacje monitorujące znacznik na standardowe wyjście, a następnie kończy działanie. Drukuje buforowane zrzuty monitorowania tagów od klientów, które zamknęły się od start (lub ostatniego clear ) oraz najnowszy zrzut monitorowania tagów od otwartych klientów.

Przykładowe wyjście:

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

Podgląd informacji o monitorowaniu tagów w czasie rzeczywistym

Aby wyświetlić podgląd informacji o monitorowaniu tagów w czasie rzeczywistym, użyj:

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

Przykład:

adb shell cmd media.camera watch live -n 250

Argumenty:

  • refresh_interval_ms : Argument opcjonalny. Interwał w milisekundach, o którym należy odświeżyć informacje. Wartość domyślna to 1000, jeśli nie przekazano żadnej wartości.

To polecenie drukuje informacje o monitorowaniu tagów w czasie rzeczywistym. Aby wyjść, naciśnij klawisz Return / Enter .

Przykładowe wyjście:

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

Wyczyść zrzuty pamięci podręcznej

Aby wyczyścić wszystkie buforowane zrzuty monitorowania tagów, użyj:

adb shell cmd media.camera watch clear

To polecenie nie zatrzymuje monitorowania tagów.

Przestań monitorować tagi

Aby zatrzymać monitorowanie tagów na wszystkich klientach i wyczyścić wszystkie bufory przechowywane w celu buforowania zrzutów monitorowania tagów, użyj:

adb shell cmd media.camera watch stop

polecenie dumpsys

Komenda dumpsys udostępnia wiele informacji debugowania z usługi kamery. Następujące polecenie przechwytuje cały zrzut debugowania z usługi kamery:

adb shell dumpsys media.camera

Komenda dumpsys umożliwia także przechwytywanie zrzutów monitorowania znaczników z otwartych klientów. Jednak dumpsys nie zapewnia zrzutów monitorowania tagów od zamkniętych klientów. Poniżej znajdują się przykłady wykorzystania dumpsys do monitorowania tagów:

  • Przechwytuj zrzuty monitorowania tagów ze wszystkich otwartych klientów:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
    
  • Uzyskaj podgląd na żywo informacji o monitorowaniu tagów za pomocą polecenia Linux watch :

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