借助适用于 Jetpack XR 的 ARCore,应用可以使用低级场景理解基元和动作跟踪来处理增强现实 (AR) 的基本概念。在构建 AR 体验时,如果您需要使用平面数据或将内容锚定到空间中的固定位置,请使用适用于 Jetpack XR 的 ARCore。
了解会话的生命周期
必须通过会话访问 ARCore for Jetpack XR 跟踪的所有对象。与 activity 的生命周期类似,会话对象也具有生命周期,必须根据应用对会话对象功能的使用情况进行维护。如果您的应用包含一个支持 XR 的 activity,请考虑使用生命周期感知型组件处理会话的生命周期。
创建会话
必须先创建会话,然后才能使用。如需创建会话,用户必须已向您的应用授予 android.permission.SCENE_UNDERSTANDING
和 android.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()
。这会释放会话使用的资源,并销毁所有会话状态。