空間化された UI とエンティティを作成するためのセッションにアクセスする

対象となる XR デバイス
このガイダンスは、次のようなタイプの XR デバイス向けのエクスペリエンスを構築する際に役立ちます。
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 がリークしやすくなります。

関連情報