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