Ghi nhật ký cuộc gọi ARCore

Khi khắc phục các vấn đề về hiệu suất và hành vi trong thời gian chạy trên Android bạn có thể ghi nhật ký các lệnh gọi API ARCore vào Nhật ký thiết bị Android.

Khi bạn bật tính năng ghi nhật ký cuộc gọi, ARCore sẽ ghi nhật ký tất cả các lệnh gọi API bằng API C bất kể SDK mà bạn dùng để tạo ứng dụng là gì. Tất cả tên API C đều có thể trong tài liệu tham khảo về API C, cùng với tham số và giá trị trả về của chúng.

Bật tính năng ghi nhật ký lệnh gọi API

Lệnh gọi API ARCore không nhận các tham số ArSession*, chẳng hạn như *_destroy và các hàm *_release không được ghi nhật ký.

Làm theo các bước sau để bật tính năng ghi nhật ký lệnh gọi API ARCore.

  1. Đảm bảo đã cài đặt Dịch vụ Google Play cho Thực tế tăng cường (ARCore) 1.23 trở lên:

    • Trên Windows, hãy chạy adb shell pm dump com.google.ar.core | findstr /i "packages: versionName".
    • Trên macOS, hãy chạy adb shell pm dump com.google.ar.core | egrep -i versionName\|packages:.
  2. Mở trải nghiệm thực tế tăng cường trong ứng dụng của bạn để có một phiên ARCore đang hoạt động đang chạy. Ứng dụng của bạn phải ở chế độ AR để nhận được nội dung truyền phát cho phép ghi nhật ký. Hình ảnh xem trước của máy ảnh thực tế tăng cường sẽ hiển thị trên thiết bị màn hình.

  3. Sử dụng lệnh truyền tin sau đây của trình quản lý hoạt động để bật tính năng ghi nhật ký cuộc gọi: cho ứng dụng của mình.

    # 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
    

Tắt tính năng ghi nhật ký lệnh gọi API

Hãy làm theo các bước sau để tắt tính năng ghi nhật ký lệnh gọi API ARCore.

  1. Mở trải nghiệm thực tế tăng cường trong ứng dụng của bạn để có một phiên ARCore đang hoạt động đang chạy. Ứng dụng của bạn phải ở chế độ thực tế tăng cường để nhận được nội dung truyền phát vô hiệu hoá ghi nhật ký. Hình ảnh xem trước của máy ảnh thực tế tăng cường sẽ hiển thị trên thiết bị màn hình.

  2. Sử dụng lệnh truyền tin sau đây của trình quản lý hoạt động để tắt tính năng ghi nhật ký cuộc gọi cho ứng dụng của bạn:

    # 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
    

Xem kết quả

ARCore sử dụng thẻ ARCore-Api cho tất cả đầu ra ghi nhật ký của ARCore API. Sử dụng sau đây để chỉ lọc các lệnh gọi đó.

# 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

Giá ARCore giới hạn dữ liệu đầu ra để giảm thư rác nhật ký. Dữ liệu này tổng hợp nhật ký bị bỏ qua thông điệp vào một thông điệp nhật ký duy nhất.

Kết quả mẫu về thông điệp nhật ký bị bỏ qua:

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)