使用适用于 Jetpack XR 的 ARCore

借助适用于 Jetpack XR 的 ARCore,应用可以使用低级场景理解基元和动作跟踪来处理增强现实 (AR) 的基本概念。在构建 AR 体验时,如果您需要使用平面数据或将内容锚定到空间中的固定位置,请使用适用于 Jetpack XR 的 ARCore。

了解会话的生命周期

必须通过会话访问 ARCore for Jetpack XR 跟踪的所有对象。与 activity 的生命周期类似,会话对象也具有生命周期,必须根据应用对会话对象功能的使用情况进行维护。如果您的应用包含一个支持 XR 的 activity,请考虑使用生命周期感知型组件处理会话的生命周期。

创建会话

必须先创建会话,然后才能使用。如需创建会话,用户必须已向您的应用授予 android.permission.SCENE_UNDERSTANDINGandroid.permission.HAND_TRACKING 权限

如需创建会话,请执行以下操作:

when (val result = Session.create(owner)) {
  is SessionCreateSuccess -> {
    session = result.session
  }
  is SessionCreatePermissionsNotGranted -> {
   // Request permissions in `result.permissions`.
}

如需了解会导致会话创建失败的原因,请参阅 SessionCreateResult

继续会话

当应用准备好处理来自 ARCore for Jetpack XR 的状态更改时,应恢复会话。在许多情况下,这可以在 activity 的 onResume() 回调中完成,但您的应用可能希望延迟处理,直到用户互动。

以下代码段显示了恢复会话的示例。

when (val result = session.resume()) {
  is SessionResumeSuccess -> {
    // Session has been created successfully.
    // Attach any successful handlers here.
  }
  is SessionResumePermissionsNotGranted -> {
    // Request permissions in `result.permissions`.
}

如需了解会话无法恢复的原因,请参阅 SessionResumeResult

暂停会话

当 activity 进入后台时,使用 Session.pause() 暂停会话。暂停会话会暂时停止跟踪,直到会话恢复为止,同时会保持感知系统的状态。

销毁会话

如需永久处置会话,请使用 Session.destroy()。这会释放会话使用的资源,并销毁所有会话状态。

另请参阅