![ไอคอน HAL ของเซ็นเซอร์ Android](https://source.android.google.cn/static/docs/core/interaction/sensors/images/ape_fwk_hal_sensors.png?authuser=5&hl=th)
เซ็นเซอร์ Android ให้สิทธิ์แอปพลิเคชันเข้าถึงเซ็นเซอร์ทางกายภาพที่อยู่เบื้องหลังของอุปกรณ์เคลื่อนที่ โดยเป็นอุปกรณ์เสมือนที่ให้ข้อมูลซึ่งกำหนดโดย sensors.h ซึ่งเป็นเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) ของเซ็นเซอร์
เซ็นเซอร์ Android คืออะไร
เซ็นเซอร์ Android เป็นอุปกรณ์เสมือนจริงที่ให้ข้อมูลจากชุดเซ็นเซอร์ทางกายภาพ ได้แก่ ตัวตรวจวัดความเร่ง เซ็นเซอร์การหมุน เซ็นเซอร์วัดค่าความเข้มข้นของสนามแม่เหล็ก บารอมิเตอร์ ความชื้น ความดัน แสง เซ็นเซอร์ตรวจจับบุคคลในบริเวณใกล้เคียง และเซ็นเซอร์อัตราการเต้นของหัวใจ
กล้อง เซ็นเซอร์ลายนิ้วมือ ไมโครโฟน และหน้าจอสัมผัสจะไม่รวมอยู่ในรายการอุปกรณ์จริงที่ให้ข้อมูล อุปกรณ์เหล่านี้มีกลไกการรายงานของตนเอง การแยกเป็นค่ากำหนด แต่โดยทั่วไปเซ็นเซอร์ Android จะแสดงข้อมูลแบนด์วิดท์ที่ต่ำลง เช่น "100 Hz x 3 ช่อง" สำหรับเครื่องวัดความเร่งเทียบกับ "25 Hz x 8 MP x 3 ช่อง" สำหรับกล้อง หรือ "44 kHz x 1 ช่อง" สำหรับไมโครโฟน
Android ไม่ได้กำหนดวิธีเชื่อมต่อเซ็นเซอร์ต่างๆ กับระบบวงจรรวมบนชิป (SoC)
- ชิปเซ็นเซอร์มักเชื่อมต่อกับ SoC ผ่านฮับเซ็นเซอร์ ซึ่งช่วยให้สามารถตรวจสอบและประมวลผลข้อมูลได้โดยใช้พลังงานต่ำ
- มักใช้ Inter-Integrated Circuit (I2C) หรือ Serial Peripheral Interface (SPI) เป็นกลไกการรับส่ง
- สถาปัตยกรรมบางอย่างเป็นแบบลําดับชั้นเพื่อลดการใช้พลังงาน โดยมีการประมวลผลขั้นต่ำในวงจรรวมเฉพาะแอปพลิเคชัน (ASIC เช่น การตรวจจับการเคลื่อนไหวในชิปเซ็นเซอร์ความเร่ง) และประมวลผลเพิ่มเติมในไมโครคอนโทรลเลอร์ (เช่น การตรวจจับการก้าวในฮับเซ็นเซอร์)
- ผู้ผลิตอุปกรณ์จะเลือกสถาปัตยกรรมตามความแม่นยำ กำลัง ราคา และลักษณะขนาดแพ็กเกจ ดูข้อมูลเพิ่มเติมได้ในสแต็กเซ็นเซอร์
- ความสามารถในการจัดกลุ่มเป็นข้อควรพิจารณาที่สําคัญในการเพิ่มประสิทธิภาพ ดูข้อมูลเพิ่มเติมที่การรวม
เซ็นเซอร์ Android แต่ละตัวมี "ประเภท" ที่แสดงลักษณะการทำงานของเซ็นเซอร์และข้อมูลที่ให้
- ประเภทเซ็นเซอร์อย่างเป็นทางการของ Android จะกำหนดไว้ใน sensors.h โดยใช้ชื่อ SENSOR_TYPE_…
- เซ็นเซอร์ส่วนใหญ่มีประเภทเซ็นเซอร์อย่างเป็นทางการ
- ประเภทดังกล่าวมีอยู่ในเอกสารประกอบของ Android SDK
- ลักษณะการทำงานของเซ็นเซอร์ประเภทดังกล่าวได้รับการทดสอบในชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android
- หากผู้ผลิตผสานรวมเซ็นเซอร์ประเภทใหม่ในอุปกรณ์ Android ผู้ผลิตสามารถกำหนดประเภทชั่วคราวของตนเองเพื่ออ้างอิงถึงเซ็นเซอร์นั้นได้
- ประเภทดังกล่าวไม่มีเอกสารประกอบ นักพัฒนาแอปพลิเคชันจึงมีแนวโน้มที่จะไม่ใช้ เนื่องจากไม่ทราบเกี่ยวกับประเภทดังกล่าว หรือทราบว่ามีการใช้งานประเภทดังกล่าวน้อยมาก (มีเฉพาะในอุปกรณ์บางรุ่นจากผู้ผลิตรายนี้เท่านั้น)
- ซึ่ง CTS ไม่ได้ทดสอบ
- เมื่อ Android กำหนดประเภทเซ็นเซอร์อย่างเป็นทางการสำหรับเซ็นเซอร์ประเภทนี้แล้ว ผู้ผลิตจะต้องหยุดใช้ประเภทชั่วคราวของตนเองและใช้ประเภทอย่างเป็นทางการแทน วิธีนี้จะช่วยให้นักพัฒนาแอปพลิเคชันจำนวนมากขึ้นใช้เซ็นเซอร์ได้
- รายการเซ็นเซอร์ทั้งหมดที่มีอยู่ในอุปกรณ์จะได้รับการรายงานโดยการติดตั้งใช้งาน HAL
- เซ็นเซอร์ประเภทเดียวกันอาจมีหลายตัว เช่น เซ็นเซอร์ตรวจหาบุคคลในบริเวณใกล้เคียง 2 ตัวหรือตัวตรวจวัดความเร่ง 2 ตัว
- แอปพลิเคชันส่วนใหญ่จะขอเซ็นเซอร์เพียงตัวเดียวในประเภทหนึ่งๆ ตัวอย่างเช่น แอปพลิเคชันที่ขอเครื่องวัดความเร่งเริ่มต้นจะได้รับเครื่องวัดความเร่งรายการแรกในรายการ
- เซ็นเซอร์มักกำหนดโดยคู่เซ็นเซอร์ที่ตื่นขึ้นและเซ็นเซอร์ที่ไม่ตื่นขึ้น โดยเซ็นเซอร์ทั้ง 2 ประเภทเป็นเซ็นเซอร์ประเภทเดียวกัน แต่แตกต่างกันตรงลักษณะการตื่นขึ้น
เซ็นเซอร์ Android ให้ข้อมูลเป็นชุดเหตุการณ์ของเซ็นเซอร์
เหตุการณ์แต่ละรายการประกอบด้วยข้อมูลต่อไปนี้
- แฮนเดิลของเซ็นเซอร์ที่สร้างเหตุการณ์
- การประทับเวลาที่ตรวจพบหรือวัดเหตุการณ์ โดยอิงตาม
SystemClock.elapsedRealtimeNanos()
- และข้อมูลบางส่วน
การตีความข้อมูลที่รายงานจะขึ้นอยู่กับประเภทเซ็นเซอร์ ดูรายละเอียดเกี่ยวกับข้อมูลที่รายงานสำหรับเซ็นเซอร์แต่ละประเภทได้จากคำจำกัดความประเภทเซ็นเซอร์
เอกสารประกอบที่มีอยู่
มีกลุ่มเป้าหมายเป็นนักพัฒนาแอป
- ภาพรวม
- ข้อมูลอ้างอิง SDK
- Stack Overflow และเว็บไซต์บทแนะนำ
- เนื่องจากบางครั้งเอกสารประกอบเกี่ยวกับเซ็นเซอร์ขาดหายไป นักพัฒนาซอฟต์แวร์จึงต้องหันไปหาคำตอบในเว็บไซต์ถามและตอบอย่าง Stack Overflow
- นอกจากนี้ยังมีเว็บไซต์บทแนะนำบางแห่ง แต่ไม่ได้ครอบคลุมฟีเจอร์ล่าสุด เช่น การแยกกลุ่ม การเคลื่อนไหวที่สำคัญ และเวกเตอร์การหมุนของเกม
- คำตอบในนั้นอาจไม่ถูกต้องเสมอไป และแสดงจุดที่ต้องให้เอกสารเพิ่มเติม
มีกลุ่มเป้าหมายเป็นผู้ผลิต
- ภาพรวม
- หน้าเซ็นเซอร์นี้และหน้าย่อย
- เลเยอร์การจัดการฮาร์ดแวร์โดยตรง (HAL)
- /platform/hardware/libhardware/+/main/include/hardware/sensors.h
- หรือที่เรียกว่า "sensors.h"
- แหล่งข้อมูลที่ถูกต้อง เอกสารแรกที่จะมีการอัปเดตเมื่อมีการพัฒนาฟีเจอร์ใหม่
- CDD (เอกสารคำจำกัดความความเข้ากันได้) ของ Android
- /compatibility/android-cdd.pdf
- ดูส่วนที่เกี่ยวข้องกับเซ็นเซอร์
- CDD มีข้อกำหนดที่ไม่เข้มงวดมากนัก ดังนั้นการปฏิบัติตามข้อกำหนดของ CDD จึงไม่เพียงพอที่จะรับประกันเซ็นเซอร์คุณภาพสูง