Jetpack Compose cho XR

Tạo bố cục giao diện người dùng không gian theo cách khai báo để tận dụng các tính năng không gian của Android XR.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 12 tháng 2 năm 2025 - - - 1.0.0-alpha02

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên XR Compose, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

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")
}

Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.0

Phiên bản 1.0.0-alpha02

Ngày 12 tháng 2 năm 2025

Phát hành androidx.xr.compose:compose:1.0.0-alpha02androidx.xr.compose:compose-testing:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Giờ đây, Bảng điều khiển hoạt động có thể thu nhỏ nội dung khi Hộp thoại không gian được kích hoạt.
  • API Orbiter hiện có thể sử dụng trong ngữ cảnh SubspaceComposable và sẽ đính kèm Orbiter vào thành phần mẹ có khả năng kết hợp dựa trên SubspaceLayout gần nhất.
  • Giới thiệu LayoutCoordinatesAwareModifierNode để cho phép các đối tượng sửa đổi dựa trên vị trí tuỳ chỉnh.
  • Thêm các phương thức vòng đời đính kèm/nhả vào SubspaceModifier.Node.
  • Thêm scaleWithDistance vào đối tượng sửa đổi có thể di chuyển. Khi scaleWithDistance được bật, phần tử không gian con đã di chuyển sẽ tăng hoặc giảm. Khung này cũng sẽ duy trì mọi tỷ lệ rõ ràng mà nó có trước khi di chuyển.

Thay đổi về API

  • Xoá SessionCallbackProvider và thay bằng SpatialCapabilities.

Các thay đổi khác

  • Giảm minSDK xuống 24. Tất cả API Jetpack XR vẫn yêu cầu API 34 trong thời gian chạy.
  • Hàm khởi tạo Orbiter EdgeOffset.inner, EdgeOffset.outerEdgeOffset.overlap không còn là phương thức @Composable, cho phép sử dụng các hàm này trong ngữ cảnh không có khả năng kết hợp.
  • Cập nhật Cấp độ độ cao không gian để phù hợp với thông số kỹ thuật mới nhất về trải nghiệm người dùng.
  • Triển khai giao diện SubspaceSemanticsInfo vào MeasurableLayout.
  • Đổi tên SubspaceModifierElement thành SubspaceModifierNodeElement.

Sửa lỗi

  • Sửa lỗi để ổn định thứ tự SubspaceModifier. SubspaceModifier sẽ hoạt động ổn định hơn. Giờ đây, bạn có thể sử dụng đối tượng sửa đổi độ lệch, xoay, tỷ lệ, có thể di chuyển và đổi kích thước theo thứ tự bất kỳ.

Phiên bản 1.0.0-alpha01

Ngày 12 tháng 12 năm 2024

Phát hành androidx.xr.compose:compose-*1.0.0-alpha01.

Các tính năng của bản phát hành ban đầu

  • Bản phát hành đầu tiên dành cho nhà phát triển của Jetpack Compose cho XR. Sử dụng các khái niệm quen thuộc trong Compose như hàng và cột để tạo bố cục giao diện người dùng không gian trong XR, cho dù bạn đang chuyển một ứng dụng 2D hiện có sang XR hay tạo một ứng dụng XR mới từ đầu. Thư viện này cung cấp các thành phần kết hợp không gian con và không gian: chẳng hạn như bảng điều khiển không gian và vệ tinh, cho phép bạn đặt giao diện người dùng 2D Compose hoặc Views hiện có trong bố cục không gian. Phiên bản này giới thiệu thành phần kết hợp không gian con Volume, cho phép bạn đặt các thực thể SceneCore, chẳng hạn như mô hình 3D, tương ứng với giao diện người dùng. Tìm hiểu thêm trong hướng dẫn dành cho nhà phát triển này:

    • Subspace: Bạn có thể đặt thành phần kết hợp này ở bất kỳ vị trí nào trong hệ phân cấp giao diện người dùng của ứng dụng, cho phép bạn duy trì bố cục cho giao diện người dùng 2D và không gian mà không làm mất ngữ cảnh giữa các tệp. Điều này giúp bạn dễ dàng chia sẻ những thứ như cấu trúc ứng dụng hiện có giữa XR và các hệ số hình dạng khác mà không cần chuyển trạng thái lên trên toàn bộ cây giao diện người dùng hoặc thiết kế lại ứng dụng.

    • SpatialPanel: Bảng điều khiển không gian là một thành phần kết hợp không gian con cho phép bạn hiển thị nội dung ứng dụng – ví dụ: bạn có thể hiển thị chế độ phát video, hình ảnh tĩnh hoặc bất kỳ nội dung nào khác trong bảng điều khiển không gian.

    • Vệ tinh nhân tạo: Vệ tinh nhân tạo là một thành phần giao diện người dùng không gian. Thành phần này được thiết kế để đính kèm vào một bảng điều khiển không gian tương ứng và chứa các mục thao tác điều hướng và theo ngữ cảnh liên quan đến bảng điều khiển không gian đó. Ví dụ: nếu đã tạo một bảng điều khiển không gian để hiển thị nội dung video, bạn có thể thêm các nút điều khiển phát video bên trong một vệ tinh nhân tạo.

    • Thể tích: Đặt các thực thể SceneCore, chẳng hạn như mô hình 3D, tương ứng với giao diện người dùng.

  • Bố cục không gian: Bạn có thể tạo nhiều bảng điều khiển không gian và đặt các bảng điều khiển đó trong một Bố cục không gian bằng cách sử dụng SpatialRow, SpatialColumn, SpatialBoxSpatialLayoutSpacer. Sử dụng SubspaceModifier để tuỳ chỉnh bố cục.

  • Thành phần giao diện người dùng không gian: Bạn có thể sử dụng lại các phần tử này trong giao diện người dùng 2D và các thuộc tính không gian của chúng sẽ chỉ hiển thị khi bạn bật các tính năng không gian.

    • SpatialDialog: Bảng điều khiển sẽ đẩy nhẹ về sau theo chiều sâu z để hiển thị hộp thoại nâng cao.
    • SpatialPopUp: Bảng điều khiển sẽ đẩy nhẹ về sau trong chiều sâu z để hiển thị một cửa sổ bật lên nâng cao
    • SpatialElevation: Bạn có thể đặt SpatialElevationLevel để thêm độ cao.
  • SpatialCapabilities: Các chức năng không gian có thể thay đổi khi người dùng tương tác với ứng dụng hoặc hệ thống, hoặc thậm chí có thể do chính ứng dụng của bạn thay đổi, ví dụ: chuyển sang Không gian chính hoặc Không gian toàn màn hình. Để tránh các vấn đề, ứng dụng của bạn cần kiểm tra LocalSpatialCapabilities.current để xác định những API nào được hỗ trợ trong môi trường hiện tại. isSpatialUiEnabled: Các thành phần giao diện người dùng không gian (ví dụ: SpatialPanel) isContent3dEnabled: Các đối tượng 3D isAppEnvironmentEnabled: Môi trường isPassthroughControlEnabled: Liệu ứng dụng có thể kiểm soát trạng thái truyền qua hay không isSpatialAudioEnabled: Âm thanh không gian

Lỗi đã biết

  • Hiện tại, bạn cần có minSDK 30 để sử dụng Jetpack Compose cho XR. Để khắc phục, bạn có thể thêm mục nhập tệp kê khai <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> sau đây để có thể tạo và chạy với minSDK là 23.
  • Các ứng dụng Jetpack XR hiện yêu cầu bạn phải yêu cầu quyền android.permission.SCENE_UNDERSTANDING trong AndroidManifest.
  • Khi một ứng dụng chạy trực tiếp vào Không gian toàn màn hình bằng cách sử dụng thuộc tính PROPERTY_XR_ACTIVITY_START_MODE trong tệp kê khai, Hoạt động/Ứng dụng ban đầu sẽ được mở trong Không gian chính trước khi chuyển sang Không gian toàn màn hình.
  • Ban đầu, glTF trong các thành phần kết hợp Volume có thể nhấp nháy ở vị trí không chính xác.
  • Việc sử dụng SpatialDialog trong một bảng điều khiển đã được di chuyển đáng kể sẽ đẩy nội dung theo hướng không chính xác.