Registrazione chiamate ARCore

Risoluzione dei problemi di prestazioni e comportamento di runtime sul tuo dispositivo Android puoi registrare le chiamate API ARCore nell'app Log del dispositivo Android.

Quando abiliti il logging delle chiamate, ARCore registrerà tutte le chiamate API con la propria API C. a prescindere dall'SDK con cui è stata creata l'app. Tutti i nomi delle API C possono sono disponibili nella documentazione di riferimento dell'API C, oltre i relativi parametri e restituiscono i valori.

Attiva il logging delle chiamate API

Chiamate API ARCore che non accettano parametri ArSession* come *_destroy e le funzioni *_release non vengono registrate.

Segui questi passaggi per abilitare il logging delle chiamate API ARCore.

  1. Assicurati che sia installato Google Play Services per AR (ARCore) 1.23 o versioni successive:

    • Su Windows, esegui adb shell pm dump com.google.ar.core | findstr /i "packages: versionName".
    • Su macOS, esegui adb shell pm dump com.google.ar.core | egrep -i versionName\|packages:.
  2. Apri l'esperienza AR nella tua app in modo che ci sia una sessione ARCore attiva in esecuzione. L'app deve essere in modalità AR per ricevere la trasmissione che consente logging. Le immagini di anteprima della fotocamera AR devono essere visibili sul dispositivo schermo.

  3. Utilizza il seguente comando di broadcast di Activity Manager per abilitare il logging delle chiamate: per la tua app.

    # 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
    

Disattiva il logging delle chiamate API

Segui questi passaggi per disattivare il logging delle chiamate API di ARCore.

  1. Apri l'esperienza AR nella tua app in modo che ci sia una sessione ARCore attiva in esecuzione. La tua app deve essere in modalità AR per ricevere la trasmissione che disattiva logging. Le immagini di anteprima della fotocamera AR devono essere visibili sul dispositivo schermo.

  2. Utilizza il seguente comando di broadcast di Activity Manager per disabilitare il logging delle chiamate per la tua app:

    # 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
    

Visualizzazione dell'output

ARCore utilizza il tag ARCore-Api per tutti gli output di log dell'API ARCore. Utilizza la successivo per filtrare solo quelle chiamate.

# 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 limita la frequenza dell'output per ridurre lo spam nei log. Aggrega i log ignorati in un unico messaggio di log.

Output di esempio dei messaggi di log ignorati:

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)