访问会话以创建空间化界面和实体

适用的 XR 设备
本指南可帮助您为以下类型的 XR 设备打造优质体验。
扩展现实头戴设备
有线扩展现实眼镜

Session 为应用提供空间化功能的主接口。每个空间化 Activity 都必须创建并保留一个 Session 实例。应用创建会话后,可以使用 Session 接口创建空间化内容实体(例如面板或 3D 模型),以及设置空间环境、识别用户位置和将内容锚定到现实世界。

从 Jetpack Compose for XR 访问会话

使用 Jetpack Compose for XR 时,系统会为您创建会话,您可以使用 LocalSession.current 访问该会话。具体请参阅下例:

@Composable
fun ComposableUsingSession() {
    val session = LocalSession.current
}

从 Jetpack XR 运行时访问会话

如果您要从 Jetpack SceneCore 库创建空间化实体,则需要创建一个会话。

如需创建会话,请将 Context 传递给 create() 方法。此 Context 可以是沉浸式 XR 设备或移动设备上的 Activity,也可以是智能眼镜上的投影上下文。

创建 ARCore 会话可能是一项开销很大的任务,应在后台处理,如以下示例所示:

lifecycleScope.launch {
    when (val result = Session.create(context)) {
        is SessionCreateSuccess -> {
            val xrSession = result.session
            // ...
        }
        else ->
            TODO(/* A different unhandled exception was thrown. */)
    }
}

create() 函数可以使用可选的 LifecycleOwner 参数,该参数允许由其他 LifecycleOwner 管理会话的生命周期。LifecycleOwner 必须在所提供上下文的范围内开始和结束其生命周期,否则 Session 可能会容易发生泄漏。

另请参阅