Registrazione chiamate ARCore

Per risolvere i problemi relativi al comportamento di runtime e alle prestazioni nella tua app per Android, puoi registrare le chiamate API ARCore nel log dei dispositivi Android.

Quando abiliti il logging delle chiamate, ARCore registra tutte le chiamate API con il nome dell'API C, indipendentemente dall'SDK con cui è stata creata l'app. Tutti i nomi delle API C sono disponibili nella documentazione di riferimento dell'API C, insieme ai relativi parametri e valori restituiti.

Abilita logging delle chiamate API

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

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

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

    • 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 nell'app in modo che sia in esecuzione una sessione ARCore attiva. L'app deve essere in modalità AR per ricevere la trasmissione che consente l'accesso. Le immagini di anteprima della fotocamera AR dovrebbero essere visibili sullo schermo del dispositivo.

  3. Utilizza il seguente comando di trasmissione di Gestione attività 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
    

Disabilita logging delle chiamate API

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

  1. Apri l'esperienza AR nell'app in modo che sia in esecuzione una sessione ARCore attiva. L'app deve essere in modalità AR per ricevere la trasmissione che disattiva la registrazione. Le immagini di anteprima della fotocamera AR dovrebbero essere visibili sullo schermo del dispositivo.

  2. Utilizza il seguente comando di trasmissione di Gestione attività per disattivare la registrazione 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 logging dell'API ARCore. Utilizza il seguente comando 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

La frequenza ARCore limita l'output per ridurre lo spam del log. Aggrega i messaggi di 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)