Các chức năng không gian có thể khác nhau tuỳ theo thiết bị và thay đổi khi người dùng tương tác với ứng dụng hoặc hệ thống của bạn. Bản thân ứng dụng của bạn cũng có thể thay đổi các chế độ này, chẳng hạn như chuyển sang Không gian chính hoặc Toàn không gian. Để tránh gặp vấn đề, ứng dụng của bạn cần kiểm tra các chức năng không gian để xác định những API nào được hỗ trợ trong môi trường hiện tại.
Kiểm tra các chức năng không gian bằng Jetpack Compose cho XR
Jetpack Compose cho XR tạo một Composition Local để kiểm tra các chức năng không gian. Sử dụng phương thức này để kiểm tra xem giao diện người dùng không gian, âm thanh không gian, môi trường, chế độ truyền qua hoặc nội dung 3D có được bật hay không.
Bạn có thể dùng LocalSpatialCapabilities.current để kiểm tra xem các chức năng không gian sau đây hiện có sẵn hay không:
isSpatialUiEnabled: Cho biết liệu ứng dụng có thể tạo các phần tử giao diện người dùng không gian hay không (ví dụ:SpatialPanel).isContent3dEnabled: Cho biết liệu ứng dụng có thể tạo các đối tượng 3D hay không.isAppEnvironmentEnabled: Cho biết liệu ứng dụng có thể thiết lập môi trường hay không.isPassthroughControlEnabled: Cho biết liệu ứng dụng có thể kiểm soát trạng thái truyền qua hay không.isSpatialAudioEnabled: Cho biết liệu ứng dụng có thể sử dụng âm thanh không gian hay không.
Ví dụ sau đây cho biết cách kiểm tra xem giao diện người dùng không gian đã được bật hay chưa:
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
Kiểm tra các chức năng không gian bằng SceneCore
Khi sử dụng thư viện SceneCore, bạn sẽ phải tạo một phiên. Sau khi phiên được tạo, hãy dùng spatialCapabilities từ scene của phiên để truy vấn những chức năng không gian hiện có.
SPATIAL_3D_CONTENT: Hoạt động này có thể tạo nội dung 3D.APP_ENVIRONMENT: Hoạt động có thể thiết lập môi trường riêng.EMBED_ACTIVITY: Hoạt động có thể nhúng một hoạt động khác theo không gian.PASSTHROUGH_CONTROL: Hoạt động này có thể bật hoặc tắt chế độ truyền qua.SPATIAL_AUDIO: Hoạt động này có thể sử dụng âm thanh không gian.SPATIAL_UI: Hoạt động có thể tự không gian hoá (ví dụ: thêm bảng điều khiển không gian).
Bạn cũng có thể chọn đăng ký một lệnh gọi lại addSpatialCapabilitiesChangedListener để nhận thông báo khi các chức năng không gian thay đổi.
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.contains( SpatialCapability.PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.contains(SpatialCapability.PASSTHROUGH_CONTROL) && xrSession.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT) ) { // ... }
Sử dụng chế độ hoà trộn để kiểm tra các chức năng hiển thị của thiết bị
Trên Android XR, thiết bị đeo đầu XR và kính XR có dây có nhiều khả năng phần cứng khác nhau, đặc biệt là về loại màn hình. Bạn có thể cần điều chỉnh màu sắc của giao diện người dùng và các đối tượng được kết xuất trong ứng dụng để tối đa hoá khả năng hiển thị. Khả năng này có thể bị ảnh hưởng bởi loại màn hình và chế độ kết hợp ưu tiên mà thiết bị sử dụng. API DisplayBlendMode cung cấp khả năng chế độ hoà trộn của thiết bị để kết xuất. Sử dụng API này để xác định cách thêm nội dung ảo vào thế giới thực.
Sau đây là một số loại chế độ hoà trộn mà bạn cần lưu ý:
ADDITIVE: Nội dung ảo được thêm vào thế giới thực bằng cách thêm các giá trị pixel cho từng thành phần Đỏ, Lục và Lam. Alpha sẽ bị bỏ qua và các pixel màu đen sẽ xuất hiện trong suốt.ALPHA_BLEND: Nội dung ảo được thêm vào thế giới thực bằng cách kết hợp alpha các giá trị pixel dựa trên thành phần Alpha.NO_DISPLAY: Thiết bị không hỗ trợ tính năng kết hợp.
Sử dụng XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() trong thư viện Jetpack XR Runtime để kiểm tra loại chế độ hoà trộn đang được dùng và điều chỉnh nếu cần.
Xem thêm
- Tạo phiên
- Chuyển đổi giữa HSM và FSM
- Thêm môi trường không gian vào ứng dụng
- Thêm mô hình 3D vào ứng dụng