โหมดระงับ

สถานะพลังงาน SoC

สถานะพลังงานของระบบบนชิป (SoC) คือ: เปิด, ไม่ได้ใช้งาน และหยุดชั่วคราว “เปิด” คือเมื่อ SoC กำลังทำงาน “ว่าง” เป็นโหมดพลังงานปานกลางที่ขับเคลื่อน SoC แต่ไม่ได้ทำงานใดๆ “Suspend” เป็นโหมดพลังงานต่ำที่ SoC ไม่ได้ขับเคลื่อน การใช้พลังงานของอุปกรณ์ในโหมดนี้มักจะน้อยกว่าในโหมด "เปิด" ถึง 100 เท่า

เซ็นเซอร์ไม่ปลุก

เซ็นเซอร์แบบไม่ปลุกคือเซ็นเซอร์ที่ไม่ได้ป้องกันไม่ให้ SoC เข้าสู่โหมด Suspend และไม่ปลุก SoC เพื่อรายงานข้อมูล โดยเฉพาะอย่างยิ่ง ผู้ขับขี่ไม่ได้รับอนุญาตให้ทำการล็อคปลุก แอปพลิเคชันมีหน้าที่รับผิดชอบในการล็อกการทำงานบางส่วนไว้ หากต้องการรับเหตุการณ์จากเซ็นเซอร์ที่ไม่ปลุกในขณะที่หน้าจอปิดอยู่ ในขณะที่ SoC อยู่ในโหมด Suspend เซ็นเซอร์จะต้องทำงานต่อไปและสร้างเหตุการณ์ซึ่งถูกใส่ไว้ใน FIFO ของฮาร์ดแวร์ (ดูรายละเอียดเพิ่มเติมใน การจัดชุด ) เหตุการณ์ใน FIFO จะถูกส่งไปยังแอปพลิเคชันเมื่อ SoC เริ่มทำงาน หาก FIFO มีขนาดเล็กเกินไปที่จะจัดเก็บเหตุการณ์ทั้งหมด เหตุการณ์เก่าๆ จะสูญหายไป ข้อมูลเก่าที่สุดจะถูกละทิ้งเพื่อรองรับข้อมูลล่าสุด ในกรณีที่รุนแรงที่สุดที่ไม่มี FIFO เหตุการณ์ทั้งหมดที่สร้างขึ้นในขณะที่ SoC อยู่ในโหมด Suspend จะสูญหายไป ข้อยกเว้นประการหนึ่งคือเหตุการณ์ล่าสุดจากเซ็นเซอร์การเปลี่ยนแปลงแต่ละตัว: เหตุการณ์สุดท้าย จะต้องบันทึกไว้ นอก FIFO เพื่อไม่ให้สูญหาย

ทันทีที่ SoC ออกจากโหมด Suspend กิจกรรมทั้งหมดจาก FIFO จะถูกรายงานและการดำเนินการกลับสู่ปกติ

แอปพลิเคชันที่ใช้เซ็นเซอร์ไม่ปลุกควรล็อคการทำงานไว้เพื่อให้แน่ใจว่าระบบจะไม่ถูกระงับ ยกเลิกการลงทะเบียนจากเซ็นเซอร์เมื่อไม่ต้องการ หรือคาดว่าจะสูญเสียเหตุการณ์ในขณะที่ SoC อยู่ในโหมดระงับ

เซ็นเซอร์ปลุก

เซ็นเซอร์ปลุกทำให้มั่นใจได้ว่าข้อมูลจะถูกจัดส่งโดยไม่ขึ้นอยู่กับสถานะของ SoC ซึ่งต่างจากเซ็นเซอร์แบบไม่ปลุก ในขณะที่ SoC ตื่นอยู่ เซ็นเซอร์ปลุกจะทำงานเหมือนเซ็นเซอร์ไม่ปลุก เมื่อ SoC อยู่ในโหมดสลีป เซ็นเซอร์ปลุกจะต้องปลุก SoC เพื่อส่งกิจกรรม พวกเขายังคงต้องปล่อยให้ SoC เข้าสู่โหมด Suspend แต่จะต้องปลุกระบบอีกครั้งเมื่อจำเป็นต้องรายงานเหตุการณ์ นั่นคือ เซ็นเซอร์จะต้องปลุก SoC และส่งมอบเหตุการณ์ก่อนที่เวลาแฝงในการรายงานสูงสุดจะหมดลง หรือฮาร์ดแวร์ FIFO เต็ม ดู การแบทช์ สำหรับรายละเอียดเพิ่มเติม

เพื่อให้แน่ใจว่าแอปพลิเคชันมีเวลารับเหตุการณ์ก่อนที่ SoC จะกลับสู่โหมดสลีป ไดรเวอร์จะต้องกด "ล็อคปลุกการหมดเวลา" เป็นเวลา 200 มิลลิวินาทีในแต่ละครั้งที่มีการรายงานเหตุการณ์ นั่นคือ SoC ไม่ควรได้รับอนุญาตให้กลับไปเข้าสู่โหมดสลีปภายใน 200 มิลลิวินาทีหลังจากการขัดจังหวะการปลุก ข้อกำหนดนี้จะหายไปใน Android รุ่นต่อๆ ไป และเราจำเป็นต้องมี Wake Lock การหมดเวลานี้จนกว่าจะถึงเวลาดังกล่าว

จะกำหนดเซ็นเซอร์ปลุกและไม่ปลุกได้อย่างไร?

สำหรับ KitKat ไม่ว่าเซ็นเซอร์จะเป็นเซ็นเซอร์ปลุกหรือไม่ตื่นก็ตามนั้นถูกกำหนดโดยประเภทของเซ็นเซอร์ ส่วนใหญ่เป็นเซ็นเซอร์ที่ไม่ปลุก ยกเว้นเซ็นเซอร์ ความใกล้ชิด และ เครื่องตรวจจับการเคลื่อนไหวที่สำคัญ

เริ่มต้นจาก L ไม่ว่าเซ็นเซอร์ที่กำหนดจะเป็นเซ็นเซอร์ปลุกหรือไม่ก็ตาม จะถูกระบุโดยแฟล็กในคำจำกัดความของเซ็นเซอร์ เซ็นเซอร์ส่วนใหญ่สามารถกำหนดได้โดยคู่ของรูปแบบการปลุกและแบบไม่ปลุกของเซ็นเซอร์เดียวกัน ซึ่งในกรณีนี้เซ็นเซอร์จะต้องทำงานเป็นเซ็นเซอร์อิสระสองตัว โดยไม่มีการโต้ตอบกัน ดู การโต้ตอบ สำหรับรายละเอียดเพิ่มเติม

เว้นแต่จะระบุไว้เป็นอย่างอื่นในคำจำกัดความประเภทเซ็นเซอร์ ขอแนะนำให้ใช้เซ็นเซอร์ปลุกหนึ่งตัวและเซ็นเซอร์ไม่ปลุกหนึ่งตัวสำหรับเซ็นเซอร์แต่ละประเภทที่แสดงอยู่ใน ประเภทเซ็นเซอร์ ในคำจำกัดความประเภทเซ็นเซอร์แต่ละประเภท ดูว่าเซ็นเซอร์ใด (การปลุกหรือไม่ปลุก) ที่จะส่งคืนโดย SensorManager.getDefaultSensor(sensorType) เป็นเซ็นเซอร์ที่แอพพลิเคชั่นส่วนใหญ่จะใช้