בדף הזה מתוארים הכלים לניפוי באגים בשירות המצלמה, שמאפשרים לראות שינויים בבקשת הצילום ובערכים של התוצאות שנשלחים אל HAL המצלמה וממנו. שירות המצלמה כולל את הפקודות watch
ו-dumpsys
.
הפקודה watch
זמינה במכשירים עם Android מגרסה 13 ואילך, ומאפשרת לקבוע מתי יתבצע מעקב אחרי התגים ותהיה גישה אליהם, להציג תצוגה מקדימה של נתוני גרסת dump של מעקב אחר תגים מלקוחות פתוחים ולצפות בנתוני גרסת dump שנשמרו במטמון מלקוחות סגורים. הפקודה dumpsys
מאפשרת לגשת למידע על ניפוי באגים, אבל היא לא מספקת דמפים של מעקב אחר תגים מלקוחות סגורים.
פקודה לשעון
בקטע הזה מוסבר איך משתמשים בפקודה watch
ומפורטות דוגמאות.
התחלת מעקב אחר תגים
כדי להתחיל לעקוב אחרי תגים, משתמשים באפשרויות הבאות:
adb shell cmd media.camera watch start -m <tags> [-c <clients>]
דוגמה:
adb shell cmd media.camera watch start \
-m android.control.effectMode,android.control.aeMode \
-c com.google.android.GoogleCamera,com.android.chrome
ארגומנטים:
tags
: רשימה מופרדת בפסיקים של התגים שרוצים לעקוב אחריהם. אפשר גם להשתמש בקיצור3a
, כאשר3a
מתייחס לקבוצה של כל התגיםandroid.control.*
שקשורים ל-AF, ל-AE ול-AWB (הרשימה המלאה של התגים מופיעה במאמרTagMonitor.cpp
).clients
: ארגומנט אופציונלי. רשימה מופרדת בפסיקים של שמות חבילות הלקוח שאחריהם מתבצע מעקב אחר תגים. הפונקציה עוקבת אחרי כל הלקוחות אם לא מועבר ארגומנט של לקוח, או אם הערךall
נמצא ברשימת הלקוחות.
הפקודה הזו מתחילה את מעקב התגים בלקוחות פתוחים ובכל לקוח שייפתח לאחר מכן (עד להפעלת stop
). אחרי הקריאה ל-start
, שירות המצלמה מאחסן במטמון גרסת dump של מעקב התגים מהלקוחות כשהם נסגרים.
אם לא קוראים ל-start
, שירות המצלמה לא עוקב אחרי תגים של לקוחות ולא מאחסן במטמון דיווחים על מעקב אחר תגים. אם הערך all
מועבר בפרמטר clients
, שירות המצלמה עוקב אחרי תגים ומאחסן במטמון דמפים של מעקב מכל הלקוחות.
איך פורקים את המידע מהמעקב אחרי התג
כדי לדגום את המידע על מעקב התגים, משתמשים ב-:
adb shell cmd media.camera watch dump
הפקודה הזו מפיקה את נתוני המעקב של התג לפלט הסטנדרטי ואז יוצאת. הפקודה מדפיסה את נתוני הדמפ של מעקב התגים שנשמרו במטמון מלקוחות שנסגרו מאז start
(או מ-clear
האחרונה) ואת נתוני הדמפ האחרונים של מעקב התגים מלקוחות פתוחים.
פלט לדוגמה:
$ 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
...
תצוגה מקדימה של פרטי המעקב אחרי התגים בזמן אמת
כדי לראות תצוגה מקדימה של מידע על מעקב אחר תגים בזמן אמת, אפשר להשתמש באפשרויות הבאות:
adb shell cmd media.camera watch live [-n refresh_interval_ms]
דוגמה:
adb shell cmd media.camera watch live -n 250
ארגומנטים:
refresh_interval_ms
: ארגומנט אופציונלי. מרווח הזמן (באלפיות שנייה) שבו המידע יתעדכן. ערך ברירת המחדל הוא 1000 אם לא מועבר ערך.
הפקודה הזו מדפיסה מידע על מעקב התגים בזמן אמת. כדי לצאת, מקישים על return/enter.
פלט לדוגמה:
$ 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]
ניקוי נתוני dump שנשמרו במטמון
כדי לנקות את כל נתוני הדמפ של מעקב התגים שנשמרו במטמון, משתמשים בפקודה:
adb shell cmd media.camera watch clear
הפקודה הזו לא עוצרת את מעקב התגים.
הפסקת המעקב אחרי תגים
כדי להפסיק את המעקב אחר התגים בכל הלקוחות ולנקות את כל המאגרים שנשמרו למטמון של דיווחים על מעקב אחר תגים, משתמשים בפקודה:
adb shell cmd media.camera watch stop
הפקודה dumpsys
הפקודה dumpsys
מספקת מגוון מידע על ניפוי באגים משירות המצלמה. הפקודה הבאה מתעדת את כל נתוני הדמפ של ניפוי הבאגים משירות המצלמה:
adb shell dumpsys media.camera
הפקודה dumpsys
מאפשרת גם לצלם דיווחים על מעקב אחר תגים מלקוחות פתוחים. עם זאת, dumpsys
לא מספק דיווחים על מעקב אחר תגים מלקוחות סגורים. דוגמאות לשימוש ב-dumpsys
למעקב אחר תגים:
איך מתעדים דיווחים על מעקב אחר תגים מכל הלקוחות הפתוחים:
adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
הצגת תצוגה מקדימה של מידע בזמן אמת על מעקב התגים באמצעות הפקודה
watch
ב-Linux:watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'