ARCore 通話記錄

排解 Android 的執行階段行為和效能問題時 應用程式,可以將 ARCore API 呼叫記錄至 Android 裝置記錄

如果啟用通話記錄功能,ARCore 就會透過 C API 記錄所有 API 呼叫 名稱,無論應用程式透過哪個 SDK 建構而成。所有 C API 名稱都可以 請參閱 C API 參考說明文件和 參數和傳回值

啟用 API 呼叫記錄功能

不採用 ArSession* 參數的 ARCore API 呼叫,例如 *_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. 請使用以下 Activity Manager 廣播指令啟用通話記錄: 。

    # 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)