Na tej stronie opisujemy narzędzia do debugowania w usłudze aparatu, które umożliwiają wyświetlanie zmian w wartościach żądań i wyników przechwytywania wysyłanych do i z warstwy HAL aparatu. Usługa aparatu obejmuje polecenia watch
i dumpsys
.
Dostępne na urządzeniach z Androidem 13 lub nowszym polecenie watch
umożliwia kontrolowanie, kiedy tagi są monitorowane i dostępne, podgląd na żywo zrzutów monitorowania tagów z otwartych klientów oraz wyświetlanie zrzutów z pamięci podręcznej z zamkniętych klientów. Polecenie dumpsys
umożliwia dostęp do informacji o debugowaniu, ale nie udostępnia zrzutów monitorowania tagów z zamkniętych klientów.
polecenie zegarka
W tej sekcji opisujemy, jak używać polecenia watch
, i podajemy 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
: lista tagów oddzielonych przecinkami, które mają być monitorowane. Akceptuje też skrót3a
, gdzie3a
odnosi się do zbioru wszystkich tagówandroid.control.*
związanych z AF, AE i AWB (pełną listę tagów znajdziesz wTagMonitor.cpp
).clients
: argument opcjonalny. Lista nazw pakietów klienta rozdzielona przecinkami, w których przypadku tagi są monitorowane. Obserwuje wszystkich klientów, jeśli nie zostanie przekazany argument client lub jeśli na liście klientów znajduje się znakall
.
To polecenie rozpoczyna monitorowanie tagów na otwartych kontach klienta i na wszystkich kontach, które zostaną później otwarte (do momentu wywołania polecenia stop
). Po wywołaniu funkcji start
usługa aparatu buforuje zrzuty monitorowania tagów z klientów, gdy ci klienci zamykają aplikację.
Jeśli nie zostanie wywołana funkcja start
, usługa aparatu nie monitoruje tagów w przypadku żadnych klientów ani nie buforuje zrzutów monitorowania tagów. Jeśli w parametrze all
zostanie przekazana wartość clients
, usługa kamery będzie monitorować tagi i buforować zrzuty monitorowania ze wszystkich klientów.
Zrzucanie informacji o monitorowaniu tagów
Aby zrzucić informacje o monitorowaniu tagów, użyj tego polecenia:
adb shell cmd media.camera watch dump
To polecenie zapisuje informacje o monitorowaniu tagów w standardowym strumieniu wyjściowym, a następnie kończy działanie. Drukuje zrzuty monitorowania tagów z pamięci podręcznej klientów, którzy zostali zamknięci od czasu start
(lub ostatniego clear
), oraz najnowszy 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
...
Wyświetlanie podglądu 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, po którym informacje mają być odświeżane. Jeśli nie zostanie przekazana żadna wartość, domyślnie przyjmuje się 1000.
To polecenie wyświetla 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]
Czyszczenie zrzutów z pamięci podręcznej
Aby usunąć wszystkie zrzuty monitorowania tagów zapisane w pamięci podręcznej, użyj tego polecenia:
adb shell cmd media.camera watch clear
To polecenie nie zatrzymuje monitorowania tagu.
Zatrzymywanie monitorowania tagów
Aby zatrzymać monitorowanie tagów we wszystkich klientach i wyczyścić wszystkie bufory przechowywane na potrzeby zrzutów monitorowania tagów w pamięci podręcznej, użyj tego polecenia:
adb shell cmd media.camera watch stop
polecenie dumpsys
Polecenie dumpsys
udostępnia wiele informacji o debugowaniu z usługi kamery. To polecenie przechwytuje cały zrzut 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 zrzutów monitorowania tagów z zamkniętych klientów. Oto przykłady użycia tagu dumpsys
do monitorowania tagów:
Przechwytywanie zrzutów 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'