XR 向け Jetpack Compose

Android XR の空間機能を活用する空間 UI レイアウトを宣言的に構築します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
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 に対して配置します。

  • 空間レイアウト: SpatialRowSpatialColumnSpatialBoxSpatialLayoutSpacer を使用して、複数の空間パネルを作成し、空間レイアウト内に配置できます。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 を使用すると、コンテンツが間違った方向に移動します。