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: opcjonalny argument. 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 oraz we wszystkich klientach, które będą następnie otwierane (do czasu 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 w parametrze clients zostanie przekazana wartość all, usługa kamery będzie monitorować tagi i przechowywać w pamięci podręcznej zrzuty monitorowania ze wszystkich klientów.

Informacje o monitorowaniu tagów zrzutu

Aby wyodrębnić 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. Wyświetla w pamięci podręcznej zrzuty monitorowania tagów z klientów, które zostały zamknięte od start (lub ostatniego clear), oraz ostatni zrzut 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: opcjonalny argument. 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 zatrzymuje monitorowania tagów.

Zatrzymywanie monitorowania tagów

Aby zatrzymać monitorowanie tagów u wszystkich klientów i wyczyścić wszystkie bufory służące do zapisywania zrzutów monitorowania tagów w pamięci podręcznej, użyj polecenia:

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:

  • Rejestruj zrzuty 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'