Debugowanie kamery

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 watchdumpsys. 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ót 3a, gdzie 3a odnosi się do zbioru wszystkich tagów android.control.* związanych z AF, AE i AWB (pełną listę tagów znajdziesz w TagMonitor.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ę znak all.

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'