เมื่อผู้ใช้ทำกิจกรรมต่างๆ ในแต่ละวัน แว่นตาอัจฉริยะสำหรับเสียงหรือแว่นตาอัจฉริยะสำหรับแสดงผลอาจ
ขาดการเชื่อมต่อกับอุปกรณ์โฮสต์ (เช่น โทรศัพท์ของผู้ใช้) หรือแว่นตาอาจใช้งานไม่ได้ชั่วคราวหากผู้ใช้ถอดแว่นตาออก เพื่อ
พิจารณาการเปลี่ยนแปลงความพร้อมใช้งานของอุปกรณ์ประเภทต่างๆ แอปของคุณสามารถใช้
XR Device Availability API ซึ่งรวมสัญญาณความพร้อมใช้งานของอุปกรณ์เป็น
ค่า Lifecycle.State มาตรฐานของ Android ใช้ API นี้เพื่อช่วยจัดการการกำหนดเส้นทางเสียง การเปิดใช้งานคำสั่งเสียง และเพื่อทราบว่าควรคาดหวังการป้อนข้อมูลจากผู้ใช้เมื่อใดตามความพร้อมใช้งานของแว่นตา
ทำความเข้าใจสถานะวงจรการทำงาน
ตารางต่อไปนี้แสดงวิธีที่สัญญาณความพร้อมใช้งานของอุปกรณ์แมปกับค่า Lifecycle.State
สถานะวงจรการทำงาน |
สถานะอุปกรณ์ |
คำอธิบาย |
|---|---|---|
|
สร้างแล้ว |
สร้างออบเจ็กต์วงจรการทำงานแล้ว แต่ยังไม่ได้สังเกต |
|
ไม่ได้ใช้งาน |
บริการเชื่อมต่ออยู่ แต่ผู้ใช้ไม่ได้สวมอุปกรณ์ |
|
ใช้งานอยู่ |
ผู้ใช้สวมอุปกรณ์อยู่ |
|
ยกเลิกการเชื่อมต่อแล้ว |
อุปกรณ์ยกเลิกการเชื่อมต่อหรือการเชื่อมต่อบริการขาดหายไป |
ตรวจสอบและติดตามความพร้อมใช้งานของอุปกรณ์
หากต้องการตรวจสอบและติดตามความพร้อมใช้งานของอุปกรณ์ คุณจะต้องใช้บริบทที่คาดการณ์ไว้ร่วมกับสถานะวงจรการทำงานเพื่อกำหนดวิธีที่แอปควรจัดการในแต่ละกรณี
// In your phone activity or service, check for projected device connection state before // attempting to create a projected device context and get the device lifecycle. ProjectedContext.isProjectedDeviceConnected(context, currentCoroutineContext()) .flatMapLatest { isConnected -> if (isConnected) { try { // Create the projected device context on connection val projectedContext = ProjectedContext.createProjectedDeviceContext(context) val xrDevice = XrDevice.getCurrentDevice(projectedContext) // Get the device lifecycle xrDevice.getLifecycle().currentStateFlow } catch (e: IllegalStateException) { flowOf(Lifecycle.State.DESTROYED) } } else { flowOf(Lifecycle.State.DESTROYED) } } .collect { state -> when (state) { Lifecycle.State.STARTED -> { /* Device is available (worn) */ } Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ } Lifecycle.State.DESTROYED -> { /* Device is disconnected from host phone */ } else -> { /* Handle other states */ } } } }
ประเด็นสำคัญเกี่ยวกับโค้ด
- ตรวจสอบการเชื่อมต่อ: ก่อนเข้าถึงวงจรการทำงานของอุปกรณ์ ให้เรียก
ProjectedContext.isProjectedDeviceConnectedเพื่อยืนยันว่าอุปกรณ์ที่คาดการณ์ไว้เชื่อมต่อกับอุปกรณ์โฮสต์ - รับ
ProjectedContext: เรียกProjectedContext.createProjectedDeviceContextหลังจากยืนยัน การเชื่อมต่อแล้วเท่านั้น และตรวจสอบว่าได้ส่งบริบทนี้ไปยังอินสแตนซ์XrDevice - จัดการการทำให้บริบทไม่ถูกต้อง: ระบบจะสร้าง
deviceIdใหม่ทุกครั้งที่ อุปกรณ์ที่คาดการณ์ไว้เชื่อมต่อ เมื่อสถานะไปถึงDESTROYEDแล้วProjectedContextปัจจุบันจะใช้ไม่ได้ หยุดใช้ทันทีและรอการเชื่อมต่อใหม่ - เพิ่มประสิทธิภาพแบตเตอรี่และทรัพยากร: จัดการฟังก์ชันการทำงานของแอปอย่างเหมาะสม
ตามสถานะวงจรการทำงานเพื่อรักษาทรัพยากรของระบบและลดการใช้แบตเตอรี่
ตัวอย่างเช่น คุณควรปล่อยทรัพยากรเฉพาะของแว่นตา เช่น สตรีมข้อมูลกล้อง เมื่อสถานะเปลี่ยนจาก
STARTEDกลับไปเป็นCREATEDสถานะCREATEDบ่งบอกว่าผู้ใช้ไม่ได้สวมอุปกรณ์แล้ว ดังนั้นการหยุดกระบวนการเหล่านี้จึงมีความสำคัญอย่างยิ่งในการป้องกันไม่ให้แบตเตอรี่หมดเร็วโดยไม่จำเป็นและเพื่อส่งเสริมความเป็นส่วนตัวของผู้ใช้