สถานะพลังงานของ SoC
สถานะพลังงานของระบบวงจรรวมบนชิป (SoC) มีดังนี้ เปิด ไม่ได้ใช้งาน และหยุดทำงานชั่วคราว "เปิด" หมายถึง SoC ทำงานอยู่ "ไม่ได้ใช้งาน" คือโหมดพลังงานปานกลางที่ SoC เปิดอยู่แต่ไม่ทำงานใดๆ "หยุดชั่วคราว" คือโหมดพลังงานต่ำที่ SoC ไม่ได้เปิดเครื่อง โดยทั่วไปแล้ว การใช้พลังงานของอุปกรณ์ในโหมดนี้จะน้อยกว่าในโหมด "เปิด" 100 เท่า
เซ็นเซอร์ที่ไม่ปลุกระบบ
เซ็นเซอร์ที่ไม่ปลุกคือเซ็นเซอร์ที่ไม่ป้องกันไม่ให้ SoC เข้าสู่โหมดสลีปและไม่ปลุก SoC ให้รายงานข้อมูล โดยเฉพาะอย่างยิ่ง ไม่อนุญาตให้ไดรเวอร์ใช้การล็อกการปลุก แอปพลิเคชันมีหน้าที่รับผิดชอบในการใช้ Wake Lock บางส่วนหากต้องการรับเหตุการณ์จากเซ็นเซอร์ที่ไม่ปลุกขณะที่หน้าจอปิดอยู่ ขณะที่ SoC อยู่ในโหมดระงับ เซ็นเซอร์ต้องทำงานและสร้างเหตุการณ์ต่อไป ซึ่งจะใส่ไว้ใน FIFO ของฮาร์ดแวร์ (ดูรายละเอียดเพิ่มเติมได้ที่การรวม) ระบบจะส่งเหตุการณ์ใน FIFO ไปยังแอปพลิเคชันเมื่อ SoC ตื่นขึ้น หาก FIFO มีขนาดเล็กเกินกว่าที่จะจัดเก็บเหตุการณ์ทั้งหมดได้ ระบบจะลบเหตุการณ์เก่าๆ ออกเพื่อรองรับข้อมูลล่าสุด ในกรณีที่ร้ายแรงที่สุดซึ่งไม่มี FIFO เหตุการณ์ทั้งหมดที่สร้างขึ้นขณะที่ SoC อยู่ในโหมดระงับจะหายไป ข้อยกเว้นอย่างหนึ่งคือเหตุการณ์ล่าสุดจากเซ็นเซอร์การเปลี่ยนแปลงแต่ละตัว: เหตุการณ์ล่าสุดต้องได้รับการบันทึก นอก FIFO เพื่อไม่ให้สูญหาย
ทันทีที่ SoC ออกจากโหมดระงับ ระบบจะรายงานเหตุการณ์ทั้งหมดจาก FIFO และการดำเนินการจะกลับมาทำงานตามปกติ
แอปพลิเคชันที่ใช้เซ็นเซอร์ที่ไม่ปลุกระบบควรใช้การล็อกการปลุกเพื่อให้ระบบไม่เข้าสู่โหมดพัก ยกเลิกการลงทะเบียนจากเซ็นเซอร์เมื่อไม่ต้องการ หรือคาดว่าจะสูญเสียเหตุการณ์ขณะที่ SoC อยู่ในโหมดพัก
เซ็นเซอร์การปลุก
เซ็นเซอร์ปลุกจะส่งข้อมูลโดยไม่ขึ้นอยู่กับสถานะของ SoC ซึ่งต่างจากเซ็นเซอร์ที่ไม่ปลุก เมื่อ SoC ทำงานอยู่ เซ็นเซอร์ปลุกจะทํางานเหมือนเซ็นเซอร์ที่ไม่ปลุก เมื่อ SoC อยู่ในโหมดสลีป เซ็นเซอร์ปลุกจะต้องปลุก SoC เพื่อส่งเหตุการณ์ อุปกรณ์เหล่านี้ยังคงต้องปล่อยให้ SoC เข้าสู่โหมดสลีป แต่ต้องปลุก SoC ขึ้นเมื่อต้องรายงานเหตุการณ์ด้วย กล่าวคือ เซ็นเซอร์ต้องปลุก SoC และส่งเหตุการณ์ก่อนที่จะเกิดเวลาในการตอบสนองสูงสุดในการรายงานหรือ FIFO ของฮาร์ดแวร์เต็ม ดูรายละเอียดเพิ่มเติมเกี่ยวกับการรวม
เพื่อให้แอปพลิเคชันมีเวลารับเหตุการณ์ก่อนที่ SoC จะเข้าสู่โหมดสลีปอีกครั้ง โปรแกรมควบคุมจะต้อง "ปลุกด้วยการกำหนดเวลาหมดอายุ" เป็นเวลา 200 มิลลิวินาทีทุกครั้งที่มีการรายงานเหตุการณ์ กล่าวคือ SoC ไม่ควรกลับไปอยู่ในโหมดสลีปภายใน 200 มิลลิวินาทีหลังจากการขัดจังหวะการปลุก ข้อกำหนดนี้จะหายไปใน Android เวอร์ชันในอนาคต และเราต้องใช้การล็อกการปลุกตามกำหนดเวลานี้จนกว่าจะถึงเวลานั้น
วิธีกำหนดเซ็นเซอร์ที่ปลุกและเซ็นเซอร์ที่ไม่ปลุก
จนถึง KitKat เซ็นเซอร์จะเป็นผู้กำหนดว่าเซ็นเซอร์เป็นเซ็นเซอร์ที่ปลุกหรือไม่ใช่เซ็นเซอร์ที่ปลุก โดยส่วนใหญ่จะเป็นเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ที่ปลุก ยกเว้นเซ็นเซอร์พร็อกซิมิตีและเครื่องตรวจจับการเคลื่อนไหวที่สำคัญ
ตั้งแต่ L เป็นต้นไป เซ็นเซอร์หนึ่งๆ จะเป็นเซ็นเซอร์ปลุกหรือไม่นั้นจะมีการระบุด้วย Flag ในคำจำกัดความของเซ็นเซอร์ เซ็นเซอร์ส่วนใหญ่จะกำหนดได้ด้วยคู่ของตัวแปรที่ตื่นขึ้นและไม่ตื่นขึ้นของเซ็นเซอร์เดียวกัน ซึ่งในกรณีนี้ เซ็นเซอร์ต้องทํางานเหมือนเซ็นเซอร์ 2 ตัวที่แยกกันโดยไม่มีการโต้ตอบกัน ดูรายละเอียดเพิ่มเติมได้ที่การโต้ตอบ
เราขอแนะนำให้ติดตั้งเซ็นเซอร์ที่ปลุก 1 ตัวและเซ็นเซอร์ที่ไม่ปลุก 1 ตัวสำหรับเซ็นเซอร์แต่ละประเภทที่ระบุไว้ในประเภทเซ็นเซอร์ เว้นแต่จะระบุไว้เป็นอย่างอื่นในคำจำกัดความประเภทเซ็นเซอร์ ในคำจำกัดความของเซ็นเซอร์แต่ละประเภท ให้ดูว่าSensorManager.getDefaultSensor(sensorType)
จะแสดงเซ็นเซอร์ประเภทใด (เซ็นเซอร์ที่ปลุกหรือไม่ได้ปลุก) ซึ่งเป็นเซ็นเซอร์ที่แอปพลิเคชันส่วนใหญ่จะใช้