Các tính 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 các tính năng không gian để xác định API nào được hỗ trợ trong môi trường hiện tại.
Kiểm tra các tính năng không gian bằng Jetpack Compose cho XR
Jetpack Compose cho XR tạo một Thành phần cục bộ để kiểm tra các tính năng không gian. Sử dụng tính năng 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, tính năng truyền tải hoặc nội dung 3D có được bật hay không.
Bạn có thể sử dụng LocalSpatialCapabilities.current
để kiểm tra xem các tính năng không gian sau đây có đang hoạt động hay không:
isSpatialUiEnabled
: Cho biết liệu ứng dụng có thể tạo các thành phần 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 đố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ó được bật hay không.
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 tạo phiên, hãy gọi getSpatialCapabilities
trên phiên để truy vấn xem hiện có những chức năng không gian nào.
SPATIAL_CAPABILITY_3D_CONTENT
: Hoạt động có thể tạo nội dung 3D.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: Hoạt động có thể thiết lập môi trường riêng.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: Hoạt động có thể nhúng một hoạt động khác theo không gian.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: Hoạt động có thể bật hoặc tắt tính năng truyền tiếp.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: Hoạt động có thể sử dụng âm thanh không gian.SPATIAL_CAPABILITY_UI
: Hoạt động có thể tự tạo không gian, 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
sẽ thông báo cho bạn khi các tính năng không gian thay đổi.
val xrSession = Session.create(this)
// Example 1: check if enabling passthrough mode is allowed
if (xrSession.getSpatialCapabilities().hasCapability(
SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL)) {
xrSession.spatialEnvironment.setPassthroughOpacityPreference(0f)
}
// Example 2: Multiple capability flags can be checked simultaneously:
if (xrSession.getSpatialCapabilities().hasCapability(
SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and
SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT)) {
// ...
}
// Example 3: Create a spatialized panel if/when spatialization UI becomes available
xrSession.addSpatialCapabilitiesChangedListener((capabilities) -> {
if (capabilities.hasCapability(SpatialCapabilities.SPATIAL_CAPABILITY_UI)){
Subspace{
SpatialPanel(...)
}
}
});
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