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 可能容易發生洩漏。