Debugowanie aparatu

Na tej stronie opisujemy narzędzia debugowania w usłudze aparatu, które umożliwiają wyświetlanie zmian w żądaniach rejestrowania i wartościach wyników przesyłanych do interfejsu aparatu HAL i z niego. Usługa aparatu obejmuje polecenia watchdumpsys. Dostępna na urządzeniach z Androidem 13 lub nowszym, komenda watch umożliwia kontrolowanie, kiedy tagi są monitorowane i dostęp do nich, wyświetlanie na żywo zrzutów monitorowania tagów z otwartych klientów oraz przeglądanie zrzutów z buforu z zamkniętych klientów. Polecenie dumpsys umożliwia dostęp do informacji debugowania, ale nie zapewnia zrzutów monitorowania tagów z zamkniętych klientów.

polecenie watch

W tej sekcji opisaliśmy, jak używać polecenia watch, i podaliśmy przykłady.

Rozpocznij monitorowanie tagów

Aby zacząć monitorować tagi, 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: lista tagów do monitorowania oddzielonych przecinkami. Akceptuje też skrót 3a, gdzie 3a to zbiór wszystkich tagów android.control.* związanych z AF, AE i AWB (pełna lista tagów: TagMonitor.cpp).
  • clients: argument opcjonalny. Lista nazw pakietów klienta rozdzielona przecinkami, dla których monitorowane są tagi. Obserwuje wszystkich klientów, jeśli nie przekazano argumentu client lub jeśli na liście klientów znajduje się wartość all.

To polecenie uruchamia monitorowanie tagów w otwartych klientach i w wszystkich klientach, które zostaną otwarte później (do momentu wywołania funkcji stop). Po wywołaniu funkcji start usługa aparatu zapisuje w pamięci podręcznej zrzuty monitorowania tagów z klientów, gdy ci ostatni się zamkną.

Jeśli nie zostanie wywołana funkcja start, usługa kamery nie będzie monitorować tagów dla żadnych klientów i nie będzie przechowywać w pamięci podręcznej zrzutów monitorowania tagów. Jeśli parametr clients zawiera wartość all, usługa kamery monitoruje tagi i przechowuje w pamięci podręcznej zrzuty monitorowania ze wszystkich klientów.

Wyświetlanie informacji o monitorowaniu tagów

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

adb shell cmd media.camera watch dump

To polecenie wypisuje informacje o monitorowaniu tagów na standardowe dane wyjściowe, a potem się zamyka. Wypisuje buforowane zrzuty danych z monitorowania tagów z klientów, które zostały zamknięte od start (lub ostatniego clear) oraz najnowszy zrzut danych z monitorowania tagów z otwartych klientów.

Przykładowe dane wyjściowe:

$ 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. Odstęp w milisekundach, w jakim mają być odświeżane informacje. Jeśli nie zostanie podana żadna wartość, domyślnie przyjmuje się 1000.

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

Przykładowe dane wyjściowe:

$ 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 z pamięci podręcznej

Aby wyczyścić wszystkie zrzuty dzienników monitorowania tagów w pamięci podręcznej, użyj:

adb shell cmd media.camera watch clear

To polecenie nie powoduje przerwania monitorowania tagów.

Zatrzymywanie monitorowania tagów

Aby przestać monitorować tagi we wszystkich klientach i wyczyścić wszystkie bufory przechowywane na potrzeby buforowania zrzutów monitorowania tagów, użyj:

adb shell cmd media.camera watch stop

polecenie dumpsys,

Polecenie dumpsys udostępnia wiele informacji debugowania z usługi kamery. To polecenie przechwytuje cały zrzut dzienników debugowania z usługi aparatu:

adb shell dumpsys media.camera

Polecenie dumpsys umożliwia też przechwytywanie zrzutów monitorowania tagów z otwartych klientów. dumpsys nie udostępnia jednak plików z danymi z monitorowania tagów pochodzących od zamkniętych klientów. Oto przykłady korzystania z tagu dumpsys do monitorowania tagów:

  • Pobieranie zrzutów dzienników monitorowania tagów ze wszystkich otwartych klientów:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
    
  • Aby wyświetlić podgląd na żywo informacji o monitorowaniu tagów, użyj w Linuksie polecenia watch:

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