ARCore per Jetpack XR

Porta i contenuti digitali nel mondo reale con le funzionalità di percezione.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Alpha Release
30 luglio 2025 - - - 1.0.0-alpha05

Dichiarazione di dipendenze

Per aggiungere una dipendenza da ARCore per Jetpack XR, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti che ti servono nel file build.gradle per la tua app o il tuo modulo:

Alla moda

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha05"
}

Kotlin

dependencies {
    implementation("androidx.xr.arcore:arcore:1.0.0-alpha05")
}

Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.0

Versione 1.0.0-alpha05

30 luglio 2025

androidx.xr.arcore:arcore:1.0.0-alpha05, androidx.xr.arcore:arcore-guava:1.0.0-alpha05 e androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05 sono rilasciati. La versione 1.0.0-alpha05 contiene questi commit.

Nuove funzionalità

  • Aggiungi getPrimaryHandSide in modo che lo sviluppatore possa ottenere le informazioni sul lato (I270bd)
  • Aggiungi l'API per il controllo della disponibilità di VPS geospaziale (I58573)
  • Aggiungi l'API ARCore per checkVpsAvailability (Idbded)
  • Funzioni di estensione stateFlowable aggiunte a :xr:arcore:arcore-rxjava3 per l'utilizzo da parte degli sviluppatori Java. (I083aa, b/427247794)

Modifiche alle API

  • I valori di Config *Mode sono stati rinominati per riflettere il loro comportamento. (I6d247, b/414648065)
  • L'artefatto ARCore principale (xr:arcore:arcore) conterrà solo API asincrone in stile Kotlin. Gli sviluppatori Java possono fare affidamento sulla libreria xr:arcore:arcore-rxjava3 per accedere alle API compatibili. (Ia525e, b/422794329)
  • L'artefatto ARCore principale (xr:scenecore:scenecore) conterrà solo API asincrone in stile Kotlin. Gli sviluppatori Java possono fare affidamento sulla libreria xr:arcore:arcore-guava per accedere alle API compatibili. (Iffcb4, b/422773524)
  • Anchor.persistAsync() aggiunto a AnchorGuava per l'utilizzo da parte degli sviluppatori Java. (I4af1c, b/425984631)
  • Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface) aggiunto a EarthGuava per l'utilizzo da parte degli sviluppatori Java. (I66357, b/425992992)
  • Gli sviluppatori Java utilizzeranno le funzioni di estensione per GltfModel.createAsync in GltfModel.kt. Le funzioni asincrone in GltfModel verranno eliminate. (I0af60)
  • Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per applicare l'utilizzo corretto: -Xjspecify-annotations=strict (questo è il valore predefinito a partire dalla versione 2.1.0 del compilatore Kotlin) (Ia8420, b/326456246)
  • Funzioni di estensione subscribeAsFlowable aggiunte a :xr:arcore:arcore-rxjava3 per l'utilizzo da parte degli sviluppatori Java. (Id3e49, b/427277298)

Versione 1.0.0-alpha04

7 maggio 2025

androidx.xr.arcore:arcore:1.0.0-alpha04 viene ritirata. La versione 1.0.0-alpha04 contiene questi commit.

Modifiche alle API

  • I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive per essere utilizzati. (Idb6b5)
  • TrackingState e HandJointType sono stati spostati da ARCore a Runtime.
  • Hand.State.isActive (boolean) è stato modificato in Hand.State.trackingState (androidx.xr.runtime.TrackingState).
  • Anchor.load restituisce Anchor.AnchorLoadInvalidUuid se l'UUID non è valido.

Versione 1.0.0-alpha03

26 febbraio 2025

androidx.xr.arcore:arcore:1.0.0-alpha03 viene rilasciato senza modifiche significative rispetto all'ultima versione alpha. La versione 1.0.0-alpha03 contiene questi commit.

Versione 1.0.0-alpha02

12 febbraio 2025

androidx.xr.arcore:arcore:1.0.0-alpha02 viene ritirata. La versione 1.0.0-alpha02 contiene questi commit.

Nuove funzionalità

  • Aggiunto il supporto del tracciamento delle mani. Utilizza Hand.left e Hand.right per accedere alle informazioni di monitoraggio.
  • Le API che generano un ancoraggio (Anchor.create, Anchor.load, Plane.createAnchor) ora restituiscono tutte AnchorCreateResult e implementano correttamente AnchorCreateResourcesExhausted.

Correzioni di bug

  • Anchor.detach non causa più un arresto anomalo irreversibile a causa di una condizione di competizione con il thread di aggiornamento della sessione.
  • Anchor.create è più stabile quando viene eseguito su un emulatore

Versione 1.0.0-alpha01

12 dicembre 2024

androidx.xr.arcore:arcore-* 1.0.0-alpha01 viene ritirata.

Funzionalità della versione iniziale

Ispirata alla libreria ARCore esistente, la libreria ARCore per Jetpack XR offre funzionalità per combinare contenuti digitali con il mondo reale. Questa libreria include il rilevamento del movimento, gli ancoraggi persistenti, il test di hit e l'identificazione del piano con etichettatura semantica (ad esempio, pavimento, pareti e piani dei tavoli). Consulta la guida per gli sviluppatori per scoprire di più sull'utilizzo di ARCore per Jetpack XR.

  • Session: ARCore per Jetpack XR utilizza Jetpack XR Runtime per alimentare la sua funzionalità. Utilizzerai una sessione per interagire con la maggior parte delle API ARCore per Jetpack XR, quindi dai un'occhiata alla relativa documentazione.

  • Plane: utilizza i piani per comprendere il mondo che ti circonda. Ogni intent ha un Label che lo descrive semanticamente. Puoi utilizzare subscribe per ricevere notifiche sugli ultimi aerei rilevati o state per ricevere notifiche sulle modifiche a un aereo specifico.

  • Anchor: un collegamento tra un oggetto virtuale e una posizione nel mondo reale. Gli ancoraggi possono essere collegati a una posizione specifica nello spazio (utilizzando create) o a un Trackable (utilizzando createAnchor).

    • Gli ancoraggi possono essere riutilizzati in più sessioni. Puoi utilizzare persist per archiviarli, getPersistedAnchorUuids per enumerarli e load per recuperarli. Assicurati di unpersist una volta che non vengono più utilizzate.

    • Gli ancoraggi sono interoperabili tra ARCore per Jetpack XR e Jetpack SceneCore. Puoi creare un AnchorEntity utilizzando un ancoraggio oppure, se hai un AnchorEntity esistente, puoi utilizzare getAnchor per recuperare l'ancoraggio di supporto.

    • Offri interazioni naturali con gli utenti utilizzando hitTest. Un hitTest utilizza un Ray per determinare quali contenuti interseca e per creare un Anchor da quella posizione. Valuta la possibilità di eseguire un test hitTest da un InputEvent.

Problemi noti

  • Potrebbe verificarsi un ritardo tra la chiamata a unpersist e la rimozione del relativo UUID dai risultati restituiti da getPersistedAnchorUuids.

  • create non verificherà che il sistema disponga di risorse sufficienti per restituire nuovi ancoraggi. La creazione di un numero eccessivo di ancore potrebbe causare un arresto anomalo.

  • Al momento non è supportato il mantenimento di un ancoraggio che è stato precedentemente mantenuto e rimosso.

  • L'utilizzo nell'emulatore è supportato, ma il comportamento potrebbe non essere stabile come quando viene eseguito su un dispositivo reale. In particolare, le chiamate a create potrebbero non riuscire a causa di un errore di codice nativo e interrompere immediatamente l'attività.

  • In alcuni casi, potrebbe essere generato erroneamente un RuntimeException quando viene chiamato persist con il messaggio "Anchor was not persisted" (L'ancora non è stata salvata). In questi casi, la funzione avrà comunque esito positivo e l'ancora verrà salvata. Come soluzione alternativa, ti consigliamo di racchiudere la chiamata a persist in un blocco try.