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 watch
i dumpsys
.
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ót3a
, gdzie3a
to zbiór wszystkich tagówandroid.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'