Jetpack XR の ARCore を使用する

Jetpack XR の ARCore を使用すると、アプリは低レベルのシーンの理解プリミティブとモーション トラッキングを使用して、拡張現実(AR)の基本コンセプトを操作できます。AR エクスペリエンスを構築する際に、平面データを使用するか、空間内の固定された場所にコンテンツを固定する必要がある場合は、Jetpack XR の ARCore を使用します。

Session のライフサイクルについて

Jetpack XR の ARCore によってトラッキングされるすべてのオブジェクトには、Session を介してアクセスする必要があります。アクティビティのライフサイクルと同様に、Session オブジェクトにもライフサイクルがあり、アプリで Session オブジェクトの機能をどのように使用しているかに応じて維持する必要があります。アプリに XR 対応のアクティビティが 1 つしかない場合は、ライフサイクル対応コンポーネントを使用して Session のライフサイクルを処理することを検討してください。

Session にアクセスする

Jetpack XR で ARCore を使用する場合は、Session作成する必要があります。

XR 用 Jetpack Compose を使用する場合は、LocalSession を使用して、自動的に作成されたセッションにアクセスします。

セッションを再開する

セッションを再開するタイミングは、アプリが ARCore for Jetpack XR からの状態変化を処理する準備ができたときです。多くの場合、これはアクティビティの 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`.
    }
}

Session が再開できない理由については、SessionResumeResult をご覧ください。

セッションを一時停止する

アクティビティがバックグラウンドに移行したら、[Session.pause()][Session.pause] を使用して Session を一時停止します。セッションを一時停止すると、セッションが再開されるまでトラッキングが一時的に停止し、認識システムの状態が維持されます。

セッションを破棄する

Session を完全に破棄するには、[Session.destroy()][Session.destroy] を使用します。これにより、セッションで使用されているリソースが解放され、すべてのセッション状態が破棄されます。

関連ドキュメント