O SDK do Android XR agora está disponível na prévia para desenvolvedores. Queremos saber sua opinião Acesse nossa página de suporte para entrar em contato.
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O ARCore para Jetpack XR pode detectar superfícies planas no ambiente do usuário e fornecer informações sobre elas, como posição, tamanho e orientação. Isso pode ajudar seu app a encontrar superfícies como mesas para colocar objetos.
A detecção de planos não está ativada por padrão nas sessões de RV/RA. Para ativar o rastreamento de planos, configure a sessão e defina o modo PlaneTrackingMode.HORIZONTAL_AND_VERTICAL:
valnewConfig=session.config.copy(planeTracking=Config.PlaneTrackingMode.HORIZONTAL_AND_VERTICAL,)when(valresult=session.configure(newConfig)){isSessionConfigureConfigurationNotSupported->
TODO(/* Some combinations of configurations are not valid. Handle this failure case. */)isSessionConfigureSuccess->TODO(/* Success! */)else->
TODO(/* A different unhandled exception was thrown. */)}
O ARCore para Jetpack XR fornece o estado dos planos por um
StateFlow que emite o estado dos planos. Ao assinar
planos em uma sessão, seu app recebe uma notificação quando planos são adicionados, atualizados ou
removidos.
Plane.subscribe(session).collect{planes->
// Planes have changed; update plane rendering}
centerPose: a postura do centro do plano detectado.
extents: as dimensões do plano detectado, em metros.
vertices: uma lista de vértices de um polígono convexo que se aproxima do plano.
Realizar um teste de hit em planos
Um teste de hit é um método de calcular a interseção de um raio com objetos
rastreados pela sessão. Uma aplicação comum de um teste de hit é apontar para uma mesa e colocar um objeto nesse local. A realização de um teste de hit resulta em uma lista de objetos atingidos. Em outras palavras, um teste de ocorrência não para no primeiro objeto
atingido. No entanto, muitas vezes, você pode ter interesse apenas no primeiro acerto de objeto de um
determinado tipo.
valresults=androidx.xr.arcore.hitTest(session,ray)// When interested in the first Table hit:valtableHit=results.firstOrNull{valtrackable=it.trackabletrackableisPlane && trackable.state.value.label==Plane.Label.TABLE}
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-08-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-27 UTC."],[],[],null,["ARCore for Jetpack XR can detect flat surfaces in the user's environment and\nprovide information on them such as their pose, size, and orientation. This can\nhelp your app find surfaces like tables to place objects on.\n\nCreate an ARCore for Jetpack XR session\n\nAccess plane information through an ARCore for Jetpack XR session. See\n[Understand a Session's lifecycle](/develop/xr/jetpack-xr-sdk/work-with-arcore#session-lifecycle) to obtain a [`Session`](/reference/kotlin/androidx/xr/runtime/Session).\n\nConfigure the Session\n\nPlane detection is not enabled by default on XR sessions. To enable plane\ntracking, configure the session and set the\n[`PlaneTrackingMode.HORIZONTAL_AND_VERTICAL`](/reference/kotlin/androidx/xr/runtime/Config.PlaneTrackingMode#HORIZONTAL_AND_VERTICAL()) mode:\n\n\n```kotlin\nval newConfig = session.config.copy(\n planeTracking = Config.PlaneTrackingMode.HORIZONTAL_AND_VERTICAL,\n)\nwhen (val result = session.configure(newConfig)) {\n is SessionConfigureConfigurationNotSupported -\u003e\n TODO(/* Some combinations of configurations are not valid. Handle this failure case. */)\n is SessionConfigureSuccess -\u003e TODO(/* Success! */)\n else -\u003e\n TODO(/* A different unhandled exception was thrown. */)\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/xr/src/main/java/com/example/xr/arcore/Planes.kt#L30-L39\n```\n\n\u003cbr /\u003e\n\n| **Note:** Plane tracking requires the `android.permission.SCENE_UNDERSTANDING_COARSE` [runtime permission](/training/permissions/requesting) to be granted to your app.\n\nRetrieve the state of perceived planes\n\nARCore for Jetpack XR provides the state of planes through a\n[`StateFlow`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/) that emits the state of planes. Subscribing to\nplanes in a session notifies your app when planes are added, updated, or\nremoved.\n\n\n```kotlin\nPlane.subscribe(session).collect { planes -\u003e\n // Planes have changed; update plane rendering\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/xr/src/main/java/com/example/xr/arcore/Planes.kt#L45-L47\n```\n\n\u003cbr /\u003e\n\nA plane has the following properties:\n\n- [`label`](/reference/kotlin/androidx/xr/arcore/Plane.State#label()): a semantic description of a given [`Plane`](/reference/kotlin/androidx/xr/arcore/Plane). Could be a [`WALL`](/reference/kotlin/androidx/xr/arcore/Plane.Label#WALL()), [`FLOOR`](/reference/kotlin/androidx/xr/arcore/Plane.Label#FLOOR()), [`CEILING`](/reference/kotlin/androidx/xr/arcore/Plane.Label#CEILING()), or [`TABLE`](/reference/kotlin/androidx/xr/arcore/Plane.Label#TABLE()).\n- [`centerPose`](/reference/kotlin/androidx/xr/arcore/Plane.State#centerPose()): The pose of the center of the detected plane.\n- [`extents`](/reference/kotlin/androidx/xr/arcore/Plane.State#extents()): The dimensions of the detected plane, in meters.\n- [`vertices`](/reference/kotlin/androidx/xr/arcore/Plane.State#vertices()): A list of vertices of a convex polygon that approximates the plane.\n\nPerform a hit-test against planes\n\nA hit-test is a method of calculating the intersection of a ray with objects\ntracked by the session. A common application of a hit-test is to point at a\ntable and place an object at that location. Conducting a hit-test results in a\nlist of hit objects. In other words, a hit-test doesn't stop at the first object\nhit. However, often you may only be interested in the first object hit of a\ngiven type.\n\nTo perform a hit-test, use [`Interaction.hitTest()`](/reference/kotlin/androidx/xr/arcore/package-summary#hittest) with a [`Ray`](/reference/kotlin/androidx/xr/runtime/math/Ray):\n\n\n```kotlin\nval results = androidx.xr.arcore.hitTest(session, ray)\n// When interested in the first Table hit:\nval tableHit = results.firstOrNull {\n val trackable = it.trackable\n trackable is Plane && trackable.state.value.label == Plane.Label.TABLE\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/xr/src/main/java/com/example/xr/arcore/Planes.kt#L55-L60\n```\n\n\u003cbr /\u003e"]]