Rejestrowanie połączeń ARCore

Podczas rozwiązywania problemów z działaniem i wydajnością aplikacji na Androida możesz rejestrować wywołania interfejsu ARCore API w dzienniku urządzenia z Androidem.

Gdy włączysz logowanie wywołań, ARCore będzie rejestrować wszystkie wywołania interfejsu API przy użyciu nazwy interfejsu C API, niezależnie od pakietu SDK, za pomocą którego skompilowano aplikację. Wszystkie nazwy interfejsów API C można znaleźć w dokumentacji referencyjnej interfejsu C wraz z ich parametrami i zwracanymi wartościami.

Włącz logowanie wywołań interfejsu API

Wywołania interfejsu ARCore API, które nie przyjmują parametrów ArSession*, takich jak funkcje *_destroy i *_release, nie są rejestrowane.

Aby włączyć rejestrowanie wywołań interfejsu ARCore API, wykonaj te czynności.

  1. Sprawdź, czy są zainstalowane Usługi Google Play dla AR (ARCore) w wersji 1.23 lub nowszej:

    • W systemie Windows uruchom adb shell pm dump com.google.ar.core | findstr /i "packages: versionName".
    • W systemie macOS uruchom adb shell pm dump com.google.ar.core | egrep -i versionName\|packages:.
  2. Otwórz środowisko AR w aplikacji, aby uruchomić aktywną sesję ARCore. Aplikacja musi być w trybie AR, aby odbierać transmisję umożliwiającą rejestrowanie. Obrazy podglądu aparatu w trybie AR powinny być widoczne na ekranie urządzenia.

  3. Aby włączyć rejestrowanie połączeń w aplikacji, użyj tego polecenia transmisji menedżera aktywności:

    # 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
    

Wyłącz logowanie wywołań interfejsu API

Aby wyłączyć rejestrowanie wywołań interfejsu ARCore API, wykonaj te czynności:

  1. Otwórz środowisko AR w aplikacji, aby uruchomić aktywną sesję ARCore. Aplikacja musi być w trybie AR, aby odbierać transmisję z wyłączoną funkcją rejestrowania. Obrazy podglądu aparatu w trybie AR powinny być widoczne na ekranie urządzenia.

  2. Aby wyłączyć rejestrowanie połączeń w aplikacji, użyj tego polecenia transmisji menedżera aktywności:

    # 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
    

Wyświetlanie danych wyjściowych

ARCore używa tagu ARCore-Api do wszystkich danych wyjściowych logowania w interfejsie ARCore API. Aby odfiltrować tylko te wywołania, użyj tego polecenia.

# 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 ogranicza ilość danych wyjściowych, aby zmniejszyć ilość spamu w logach. Łączy pominięte komunikaty logu w jeden komunikat.

Przykładowe dane wyjściowe pominiętych komunikatów logu:

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)