ความสามารถของพื้นที่ทำงานอาจเปลี่ยนแปลงไปเมื่อผู้ใช้โต้ตอบกับแอปหรือระบบ หรือแอปของคุณเองก็อาจเปลี่ยนแปลงความสามารถดังกล่าวได้ เช่น การเปลี่ยนเป็นโหมดพื้นที่ทำงานในบ้านหรือโหมดพื้นที่ทำงานแบบเต็ม แอปต้องตรวจสอบความสามารถเชิงพื้นที่เพื่อดูว่าระบบรองรับ API ใดบ้างในสภาพแวดล้อมปัจจุบัน เพื่อหลีกเลี่ยงปัญหา
ตรวจสอบความสามารถเชิงพื้นที่โดยใช้ Jetpack Compose สำหรับ XR
Jetpack Compose สำหรับ XR จะสร้าง Composition Local เพื่อตรวจสอบความสามารถเชิงพื้นที่ ใช้ตัวเลือกนี้เพื่อตรวจสอบว่าเปิดใช้ UI เชิงพื้นที่ เสียงรอบทิศทาง สภาพแวดล้อม การส่งผ่าน หรือเนื้อหา 3 มิติหรือไม่
คุณสามารถใช้ LocalSpatialCapabilities.current
เพื่อตรวจสอบว่าความสามารถเชิงพื้นที่ต่อไปนี้พร้อมใช้งานหรือไม่
isSpatialUiEnabled
: ระบุว่าแอปพลิเคชันอาจสร้างองค์ประกอบ UI เชิงพื้นที่ได้หรือไม่ (เช่นSpatialPanel
)isContent3dEnabled
: ระบุว่าแอปพลิเคชันสามารถสร้างวัตถุ 3 มิติได้หรือไม่isAppEnvironmentEnabled
: ระบุว่าแอปพลิเคชันสามารถตั้งค่าสภาพแวดล้อมได้หรือไม่isPassthroughControlEnabled
: ระบุว่าแอปพลิเคชันสามารถควบคุมสถานะการส่งต่อได้หรือไม่isSpatialAudioEnabled
: ระบุว่าแอปพลิเคชันสามารถใช้เสียงรอบทิศทางได้หรือไม่
ตัวอย่างต่อไปนี้แสดงวิธีตรวจสอบว่าเปิดใช้ UI แบบพื้นที่หรือไม่
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
ตรวจสอบความสามารถเชิงพื้นที่โดยใช้ SceneCore
เมื่อใช้คลัง SceneCore คุณจะต้องสร้างเซสชัน เมื่อสร้างเซสชันแล้ว ให้เรียกใช้ spatialCapabilities
ในเซสชันเพื่อสอบถามความสามารถเชิงพื้นที่ที่พร้อมใช้งานในปัจจุบัน
SPATIAL_CAPABILITY_3D_CONTENT
: กิจกรรมสามารถสร้างเนื้อหา 3 มิติได้SPATIAL_CAPABILITY_APP_ENVIRONMENT
: กิจกรรมสามารถตั้งค่าสภาพแวดล้อมของตนเองได้SPATIAL_CAPABILITY_EMBED_ACTIVITY
: กิจกรรมสามารถฝังกิจกรรมอื่นในเชิงพื้นที่ได้SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: กิจกรรมสามารถเปิดหรือปิดใช้การส่งต่อได้SPATIAL_CAPABILITY_SPATIAL_AUDIO
: กิจกรรมใช้เสียงรอบทิศทางได้SPATIAL_CAPABILITY_UI
: กิจกรรมสามารถจัดวางตามพื้นที่ได้ เช่น การเพิ่มแผงพื้นที่
นอกจากนี้ คุณยังเลือกสมัครรับการติดต่อกลับ addSpatialCapabilitiesChangedListener
ที่จะแจ้งให้คุณทราบเมื่อความสามารถของฟีเจอร์ดังกล่าวมีการเปลี่ยนแปลงได้อีกด้วย
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.hasCapability( SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.setPassthroughOpacityPreference(0f) } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.hasCapability( SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT ) ) { // ... }
ดูเพิ่มเติม
- สร้างเซสชัน
- การเปลี่ยนระหว่าง HSM กับ FSM
- เพิ่มสภาพแวดล้อมเชิงพื้นที่ลงในแอป
- เพิ่มโมเดล 3 มิติลงในแอป