ARCore 通話ロギング

Android でのランタイムの動作やパフォーマンスの問題のトラブルシューティングを行う場合 アプリケーションでは、ARCore API 呼び出しを Android デバイスのログ

コールロギングを有効にすると、ARCore のすべての API 呼び出しが C API でログに記録される そのアプリのビルドに使用されている SDK にかかわらずすべての C API 名は、 C API リファレンス ドキュメントと、 パラメータと戻り値を返します。

API 呼び出しロギングを有効にする

ArSession* パラメータを受け取らない ARCore API 呼び出し(*_destroy など) *_release 関数はログに記録されません。

ARCore API 呼び出しロギングを有効にする手順は次のとおりです。

  1. Google Play 開発者サービス(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 モードにする必要があります Logging に送信されます。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 モードにする必要があります Logging に送信されます。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)