Android XR SDK'sı artık Geliştirici Önizlemesi'nde kullanılabilir. Geri bildirimlerinizi bekliyoruz! Bizimle iletişime geçmek için destek sayfamızı ziyaret edin.
Jetpack XR için ARCore'u kullanarak uçakları algılama
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Jetpack XR için ARCore, kullanıcının ortamındaki düz yüzeyleri algılayabilir ve bu yüzeylerle ilgili poz, boyut ve yön gibi bilgiler sağlayabilir. Bu, uygulamanızın nesneleri yerleştirebileceği masalar gibi yüzeyleri bulmasına yardımcı olabilir.
Düzlem algılama, XR oturumlarında varsayılan olarak etkin değildir. Düzlem izlemeyi etkinleştirmek için oturumu yapılandırın ve PlaneTrackingMode.HORIZONTAL_AND_VERTICAL modunu ayarlayın:
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. */)}
Jetpack XR için ARCore, düzlemlerin durumunu düzlemlerin durumunu yayan bir StateFlow aracılığıyla sağlar. Bir oturumda düzlemlere abone olmak, düzlemler eklendiğinde, güncellendiğinde veya kaldırıldığında uygulamanızı bilgilendirir.
Plane.subscribe(session).collect{planes->
// Planes have changed; update plane rendering}
extents: Algılanan düzlemin metre cinsinden boyutları.
vertices: Düzlemi yaklaşık olarak temsil eden dışbükey bir poligonun köşe listesi.
Düzlemlere karşı isabet testi gerçekleştirme
Vuruş testi, bir ışının oturum tarafından izlenen nesnelerle kesişimini hesaplama yöntemidir. Vurma testinin yaygın bir uygulaması, bir masayı işaretleyip o konuma bir nesne yerleştirmektir. İsabet testi yapıldığında isabet eden nesnelerin listesi oluşturulur. Diğer bir deyişle, isabet testi ilk isabet eden nesnede durmaz. Ancak genellikle belirli bir türdeki ilk nesne isabetiyle ilgilenirsiniz.
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}
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-08-28 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-08-28 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"]]