اشکال زدایی دوربین

این صفحه ابزارهای اشکال‌زدایی در سرویس دوربین را برای مشاهده تغییرات در درخواست ضبط و مقادیر نتیجه‌ای که به دوربین HAL ارسال و از آن دریافت می‌شوند، شرح می‌دهد. سرویس دوربین شامل دستورات watch و dumpsys است. دستور watch که در دستگاه‌های دارای اندروید ۱۳ یا بالاتر موجود است، امکان کنترل زمان نظارت و دسترسی به تگ‌ها، پیش‌نمایش زنده از dumpهای نظارت بر تگ از کلاینت‌های باز و مشاهده dumpهای ذخیره شده از کلاینت‌های بسته را فراهم می‌کند. دستور dumpsys امکان دسترسی به اطلاعات اشکال‌زدایی را فراهم می‌کند اما dumpهای نظارت بر تگ را از کلاینت‌های بسته ارائه نمی‌دهد.

دستور تماشا

این بخش نحوه استفاده از دستور 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 ، سرویس دوربین، دامپ‌های مانیتورینگ تگ را از کلاینت‌ها هنگام بسته شدن کلاینت‌ها ذخیره می‌کند.

مگر اینکه 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 : آرگومان اختیاری. فاصله زمانی به میلی ثانیه برای به‌روزرسانی اطلاعات. در صورت عدم ارسال مقدار، پیش‌فرض ۱۰۰۰ است.

این دستور اطلاعات مانیتورینگ تگ را به صورت بلادرنگ چاپ می‌کند. برای خروج، 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]

پاک کردن دامپ‌های ذخیره شده در حافظه پنهان

برای پاک کردن تمام دامپ‌های مانیتورینگ تگ‌های ذخیره شده، از دستور زیر استفاده کنید:

adb shell cmd media.camera watch clear

این دستور، نظارت بر تگ را متوقف نمی‌کند.

متوقف کردن نظارت بر تگ‌ها

برای متوقف کردن نظارت بر تگ‌ها در تمام کلاینت‌ها و پاک کردن تمام بافرهای نگهداری شده برای ذخیره‌سازی دامپ‌های نظارت بر تگ، از دستور زیر استفاده کنید:

adb shell cmd media.camera watch stop

دستور dumpsys

دستور dumpsys مجموعه‌ای از اطلاعات اشکال‌زدایی را از سرویس دوربین ارائه می‌دهد. دستور زیر کل dump اشکال‌زدایی را از سرویس دوربین دریافت می‌کند:

adb shell dumpsys media.camera

دستور dumpsys همچنین امکان ثبت dumpهای مانیتورینگ تگ را از کلاینت‌های باز فراهم می‌کند. با این حال، dumpsys dumpهای مانیتورینگ تگ را از کلاینت‌های بسته ارائه نمی‌دهد. در زیر نمونه‌هایی از استفاده از dumpsys برای مانیتورینگ تگ آمده است:

  • ضبط داده‌های مانیتورینگ تگ از تمام کلاینت‌های باز:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
  • با استفاده از دستور watch لینوکس، پیش‌نمایش زنده‌ای از اطلاعات مانیتورینگ تگ دریافت کنید:

    watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'