ثبت تماس ARCore

هنگام عیب‌یابی مشکلات مربوط به رفتار زمان اجرا و عملکرد در برنامه Android خود، می‌توانید تماس‌های ARCore API را در گزارش دستگاه Android ثبت کنید.

وقتی ثبت تماس را فعال می‌کنید، ARCore همه تماس‌های API را با نام C API آنها ثبت می‌کند، صرف نظر از SDK که برنامه با آن ساخته شده است. همه نام‌های C API را می‌توان در مستندات مرجع C API به همراه پارامترها و مقادیر بازگشتی آنها یافت.

ثبت تماس API را فعال کنید

فراخوانی های ARCore API که پارامترهای ArSession* مانند *_destroy و *_release را نمی گیرند، ثبت نمی شوند.

برای فعال کردن ثبت تماس ARCore API این مراحل را دنبال کنید.

  1. مطمئن شوید که Google Play Services for AR (ARCore) 1.23 یا جدیدتر نصب شده باشد:

    • در ویندوز، adb shell pm dump com.google.ar.core | findstr /i "packages: versionName" اجرا کنید adb shell pm dump com.google.ar.core | findstr /i "packages: versionName" .
    • در macOS، adb shell pm dump com.google.ar.core | egrep -i versionName\|packages: اجرا کنید adb shell pm dump com.google.ar.core | egrep -i versionName\|packages: .
  2. تجربه AR را در برنامه خود باز کنید تا یک جلسه ARCore فعال در حال اجرا باشد. برنامه شما باید در حالت AR باشد تا پخشی را دریافت کند که ورود به سیستم را فعال می کند. تصاویر پیش نمایش دوربین AR باید روی صفحه دستگاه قابل مشاهده باشند.

  3. از دستور پخش مدیریت فعالیت زیر برای فعال کردن ثبت تماس استفاده کنید: برای برنامه خود.

    # Enables ARCore call logging and saves a setting to your app's
    # Android Shared Preferences, so that call logging remains enabled in
    # subsequent ARCore sessions.
    
    # Your app must have an actively running ARCore session to receive the broadcast.
    adb shell am broadcast -a com.google.ar.core.ENABLE_API_CALL_LOGGING
    

غیرفعال کردن گزارش تماس API

برای غیرفعال کردن ثبت تماس ARCore API این مراحل را دنبال کنید.

  1. تجربه AR را در برنامه خود باز کنید تا یک جلسه ARCore فعال در حال اجرا باشد. برنامه شما باید در حالت AR باشد تا پخشی را دریافت کند که ورود به سیستم را غیرفعال می کند. تصاویر پیش نمایش دوربین AR باید روی صفحه دستگاه قابل مشاهده باشند.

  2. از دستور پخش مدیریت فعالیت زیر برای غیرفعال کردن ثبت تماس برای برنامه خود استفاده کنید:

    # Disables ARCore call logging and saves a setting to your app's
    # Android Shared Preferences, so that call logging remains disabled in
    # subsequent ARCore sessions.
    
    # Your app must have an actively running ARCore session to receive the broadcast.
    adb shell am broadcast -a com.google.ar.core.DISABLE_API_CALL_LOGGING
    

مشاهده خروجی

ARCore از تگ ARCore-Api برای تمام خروجی های گزارش ARCore API استفاده می کند. از دستور زیر برای فیلتر کردن فقط آن تماس ها استفاده کنید.

# Currently, ARCore only logs API calls that take an `ArSession*` argument.
# Functions that do not take session parameters such as `*_destroy` and `*_release` are not logged.
# -s is equivalent to the filter expression '*:S', which sets priority for all tags to silent.

adb logcat -s ARCore-Api

نرخ ARCore خروجی را محدود می کند تا هرزنامه را کاهش دهد. این پیام‌های لاگ نادیده گرفته شده را در یک پیام گزارش واحد جمع می‌کند.

نمونه خروجی از پیام های گزارش نادیده گرفته شده:

D ARCore-Api: ArFrame_create(<ptr>)
D ARCore-Api: ArSession_update(<ptr>) -> AR_SUCCESS
D ARCore-Api: ArFrame_acquireCamera(<ptr>, <ptr>)
D ARCore-Api: ArFrame_getDisplayGeometryChanged(<ptr>, <ptr>)
D ARCore-Api: ArCamera_getTrackingFailureReason(<ptr>, <ptr>)
D ARCore-Api: ArFrame_getTimestamp(<ptr>, <ptr>)
D ARCore-Api: ArSession_setDisplayGeometry(0, 1080, 2195)
D ARCore-Api: ArFrame_create(<ptr>) (suppressing for 10s)
D ARCore-Api: ArSession_update(<ptr>) -> AR_SUCCESS (suppressing for 10s)
D ARCore-Api: ArFrame_acquireCamera(<ptr>, <ptr>) (suppressing for 10s)
D ARCore-Api: ArFrame_getDisplayGeometryChanged(<ptr>, <ptr>) (suppressing for 10s)
D ARCore-Api: ArCamera_getTrackingFailureReason(<ptr>, <ptr>) (suppressing for 10s)
D ARCore-Api: ArFrame_getTimestamp(<ptr>, <ptr>) (suppressing for 10s)
D ARCore-Api: ArSession_setDisplayGeometry(0, 1080, 2195) (suppressing for 10s)