XR 向け Jetpack Compose
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2024 年 12 月 12 日 | - | - | - | 1.0.0-alpha01 |
依存関係の宣言
XR Compose への依存関係を追加するには、Google Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha01") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.0
バージョン 1.0.0-alpha01
2024 年 12 月 12 日
androidx.xr.compose:compose-*1.0.0-alpha01
がリリースされました。
初回リリースの機能
XR 向け Jetpack Compose の最初のデベロッパー リリース。既存の 2D アプリを XR に移植する場合でも、新しい XR アプリをゼロから作成する場合でも、行や列などの使い慣れた Compose のコンセプトを使用して、XR で空間 UI レイアウトを作成できます。このライブラリには、空間パネルやオービターなどのサブスペースと空間コンポーザブルが用意されています。これにより、既存の 2D Compose またはビューベースの UI を空間レイアウトに配置できます。Volume サブスペース コンポーザブルが導入され、3D モデルなどの SceneCore エンティティを UI を基準として配置できるようになりました。詳しくは、デベロッパー ガイドをご覧ください。
Subspace
: このコンポーザブルはアプリの UI 階層内の任意の場所に配置できるため、ファイル間のコンテキストを失うことなく、2D と空間 UI のレイアウトを維持できます。これにより、UI ツリー全体で状態をホイスティングしたり、アプリを再設計したりすることなく、XR と他のフォーム ファクタ間で既存のアプリ アーキテクチャなどを簡単に共有できます。SpatialPanel: 空間パネルは、アプリのコンテンツを表示できるサブスペース コンポーザブルです。たとえば、動画の再生、静止画像、その他のコンテンツを空間パネルに表示できます。
Orbiter: Orbiter は空間 UI コンポーネントです。対応する空間パネルに接続するように設計されており、その空間パネルに関連するナビゲーション アイテムとコンテキスト アクション アイテムが含まれています。たとえば、動画コンテンツを表示する空間パネルを作成した場合は、オービター内に動画再生コントロールを追加できます。
ボリューム: 3D モデルなどの SceneCore エンティティを UI に対して配置します。
空間レイアウト:
SpatialRow
、SpatialColumn
、SpatialBox
、SpatialLayoutSpacer
を使用して、複数の空間パネルを作成し、空間レイアウト内に配置できます。SubspaceModifier
を使用してレイアウトをカスタマイズします。空間 UI コンポーネント: これらの要素は 2D UI で再利用できます。空間属性は、空間機能が有効になっている場合にのみ表示されます。
SpatialDialog
: パネルが Z 深度で少し後退し、エレベートされたダイアログが表示されます。SpatialPopUp
: パネルが Z 深度で少し後退し、エレベートされたポップアップが表示されます。SpatialElevation
:SpatialElevationLevel
を設定すると、標高を追加できます。
SpatialCapabilities: 空間機能は、ユーザーがアプリやシステムを操作するときに変更される場合があります。また、アプリ自体によって変更される場合もあります(ホーム空間やフルスペースに移動するなど)。問題を回避するには、アプリで
LocalSpatialCapabilities.current
をチェックして、現在の環境でサポートされている API を特定する必要があります。isSpatialUiEnabled
: 空間 UI 要素(SpatialPanel など)isContent3dEnabled
: 3D オブジェクトisAppEnvironmentEnabled
: 環境isPassthroughControlEnabled
: アプリがパススルー状態を制御できるかどうかisSpatialAudioEnabled
: 空間オーディオ
既知の問題
- 現在、XR 向けの Jetpack Compose を使用するには、minSDK 30 が必要です。回避策として、次のマニフェスト エントリ
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
を追加して、minSDK 23 でビルドして実行できるようにします。 - 現在、Jetpack XR アプリでは、AndroidManifest で
android.permission.SCENE_UNDERSTANDING
権限をリクエストする必要があります。 - マニフェストの
PROPERTY_XR_ACTIVITY_START_MODE
プロパティを使用してアプリがフルスペースに直接起動されると、アクティビティ/アプリは最初にホームスペースで開かれ、その後フルスペースに移行します。 - Volume コンポーザブルの glTF が、最初は間違った場所でちらつくことがあります。
- 大幅に移動されたパネルで SpatialDialog を使用すると、コンテンツが間違った方向に移動します。