Jetpack Compose cho 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 7 tháng 5 năm 2025 | - | - | - | 1.0.0-alpha04 |
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:
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha04" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha04" }
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha04") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha04") }
Để 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.
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-alpha04
Ngày 7 tháng 5 năm 2025
Phát hành androidx.xr.compose:compose:1.0.0-alpha04
và androidx.xr.compose:compose-testing:1.0.0-alpha04
. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Thêm giao diện
CompositionLocalConsumerSubspaceModifierNode
để cho phép các loạiSubspaceModifier
tuỳ chỉnh truy cập vào các giá trị cục bộ của thành phần. - Thêm một API
SpatialPanel
mới tuân theo kiểu triển khaiAndroidView
của Compose và ngừng sử dụngViewBased SpatialPanel
trước đó. - Thêm đối tượng đồng hành
VolumeConstraints.Unbounded
đại diện cho các quy tắc ràng buộc không ràng buộc. - Thêm
SubspaceModifier.onPointSourceParams
để cho phép nguồn âm thanh không gian. - Thêm
ApplicationSubspace
công khai, cung cấpVolumeConstraints
không bắt buộc để xác định vùng 3D mà ứng dụng có thể hiển thị nội dung không gian. Theo mặc định, nếu không có quy tắc ràng buộc nào được chỉ định, thì Không gian con sẽ được giới hạn bởi trường nhìn hiện tại củaSpatialUser
theo chiều rộng và chiều cao. Người dùng có thể cung cấp các quy tắc ràng buộc để sử dụng nếu không xác định được trường nhìn. Nếu không, các giá trị chiều rộng và chiều cao của trường nhìn mặc định sẽ được sử dụng. - Thêm
SpatialExternalSurface
có thể dùng để kết xuất nội dung 3D. Bạn có thể tuỳ chỉnhSpatialExternalSurface
bằng các đối tượng sửa đổi (ngoại trừ alpha) và hiệu ứng làm mềm cạnh. - Thêm Đối tượng sửa đổi không gian con
pointerHoverIcon
mới cho phép người dùng đặt biểu tượng cho con trỏ không gian.
Thay đổi về API
- Xoá hạn chế
RequiresApi(34)
trên tất cả gói Jetpack XR. Quy định hạn chế này là thừa vì Jetpack XR hiện chỉ có trên các thiết bị có API cấp 34 trở lên. (Iae0f8) - Các dự án phát hành bằng Kotlin 2.0 yêu cầu sử dụng KGP 2.0.0 trở lên. (Idb6b5)
- Giờ đây, tính năng xử lý thao tác quay lại sẽ hoạt động trên các bảng không gian mà không cần các hoạt động được nhúng. Để tính năng xử lý thao tác quay lại hoạt động, bạn cần chỉ định
android:enableOnBackInvokedCallback="true"
trong tệp kê khai Android. - Giờ đây, tính năng xử lý thao tác quay lại sẽ hoạt động trên hộp thoại không gian. Để tính năng xử lý lui hoạt động, bạn cần chỉ định
android:enableOnBackInvokedCallback="true"
trong tệp kê khai Android. - Giờ đây,
SpatialPanel
dựa trên Compose và Khung hiển thị có thể tự định cỡ dựa trên nội dung của chúng. - Giờ đây, nhà phát triển có thể đặt giá trị
SpatialElevationLevel
tuỳ chỉnh của riêng mình và không bị giới hạn ở các cấp được xác định trước. - Giờ đây, bạn có thể tuỳ chỉnh độ cao của vệ tinh nhân tạo thông qua thông số
elevation
. - Theo mặc định, không gian con có thể được giới hạn bởi trường nhìn của
SpatialUser
theo chiều rộng và chiều cao. Nếu không xác định được trường nhìn, thì các giá trị chiều rộng và chiều cao của trường nhìn mặc định sẽ được sử dụng. - Thêm lệnh gọi lại mới
onMoveStart
vàonMoveEnd
vào đối tượng sửa đổiMovable
. Lệnh gọi lạionMoveStart
vàonMoveEnd
được gọi khi người dùng bắt đầu và kết thúc việc di chuyển một thành phần kết hợp không gian con bằng đối tượng sửa đổi có thể di chuyển. - Tham số
name
đã bị xoá khỏi các API không gian nhưSpatialRow
vàSpatialPanel
. Để gỡ lỗi cây Compose không gian, hãy sử dụngSubspaceModifier.testTag
. - Xoá phương thức nạp chồng không được hỗ trợ của
SpatialPopup
chỉ cóspatialElevationLevel
vàcontent
. Vui lòng sử dụng giao diện hỗ trợonDimissRequest
. - Xoá lệnh gọi lại
onPoseChange
khỏi đối tượng sửa đổi Movable (Có thể di chuyển). Thay vào đó, hãy sử dụngonMove
. SubspaceModifiers
sẽ không còn áp dụng hiệu ứng nếu các hiệu ứng đó bị tách rời hoặc đang tách rời.- API
SpatialRow
hiện có đã được chia thànhSpatialRow
vàSpatialCurvedRow
. Nếu trước đây bạn sử dụng tham sốcurveRadius
củaSpatialRow
, thì giờ đây, hãy sử dụngSpatialCurvedRow
để cung cấp hành vi tương tự. MainPanel
vàActivityPanel
không còn có thanh tiêu đề khi chạy trên một hình ảnh hệ thống gần đây tương tự.- Các đối tượng sửa đổi độ đậm nhạt và tỷ lệ hiện có thể xếp chồng và sẽ nhân giá trị của các đối tượng đó cho giá trị độ đậm nhạt hoặc tỷ lệ được áp dụng cuối cùng.
- Lệnh gọi lại
onPoseChange
từ đối tượng sửa đổi Movable (Có thể di chuyển) đã được tối ưu hoá để thực hiện chuyển động tư thế mượt mà hơn. - Các đối tượng sửa đổi có thể di chuyển và thay đổi kích thước hiện sẽ thực hiện lệnh gọi lại trên luồng chính để đảm bảo rằng các thay đổi về trạng thái sẽ kích hoạt quá trình kết hợp lại.
- Thêm tính năng quan sát trạng thái vào các giai đoạn bố cục và đo lường để đảm bảo rằng các thay đổi về trạng thái trong
SubspaceLayout
sẽ kích hoạt việc bố cục lại. - Tối ưu hoá nội dung cập nhật chuỗi đối tượng sửa đổi để sử dụng lại các đối tượng sửa đổi hiện có hiệu quả hơn.
Sửa lỗi
- Ngừng quét khi
SpatialDialog
xuất hiện. (Ic4594) - Giờ đây, các yêu cầu bố cục lại được thực hiện trong khi các nút đối tượng sửa đổi bị tách rời sẽ bị bỏ qua.
- Xoá các giai đoạn bố cục lại do đối tượng sửa đổi Movable (Có thể di chuyển) và Resizable (Có thể đổi kích thước) kích hoạt.
- Khắc phục sự cố trong thành phần kết hợp
MainPanel()
xảy ra khi một trong hai kích thước được đặt thành 0, trực tiếp hoặc trong quá trình tính toán bố cục, ví dụ: tính toánSpatialRow/SpatialColumn
. Giờ đây, bảng điều khiển sẽ bị ẩn. Xin lưu ý rằng bản sửa lỗi này giải quyết cụ thể các sự cố trong giai đoạn bố cục; việc đổi kích thước bảng điều khiển về 0 thông qua hoạt động tương tác của người dùng sẽ được xử lý riêng. Bảng điều khiển ẩn thiếu các tính năng hỗ trợ giao diện người dùng. - Khắc phục vấn đề với
maintainAspectRatio
từ đối tượng sửa đổi có thể đổi kích thước. Bây giờ, tỷ lệ khung hình sẽ được giữ nguyên. - Khắc phục vấn đề về các Không gian con lồng nhau, trong đó các không gian này sẽ được định vị không chính xác cho một khung hình.
- Khắc phục vấn đề đôi khi các góc bo tròn không được áp dụng khi cần.
NestedSubspaces
sẽ không còn xuất hiện cho một khung hình ở sai vị trí nữa.
Phiên bản 1.0.0-alpha03
Ngày 26 tháng 2 năm 2025
Phát hành androidx.xr.compose:compose:1.0.0-alpha03
và androidx.xr.compose:compose-testing:1.0.0-alpha03
mà không có thay đổi đáng kể nào kể từ bản phát hành alpha gần đây nhất. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau
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-alpha02
và androidx.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ảnhSubspaceComposable
và sẽ đính kèm Orbiter vào thành phần mẹ có khả năng kết hợp dựa trênSubspaceLayout
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. KhiscaleWithDistance
được bật, phần tử không gian con đã di chuyển sẽ tăng hoặc giảm. Chế độ 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ằngSpatialCapabilities
.
Các thay đổi khác
- Giảm
minSDK
xuống còn 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.outer
vàEdgeOffset.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àoMeasurableLayout
. - Đổi tên
SubspaceModifierElement
thànhSubspaceModifierNodeElement
.
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 và không gian con: 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
,SpatialBox
vàSpatialLayoutSpacer
. Sử dụngSubspaceModifier
để 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 caoSpatialElevation
: Bạn có thể đặtSpatialElevationLevel
để 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 3DisAppEnvironmentEnabled
: Môi trườngisPassthroughControlEnabled
: Liệu ứng dụng có thể kiểm soát trạng thái truyền qua hay khôngisSpatialAudioEnabled
: Â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 khởi chạy trực tiếp vào Toàn không gian 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 Toàn không gian. - 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.