Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@ kotlin.code.style=official

# Enable R8 full mode.
android.enableR8.fullMode=true

# Use an AndroidX snapshot build.
# https://androidx.dev/snapshots/builds
# snapshotVersion=14793336
2 changes: 1 addition & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
val snapshotVersion: String? = System.getenv("COMPOSE_SNAPSHOT_ID")
val snapshotVersion: String? by settings

pluginManagement {
repositories {
Expand Down
23 changes: 19 additions & 4 deletions xr/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,20 @@ android {
}
}

val useSnapshot = providers.gradleProperty("snapshotVersion").orNull != null
dependencies {
implementation(libs.androidx.xr.arcore)
implementation(libs.androidx.arcore.play.services)
if (useSnapshot) {
snapshotImplementation(libs.androidx.xr.arcore)
snapshotImplementation(libs.androidx.arcore.play.services)
snapshotImplementation(libs.androidx.xr.scenecore)
snapshotImplementation(libs.androidx.xr.compose)
} else {
implementation(libs.androidx.xr.arcore)
implementation(libs.androidx.arcore.play.services)
implementation(libs.androidx.xr.scenecore)
implementation(libs.androidx.xr.compose)
}
Comment on lines +35 to +45
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The if/else block for handling snapshot dependencies introduces code duplication. The same list of dependencies is declared in both branches. This can be simplified to avoid repetition and improve maintainability by defining the list of dependencies once.

    val xrDependencies = listOf(
        libs.androidx.xr.arcore,
        libs.androidx.arcore.play.services,
        libs.androidx.xr.scenecore,
        libs.androidx.xr.compose
    )
    if (useSnapshot) {
        xrDependencies.forEach { snapshotImplementation(it) }
    } else {
        xrDependencies.forEach { implementation(it) }
    }

implementation(libs.google.ar.core)
implementation(libs.androidx.xr.scenecore)
implementation(libs.androidx.xr.compose)

implementation(libs.androidx.activity.ktx)

Expand Down Expand Up @@ -71,3 +79,10 @@ dependencies {
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.appcompat)
}

fun DependencyHandler.snapshotImplementation(dependencyNotation: Provider<MinimalExternalModuleDependency>) {
val shim = dependencyNotation.get()
implementation("${shim.group}:${shim.name}:1.0.0-SNAPSHOT") {
exclude(module = "impress")
}
}
4 changes: 2 additions & 2 deletions xr/src/main/java/com/example/xr/arcore/Anchors.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package com.example.xr.arcore
import androidx.xr.arcore.Anchor
import androidx.xr.arcore.AnchorCreateSuccess
import androidx.xr.arcore.Trackable
import androidx.xr.runtime.Config
import androidx.xr.runtime.AnchorPersistenceMode
import androidx.xr.runtime.Session
import androidx.xr.runtime.SessionConfigureSuccess
import androidx.xr.runtime.math.Pose
Expand All @@ -30,7 +30,7 @@ import androidx.xr.scenecore.scene
fun configureAnchoring(session: Session) {
// [START androidxr_arcore_anchoring_configure]
val newConfig = session.config.copy(
anchorPersistence = Config.AnchorPersistenceMode.LOCAL,
anchorPersistence = AnchorPersistenceMode.LOCAL,
)
when (val result = session.configure(newConfig)) {
is SessionConfigureSuccess -> TODO(/* Success! */)
Expand Down
4 changes: 2 additions & 2 deletions xr/src/main/java/com/example/xr/arcore/DepthMaps.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@
package com.example.xr.arcore

import androidx.xr.arcore.DepthMap
import androidx.xr.runtime.Config
import androidx.xr.runtime.DepthEstimationMode
import androidx.xr.runtime.Session
import androidx.xr.runtime.SessionConfigureSuccess

private fun configureDepthEstimation(session: Session) {
// [START androidxr_arcore_depthmaps_configure]
val newConfig = session.config.copy(
depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY,
depthEstimation = DepthEstimationMode.SMOOTH_ONLY,
)
when (val result = session.configure(newConfig)) {
is SessionConfigureSuccess -> TODO(/* Success! */)
Expand Down
4 changes: 2 additions & 2 deletions xr/src/main/java/com/example/xr/arcore/FaceTracking.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ package com.example.xr.arcore
import androidx.xr.arcore.Face
import androidx.xr.arcore.FaceBlendShapeType
import androidx.xr.arcore.FaceConfidenceRegion
import androidx.xr.runtime.Config
import androidx.xr.runtime.FaceTrackingMode
import androidx.xr.runtime.Session
import androidx.xr.runtime.SessionConfigureSuccess
import androidx.xr.runtime.TrackingState

private fun configureFaceTracking(session: Session) {
// [START androidxr_arcore_faceTracking_configure]
val newConfig = session.config.copy(
faceTracking = Config.FaceTrackingMode.USER,
faceTracking = FaceTrackingMode.BLEND_SHAPES,
)
when (val result = session.configure(newConfig)) {
is SessionConfigureSuccess -> TODO(/* Success! */)
Expand Down
4 changes: 2 additions & 2 deletions xr/src/main/java/com/example/xr/arcore/Hands.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import androidx.activity.ComponentActivity
import androidx.lifecycle.lifecycleScope
import androidx.xr.arcore.Hand
import androidx.xr.arcore.HandJointType
import androidx.xr.runtime.Config
import androidx.xr.runtime.HandTrackingMode
import androidx.xr.runtime.Session
import androidx.xr.runtime.SessionConfigureSuccess
import androidx.xr.runtime.math.Pose
Expand All @@ -36,7 +36,7 @@ import kotlinx.coroutines.launch
fun ComponentActivity.configureSession(session: Session) {
// [START androidxr_arcore_hand_configure]
val newConfig = session.config.copy(
handTracking = Config.HandTrackingMode.BOTH
handTracking = HandTrackingMode.BOTH
)
when (val result = session.configure(newConfig)) {
is SessionConfigureSuccess -> TODO(/* Success! */)
Expand Down
4 changes: 2 additions & 2 deletions xr/src/main/java/com/example/xr/arcore/Planes.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ package com.example.xr.arcore

import androidx.xr.arcore.ArDevice
import androidx.xr.arcore.Plane
import androidx.xr.runtime.Config
import androidx.xr.runtime.PlaneTrackingMode
import androidx.xr.runtime.Session
import androidx.xr.runtime.SessionConfigureSuccess
import androidx.xr.runtime.math.Ray

fun configurePlaneTracking(session: Session) {
// [START androidxr_arcore_planetracking_configure]
val newConfig = session.config.copy(
planeTracking = Config.PlaneTrackingMode.HORIZONTAL_AND_VERTICAL,
planeTracking = PlaneTrackingMode.HORIZONTAL_AND_VERTICAL,
)
when (val result = session.configure(newConfig)) {
is SessionConfigureSuccess -> TODO(/* Success! */)
Expand Down
Loading