การบันทึกการโทรของ 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 สำหรับ AR (ARCore) 1.23 ขึ้นไปแล้ว โดยทำดังนี้

    • ใน Windows ให้เรียกใช้ 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:
  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)