ส่วนนี้จะอธิบายแกนเซ็นเซอร์ เซ็นเซอร์ฐาน และเซ็นเซอร์คอมโพสิต (กิจกรรม การวางแนว การไม่ปรับเทียบ และการโต้ตอบ)
แกนเซ็นเซอร์
ค่าเหตุการณ์ของเซ็นเซอร์จากเซ็นเซอร์หลายตัวจะแสดงในเฟรมที่เจาะจงซึ่งสัมพันธ์กับอุปกรณ์
แกนอุปกรณ์เคลื่อนที่
Sensor API จะสัมพันธ์กับการวางแนวตามปกติของหน้าจอเท่านั้น (ระบบจะไม่สลับแกนเมื่อการวางแนวหน้าจอของอุปกรณ์เปลี่ยนไป
ขวานสำหรับรถยนต์
ในการใช้งาน Android Automotive ระบบจะกำหนดแกนตามเฟรมตัวถังรถยนต์ จุดเริ่มต้นของเฟรมอ้างอิงยานพาหนะคือกึ่งกลางของเพลาหลัง เฟรมอ้างอิงยานพาหนะมีการวางแนวเพื่อให้สิ่งต่อไปนี้
- แกน X ชี้ไปทางขวาและอยู่ในระนาบแนวนอนซึ่งตั้งฉากกับระนาบสมมาตรของยานพาหนะ
- กําหนดให้แกน Y ชี้ไปข้างหน้าและอยู่ในระนาบแนวนอน
เฟรมอ้างอิงยานพาหนะเป็นระบบพิกัดที่ใช้มือขวา ดังนั้นแกน Z จะชี้ขึ้น
แกน Z ของเฟรมอ้างอิงจะสอดคล้องกับแรงโน้มถ่วง ซึ่งหมายความว่าแกน X และแกน Y จะเป็นแนวนอนทั้งคู่ ด้วยเหตุนี้ แกน Y จึงอาจไม่ได้ผ่านเพลาหน้าเสมอไป
เซ็นเซอร์ฐาน
ประเภทเซ็นเซอร์ฐานจะตั้งชื่อตามเซ็นเซอร์ทางกายภาพที่เซ็นเซอร์เหล่านั้นแสดง เซ็นเซอร์เหล่านี้จะส่งต่อข้อมูลจากเซ็นเซอร์ทางกายภาพตัวเดียว (ตรงข้ามกับเซ็นเซอร์แบบผสมที่สร้างข้อมูลออกมาจากเซ็นเซอร์อื่นๆ) ตัวอย่างประเภทเซ็นเซอร์พื้นฐาน ได้แก่
SENSOR_TYPE_ACCELEROMETER
SENSOR_TYPE_GYROSCOPE
SENSOR_TYPE_MAGNETOMETER
อย่างไรก็ตาม เซ็นเซอร์ฐานไม่ใช่เซ็นเซอร์ที่ทำงานเหมือนกันและไม่ควรสับสนกับเซ็นเซอร์ที่จับสัญญาณจริงที่อยู่เบื้องหลัง ข้อมูลจากเซ็นเซอร์ฐานไม่ใช่เอาต์พุตดิบของเซ็นเซอร์ทางกายภาพ เนื่องจากมีการใช้การแก้ไข (เช่น การแก้ไขค่าเบี่ยงเบนและค่าชดเชยอุณหภูมิ)
เช่น ลักษณะของเซ็นเซอร์ฐานอาจแตกต่างจากลักษณะเฉพาะของเซ็นเซอร์จริงที่แฝงอยู่ในกรณีการใช้งานต่อไปนี้
- ชิปไจโรสโคปที่ได้รับการจัดประเภทให้มีช่วงความเบี่ยงเบน 1 องศา/วินาที
- หลังจากการสอบเทียบจากโรงงาน การปรับอุณหภูมิชดเชยและการชดเชยความเบี่ยงเบน จะทำให้ความเบี่ยงเบนจริงของเซ็นเซอร์ Android ลดลง ซึ่งอาจลดลงจนมั่นใจได้ว่าความเบี่ยงเบนจะต่ำกว่า 0.01 องศา/วินาที
- ในกรณีนี้ เราถือว่าเซ็นเซอร์ Android มีความเบี่ยงเบนต่ำกว่า 0.01 องศา/วินาที แม้ว่าชีตข้อมูลของเซ็นเซอร์ที่เกี่ยวข้องจะระบุว่า 1 องศา/วินาที
- บารอมิเตอร์ที่มีอัตราการใช้พลังงาน 100 uW
- เนื่องจากต้องส่งข้อมูลที่สร้างขึ้นจากชิปไปยัง SoC การใช้พลังงานจริงในการรวบรวมข้อมูลจากเซ็นเซอร์บารอมิเตอร์ของ Android จึงอาจสูงกว่ามาก เช่น 1,000 uW
- ในกรณีนี้ เราจะบอกว่าเซ็นเซอร์ Android ใช้พลังงาน 1,000 uW แม้ว่าการใช้พลังงานที่วัดได้ที่ขั้วต่อชิปบารอมิเตอร์จะเท่ากับ 100uW
- มาตรความเข้มสนามแม่เหล็กที่ใช้พลังงาน 100uW เมื่อปรับเทียบ แต่ใช้พลังงานมากขึ้นเมื่อปรับเทียบ
- ขั้นตอนการปรับเทียบอาจต้องเปิดใช้งานไจโรสโคป ซึ่งจะใช้พลังงาน 5,000 uW และเรียกใช้อัลกอริทึมบางอย่าง ซึ่งจะใช้พลังงานอีก 900 uW
- ในกรณีนี้ เราจะบอกว่าการสิ้นเปลืองพลังงานสูงสุดของเซ็นเซอร์ (Magnetometer) ของ Android คือ 6000 uW
- ในกรณีนี้ ปริมาณการใช้พลังงานโดยเฉลี่ยเป็นค่าที่มีประโยชน์มากกว่า และเป็นค่าที่รายงานในลักษณะคงที่ของเซ็นเซอร์ผ่าน HAL
ตัวตรวจวัดความเร่ง
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER)
แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ
เซ็นเซอร์ตัวตรวจวัดความเร่งรายงานความเร่งของอุปกรณ์ตามแกนเซ็นเซอร์ 3 แกน แรงเร่งที่วัดได้จะรวมทั้งแรงเร่งทางกายภาพ (การเปลี่ยนแปลงของความเร็ว) และแรงโน้มถ่วง ระบบจะรายงานการวัดในช่อง x, y และ z ของ sensors_event_t.acceleration
ค่าทั้งหมดเป็นหน่วย SI (m/s^2) และวัดความเร่งของอุปกรณ์ลบด้วยแรงโน้มถ่วงตามแกนเซ็นเซอร์ทั้ง 3
ตัวอย่างมีดังนี้
- ผลรวมของ (x, y, z) ควรใกล้เคียงกับ 0 เมื่ออยู่ในภาวะตกอิสระ
- เมื่ออุปกรณ์วางราบบนโต๊ะและถูกดันจากด้านซ้ายไปทางขวา ค่าความเร่งในแนว x จะเป็นค่าบวก
- เมื่ออุปกรณ์วางราบบนโต๊ะ ค่าความเร่งตามแกน z จะเท่ากับ +9.81 alo ซึ่งสอดคล้องกับความเร่งของอุปกรณ์ (0 m/s^2) ลบด้วยแรงโน้มถ่วง (-9.81 m/s^2)
- เมื่ออุปกรณ์วางราบบนโต๊ะและถูกดันขึ้นสู่ท้องฟ้า ค่าความเร่งจะมากกว่า +9.81 ซึ่งสอดคล้องกับความเร่งของอุปกรณ์ (+A m/s^2) ลบด้วยแรงโน้มถ่วง (-9.81 m/s^2)
การปรับเทียบค่าที่อ่านได้จะใช้ข้อมูลต่อไปนี้
- การชดเชยอุณหภูมิ
- การปรับเทียบอคติทางออนไลน์
- การปรับเทียบเครื่องชั่งออนไลน์
การสอบเทียบค่าเบี่ยงเบนและการปรับสเกลต้องอัปเดตเฉพาะในขณะที่เซ็นเซอร์ปิดใช้งานเท่านั้น เพื่อไม่ให้ค่ากระโดดขึ้นลงระหว่างสตรีมมิง
นอกจากนี้ มาตรวัดความเร่งจะรายงานความแม่นยำที่คาดไว้ของการอ่านค่าผ่าน sensors_event_t.acceleration.status
ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับช่องนี้ในค่าคงที่
SENSOR_STATUS_*
ของ
SensorManager
อุณหภูมิรอบข้าง
โหมดการรายงาน: เมื่อมีการเปลี่ยนแปลง
getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE)
แสดงผลเซ็นเซอร์ที่ไม่ปลุก
เซ็นเซอร์นี้จะแสดงอุณหภูมิแวดล้อม (ห้อง) เป็นองศาเซลเซียส
เซ็นเซอร์สนามแม่เหล็ก
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD)
แสดงผลเซ็นเซอร์ที่ไม่ปลุก
SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD
เซ็นเซอร์สนามแม่เหล็ก (หรือที่เรียกว่าเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก) จะรายงานสนามแม่เหล็กโดยรอบซึ่งวัดตามแกนเซ็นเซอร์ 3 แกน
การวัดจะรายงานในช่อง x, y และ z ของ sensors_event_t.magnetic
และค่าทั้งหมดจะอยู่ในหน่วยไมโครเทสลา (uT)
เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กยังรายงานความแม่นยำที่คาดว่าค่าที่อ่านได้ว่าจะอ่านได้
จนถึง sensors_event_t.magnetic.status
ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับช่องนี้ในค่าคงที่
SensorManager
’s
SENSOR_STATUS_*
การปรับเทียบค่าที่อ่านได้จะใช้ข้อมูลต่อไปนี้
- การชดเชยอุณหภูมิ
- การปรับเทียบแม่เหล็กอ่อนจากโรงงาน (หรือออนไลน์)
- การปรับเทียบฮาร์ดดิสก์ออนไลน์
เครื่องวัดการหมุน
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_GYROSCOPE)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ไจโรสโคปจะรายงานอัตราการหมุนของอุปกรณ์รอบแกนเซ็นเซอร์ 3 แกน
การหมุนเป็นบวกเมื่อหมุนทวนเข็มนาฬิกา (กฎมือขวา) กล่าวคือ ผู้สังเกตการณ์ที่มองจากตำแหน่งเชิงบวกบนแกน x, y หรือ z ที่อุปกรณ์ซึ่งอยู่ในจุดเริ่มต้นจะรายงานการหมุนเชิงบวกหากอุปกรณ์ดูเหมือนจะหมุนทวนเข็มนาฬิกา โปรดทราบว่านี่เป็นคำจำกัดความทางคณิตศาสตร์มาตรฐานของการหมุนตามเข็มนาฬิกาและไม่สอดคล้องกับคำจำกัดความของ "การพลิก" ในสาขาวิศวกรรมการบินและอวกาศ
ระบบจะรายงานการวัดในช่อง x, y และ z ของ sensors_event_t.gyro
และค่าทั้งหมดจะอยู่ในหน่วยเรเดียนต่อวินาที (rad/s)
ค่าที่อ่านได้จะได้รับการปรับเทียบโดยใช้
- การชดเชยอุณหภูมิ
- การชดเชยการปรับขนาดเริ่มต้น (หรือออนไลน์)
- การปรับเทียบความเบี่ยงเบนออนไลน์ (เพื่อขจัดความคลาดเคลื่อน)
เครื่องวัดการหมุนยังรายงานความแม่นยำของการอ่านค่าจนถึง sensors_event_t.gyro.status
อีกด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับช่องนี้ในค่าคงที่
SENSOR_STATUS_*
ของ
SensorManager
ไม่สามารถจําลองไจโรสโคปโดยอิงตามมาตรแม่เหล็กและเครื่องวัดความเร่งได้ เนื่องจากจะทำให้ความสอดคล้องและความสามารถในการตอบสนองในอุปกรณ์ลดลง โดยต้องอิงตามชิปไจโรสโคปปกติ
อัตราการเต้นของหัวใจ
โหมดการรายงาน: เมื่อมีการเปลี่ยนแปลง
getDefaultSensor(SENSOR_TYPE_HEART_RATE)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์วัดอัตราการเต้นของหัวใจจะรายงานอัตราการเต้นของหัวใจปัจจุบันของผู้ที่แตะอุปกรณ์
ระบบจะรายงานอัตราการเต้นของหัวใจปัจจุบันเป็นครั้งต่อนาที (BPM) ใน sensors_event_t.heart_rate.bpm
และรายงานสถานะของเซ็นเซอร์ใน sensors_event_t.heart_rate.status
ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับช่องนี้ในค่าคงที่
SENSOR_STATUS_*
ของ
SensorManager
โดยเฉพาะอย่างยิ่ง เมื่อเปิดใช้งานครั้งแรก ช่องสถานะของเหตุการณ์แรกต้องตั้งค่าเป็น SENSOR_STATUS_UNRELIABLE
เว้นแต่จะทราบว่าอุปกรณ์ไม่ได้อยู่บนร่างกาย เนื่องจากเซ็นเซอร์นี้เป็นแบบการเปลี่ยนแปลง ระบบจะสร้างเหตุการณ์เฉพาะในกรณีที่ heart_rate.bpm
หรือ heart_rate.status
มีการเปลี่ยนแปลงนับตั้งแต่เหตุการณ์ล่าสุด ระบบจะสร้างเหตุการณ์ทุกๆ sampling_period
รายการ
sensor_t.requiredPermission
มีค่าเป็น SENSOR_PERMISSION_BODY_SENSORS
เสมอ
น้อย
โหมดการรายงาน: On-change
getDefaultSensor(SENSOR_TYPE_LIGHT)
แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ
เซ็นเซอร์แสงจะรายงานความสว่างปัจจุบันเป็นหน่วยลักซ์ SI
การวัดจะแสดงใน sensors_event_t.light
พร็อกซิมิตี
โหมดการรายงาน: On-change
มักกำหนดเป็นเซ็นเซอร์ปลุก
getDefaultSensor(SENSOR_TYPE_PROXIMITY)
แสดงผลเซ็นเซอร์ปลุก
พร็อกซิมิตีเซ็นเซอร์จะรายงานระยะทางจากเซ็นเซอร์ไปยังพื้นผิวที่มองเห็นได้ใกล้ที่สุด
ตั้งแต่เวอร์ชัน Android 4.4 พร็อกซิมิตีเซ็นเซอร์จะเป็นเซ็นเซอร์ปลุกระบบเสมอ ซึ่งจะปลุก SoC ให้เริ่มทำงานเมื่อตรวจพบการเปลี่ยนแปลงของระยะใกล้ หลังจาก Android 4.4 เราขอแนะนำให้ใช้เซ็นเซอร์เวอร์ชันปลุกระบบนี้ก่อน เนื่องจากเซ็นเซอร์เวอร์ชันนี้สามารถใช้เปิดและปิดหน้าจอขณะทำการโทร
การวัดจะรายงานเป็นเซนติเมตรใน sensors_event_t.distance
โปรดทราบว่าเซ็นเซอร์ตรวจหาบุคคลในบริเวณใกล้เคียงบางรุ่นรองรับการวัดผลแบบ 2 ค่าเท่านั้น ได้แก่ "ใกล้" หรือ "ไกล"
ในกรณีนี้ เซ็นเซอร์จะรายงานค่า sensor_t.maxRange
ในสถานะ "ไกล" และค่าที่น้อยกว่า sensor_t.maxRange
ในสถานะ "ใกล้"
ความกดอากาศ
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_PRESSURE)
แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ
เซ็นเซอร์ความดัน (หรือที่เรียกว่าบารอมิเตอร์) จะรายงานความดันบรรยากาศในหน่วยเฮกโตปาสกาล (hPa)
การปรับเทียบค่าที่อ่านได้
- การชดเชยอุณหภูมิ
- การปรับเทียบค่าเบี่ยงเบนจากค่าที่โรงงานกำหนด
- การปรับเทียบเครื่องชั่งน้ำหนัก
บารอมิเตอร์มักใช้เพื่อประมาณการเปลี่ยนแปลงระดับความสูง หากต้องการประมาณความสูงสัมบูรณ์ ต้องใช้ความดันที่ระดับน้ำทะเล (เปลี่ยนแปลงตามสภาพอากาศ) เป็นข้อมูลอ้างอิง
ความชื้นสัมพัทธ์
โหมดการรายงาน: On-change
getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY)
แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ
เซ็นเซอร์ความชื้นสัมพัทธ์จะวัดความชื้นสัมพัทธ์ในอากาศและแสดงผลค่าเป็นเปอร์เซ็นต์
ประเภทเซ็นเซอร์คอมโพสิต
เซ็นเซอร์แบบคอมโพสิตจะสร้างข้อมูลโดยการประมวลผลและ/หรือผสานข้อมูลจากเซ็นเซอร์ที่จับสัญญาณทางกายภาพ 1 ตัวหรือหลายตัว (เซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ฐานเรียกว่าเซ็นเซอร์คอมโพสิต) ตัวอย่างของเซ็นเซอร์วัสดุเชิงประกอบ ได้แก่
- เครื่องตรวจจับการเดินและการเคลื่อนไหวที่สำคัญ ซึ่งมักอิงตามตัวตรวจวัดความเร่ง แต่ก็อิงตามเซ็นเซอร์อื่นๆ ได้ด้วยหากการสิ้นเปลืองพลังงานและความแม่นยำอยู่ในระดับที่ยอมรับได้
- เวกเตอร์การหมุนของเกม โดยอิงตามตัวตรวจวัดความเร่งและเครื่องวัดการหมุน
- เครื่องวัดการหมุนที่ยังไม่ได้ปรับเทียบ ซึ่งคล้ายกับเซ็นเซอร์ฐานของเครื่องวัดการหมุน แต่มีการรายงานการปรับเทียบค่าความเบี่ยงเบนแยกต่างหากแทนที่จะแก้ไขในการวัด
ลักษณะของเซ็นเซอร์คอมโพสิตจะมาจากลักษณะของข้อมูลขั้นสุดท้ายเช่นเดียวกับเซ็นเซอร์พื้นฐาน ตัวอย่างเช่น ปริมาณการใช้พลังงานของเวกเตอร์การหมุนของเกมอาจเท่ากับผลรวมของปริมาณการใช้พลังงานของชิปตรวจวัดความเร่ง ชิปเครื่องวัดการหมุน ชิปที่ประมวลผลข้อมูล และบัสที่ส่งข้อมูล อีกตัวอย่างหนึ่งคือ ความคลาดเคลื่อนของเวกเตอร์การหมุนของเกมจะขึ้นอยู่กับคุณภาพของอัลกอริทึมการปรับเทียบมากพอๆ กับลักษณะของเซ็นเซอร์ทางกายภาพ
ตารางต่อไปนี้แสดงประเภทเซ็นเซอร์คอมโพสิตที่ใช้ได้ เซ็นเซอร์คอมโพสิตแต่ละตัวใช้ข้อมูลจากเซ็นเซอร์ที่จับสัญญาณจริงอย่างน้อย 1 ตัว หลีกเลี่ยงการเลือกเซ็นเซอร์อื่นๆ ที่อยู่เบื้องหลังเพื่อประมาณผลลัพธ์ เนื่องจากจะทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี
ประเภทเซ็นเซอร์ | หมวดหมู่ | เซ็นเซอร์ที่จับการเคลื่อนไหวร่างกาย | โหมดการรายงาน |
---|---|---|---|
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน ต้องไม่ใช้แม่เหล็กไฟฟ้า |
ต่อเนื่อง |
|
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก ต้องไม่ใช้เครื่องวัดการหมุน |
ต่อเนื่อง |
|
ท่าทางสัมผัสเพื่อดูข้อมูลโดยย่อ | การโต้ตอบ |
ไม่ระบุ |
ถ่ายครั้งเดียว |
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน |
ต่อเนื่อง |
|
ไม่ได้ปรับเทียบ |
เครื่องวัดการหมุน |
ต่อเนื่อง |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน (หากมี) หรือมาตรแม่เหล็ก (หากไม่มีเครื่องวัดการหมุน) |
ต่อเนื่อง |
|
ไม่ได้ปรับเทียบ |
เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก |
ต่อเนื่อง |
|
การวางแนว (เลิกใช้งานแล้ว) |
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก เครื่องวัดการหมุน (หากมี) |
ต่อเนื่อง |
การโต้ตอบ |
ไม่ระบุ |
ถ่ายครั้งเดียว |
|
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก เครื่องวัดการหมุน |
ต่อเนื่อง |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง (หรือตัวตรวจวัดความเร่งอื่นๆ ในกรณีที่ใช้พลังงานต่ำมาก) |
ถ่ายครั้งเดียว |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง |
เมื่อเปลี่ยนแปลง |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง |
พิเศษ |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง |
พิเศษ |
|
การโต้ตอบ |
ไม่ระบุ |
ถ่ายครั้งเดียว |
= เซ็นเซอร์พลังงานต่ำ
เซ็นเซอร์แบบคอมโพสิตของกิจกรรม
การเร่งความเร็วเชิงเส้น
เซ็นเซอร์ที่จับการเคลื่อนไหวพื้นฐาน: ตัวตรวจวัดความเร่งและเครื่องวัดการหมุน (หากมี) (หรือแม่เหล็กไฟฟ้าหากไม่มีเครื่องวัดการหมุน)
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ความเร่งเชิงเส้นจะรายงานความเร่งเชิงเส้นของอุปกรณ์ในเฟรมเซ็นเซอร์โดยไม่รวมแรงโน้มถ่วง
เอาต์พุตคือแนวคิด: เอาต์พุตของเครื่องวัดความเร่งลบด้วยเอาต์พุตของเซ็นเซอร์แรงโน้มถ่วง โดยระบบจะรายงานเป็น m/s^2 ในช่อง x, y และ z ของ sensors_event_t.acceleration
ค่าที่อ่านได้บนแกนทั้งหมดควรใกล้เคียงกับ 0 เมื่ออุปกรณ์ไม่เคลื่อนไหว
หากอุปกรณ์มีเครื่องวัดการหมุน เซ็นเซอร์ความเร่งแบบเชิงเส้นต้องใช้เครื่องวัดการหมุนและตัวตรวจวัดความเร่งเป็นอินพุต
หากอุปกรณ์ไม่มีเครื่องวัดการหมุน เซ็นเซอร์ความเร่งแบบเชิงเส้นต้องใช้ตัวตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กเป็นอินพุต
การเคลื่อนไหวที่สำคัญ
เซ็นเซอร์ร่างกายพื้นฐาน: ตัวตรวจวัดความเร่ง (หรือตัวตรวจวัดความเร่งอื่นตราบใดที่มีพลังงานต่ำ)
โหมดการรายงาน: แบบครั้งเดียว
พลังงานต่ำ
ใช้เซ็นเซอร์นี้เฉพาะเวอร์ชันที่ปลุกเท่านั้น
getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)
แสดงผลเซ็นเซอร์ปลุก
เซ็นเซอร์ตรวจจับการเคลื่อนไหวที่สำคัญจะทริกเกอร์เมื่อตรวจพบการเคลื่อนไหวที่สำคัญ ซึ่งเป็นการเคลื่อนไหวที่อาจทําให้ตําแหน่งของผู้ใช้เปลี่ยนแปลง
ตัวอย่างการเคลื่อนไหวที่สำคัญดังกล่าว ได้แก่
- เดินหรือขี่จักรยาน
- นั่งอยู่ในรถ โค้ช หรือรถไฟที่กำลังเคลื่อนที่
ตัวอย่างสถานการณ์ที่ไม่ทริกเกอร์การเคลื่อนไหวที่สำคัญ
- โทรศัพท์อยู่ในกระเป๋าและบุคคลไม่เคลื่อนไหว
- โทรศัพท์วางอยู่บนโต๊ะและโต๊ะสั่นเล็กน้อยเนื่องจากมีรถสัญจรหรือเครื่องซักผ้าอยู่ใกล้ๆ
ในระดับสูง ระบบจะใช้อุปกรณ์ตรวจจับการเคลื่อนไหวที่สำคัญเพื่อลดการใช้พลังงานในการระบุตำแหน่ง เมื่ออัลกอริทึมการระบุตำแหน่งตรวจพบว่าอุปกรณ์ไม่มีการเคลื่อนไหว อัลกอริทึมจะเปลี่ยนไปใช้โหมดพลังงานต่ำ ซึ่งจะอาศัยการเคลื่อนไหวที่สำคัญเพื่อปลุกอุปกรณ์เมื่อผู้ใช้เปลี่ยนตำแหน่ง
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ ซึ่งจะแลกมาด้วยการใช้พลังงานที่อาจส่งผลให้เกิดผลลบลวงจำนวนเล็กน้อย การดำเนินการนี้มีสาเหตุดังนี้
- เป้าหมายของเซ็นเซอร์นี้คือประหยัดพลังงาน
- การทริกเกอร์เหตุการณ์เมื่อผู้ใช้ไม่ได้เคลื่อนไหว (ผลบวกลวง) นั้นสิ้นเปลืองพลังงาน จึงควรหลีกเลี่ยง
- การไม่ทริกเกอร์เหตุการณ์เมื่อผู้ใช้เคลื่อนไหว (ผลลบเท็จ) นั้นยอมรับได้ ตราบใดที่ไม่เกิดซ้ำ หากผู้ใช้เดินเป็นเวลา 10 วินาที การไม่ทริกเกอร์เหตุการณ์ภายใน 10 วินาทีนั้นยอมรับไม่ได้
เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1
ใน sensors_event_t.data[0]
ตัวตรวจจับก้าว
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง (+ อาจใช้เซ็นเซอร์อื่นๆ ได้ตราบใดที่พลังงานต่ำ)
โหมดการรายงาน: พิเศษ (1 เหตุการณ์ต่อขั้นตอนที่ดำเนินการ)
พลังงานต่ำ
getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)
แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ
ตัวตรวจจับจำนวนก้าวจะสร้างเหตุการณ์ทุกครั้งที่ผู้ใช้เดิน
การประทับเวลาของเหตุการณ์ sensors_event_t.timestamp
ตรงกับเวลาที่เท้าแตะพื้น ซึ่งทำให้เกิดความแปรปรวนสูงในการเร่ง
ตัวตรวจจับจำนวนก้าวควรมีความล่าช้าต่ำกว่า (น้อยกว่า 2 วินาที) เมื่อเทียบกับเครื่องนับก้าว ทั้งตัวตรวจจับก้าวและตัวนับก้าวจะตรวจจับเมื่อผู้ใช้เดิน วิ่ง และเดินขึ้นบันได โดยไม่ควรทริกเกอร์เมื่อผู้ใช้ขี่จักรยาน ขับรถ หรืออยู่ในยานพาหนะอื่นๆ
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ กล่าวคือ หากตรวจจับการก้าวในฮาร์ดแวร์ไม่ได้ ก็ไม่ควรกำหนดเซ็นเซอร์นี้ โดยเฉพาะอย่างยิ่งเมื่อเปิดใช้งานตัวตรวจจับการเดินแต่ไม่ได้เปิดใช้งานเครื่องวัดความเร่ง เฉพาะการเดินเท่านั้นที่ควรทริกเกอร์การขัดจังหวะ (ไม่ใช่ค่าที่อ่านได้จากเครื่องวัดความเร่งทุกค่า)
sampling_period_ns
ไม่มีผลต่อตัวตรวจจับจำนวนก้าว
เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1
ใน sensors_event_t.data[0]
ตัวนับก้าว
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง (+ อาจใช้เซ็นเซอร์อื่นๆ ได้ตราบใดที่พลังงานต่ำ)
โหมดการรายงาน: On-change
พลังงานต่ำ
getDefaultSensor(SENSOR_TYPE_STEP_COUNTER)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เครื่องนับก้าวจะรายงานจํานวนก้าวที่ผู้ใช้เดินตั้งแต่การรีบูตครั้งล่าสุดขณะเปิดใช้งาน
การวัดจะรายงานเป็น uint64_t
ใน sensors_event_t.step_counter
และจะรีเซ็ตเป็น 0 เมื่อรีบูตระบบเท่านั้น
ระบบจะตั้งการประทับเวลาของเหตุการณ์เป็นเวลาที่ดําเนินการขั้นตอนสุดท้ายสําหรับเหตุการณ์นั้น
ดูประเภทเซ็นเซอร์ตัวตรวจจับก้าวเพื่อดูสัญญาณของเวลาที่มีการก้าว
ตัวนับก้าวอาจมีความล่าช้าสูงกว่า (สูงสุด 10 วินาที) เมื่อเทียบกับตัวตรวจจับการเดิน ความล่าช้านี้ทำให้เซ็นเซอร์มีความแม่นยำสูง โดยจํานวนก้าวหลังจากการวัดตลอดทั้งวันควรอยู่ภายใน 10% ของจํานวนก้าวจริง ทั้งเครื่องตรวจจับจำนวนก้าวและตัวนับจำนวนก้าวจะตรวจจับเมื่อผู้ใช้เดิน วิ่ง และเดินขึ้นบันได โดยไม่ควรทริกเกอร์เมื่อผู้ใช้ขี่จักรยาน ขับรถ หรืออยู่ในยานพาหนะอื่นๆ
ฮาร์ดแวร์ต้องแน่ใจว่าจำนวนก้าวภายในจะไม่ล้นเกิน ขนาดขั้นต่ำของตัวนับภายในของฮาร์ดแวร์คือ 16 บิต ในกรณีที่ใกล้จะเกิดการท่วม (สูงสุดทุกๆ 2^16 ขั้นตอน) ระบบจะปลุก SoC เพื่อให้โปรแกรมควบคุมดำเนินการบำรุงรักษาตัวนับได้
ตามที่ระบุไว้ในการโต้ตอบ ขณะที่เซ็นเซอร์นี้ทำงานอยู่ จะไม่รบกวนเซ็นเซอร์อื่นๆ โดยเฉพาะตัวตรวจวัดความเร่ง ซึ่งอาจใช้งานได้ดีอยู่แล้ว
หากอุปกรณ์บางเครื่องไม่รองรับโหมดการทํางานเหล่านี้ HAL ต้องไม่รายงานเซ็นเซอร์ประเภทนี้ กล่าวคือ ไม่อนุญาตให้ "จําลอง" เซ็นเซอร์นี้ใน HAL
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ กล่าวคือ หากตรวจจับการเดินในฮาร์ดแวร์ไม่ได้ ก็ไม่ควรกำหนดเซ็นเซอร์นี้ โดยเฉพาะอย่างยิ่ง เมื่อเปิดใช้งานตัวนับก้าวแต่ไม่ได้เปิดใช้งานตัวตรวจวัดความเร่ง เฉพาะการนับก้าวเท่านั้นที่ควรทริกเกอร์การขัดจังหวะ (ไม่ใช่ข้อมูลตัวตรวจวัดความเร่ง)
ตัวตรวจจับการเอียง
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง (+ อาจใช้เซ็นเซอร์อื่นๆ ได้ตราบใดที่พลังงานต่ำ)
โหมดการรายงาน: พิเศษ
พลังงานต่ำ
ใช้เฉพาะเวอร์ชันปลุกระบบของเซ็นเซอร์นี้
getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR)
แสดงผลเซ็นเซอร์ปลุก
ตัวตรวจจับการเอียงจะสร้างเหตุการณ์ขึ้นทุกครั้งที่ตรวจพบเหตุการณ์การเอียง
เหตุการณ์การเอียงจะกำหนดโดยทิศทางของค่าเฉลี่ยของกรอบเวลา 2 วินาทีซึ่งแรงโน้มถ่วงเปลี่ยนแปลงอย่างน้อย 35 องศานับตั้งแต่การเปิดใช้งานหรือเหตุการณ์ล่าสุดที่เซ็นเซอร์สร้างขึ้น อัลกอริทึมมีดังนี้
reference_estimated_gravity
= การวัดความเร่งของตัวตรวจวัดความเร่งในช่วงวินาทีแรกหลังจากการเปิดใช้งานหรือค่าแรงโน้มถ่วงโดยประมาณเมื่อระบบสร้างเหตุการณ์การเอียงครั้งล่าสุดcurrent_estimated_gravity
= ค่าเฉลี่ยของการวัดจากเครื่องวัดความเร่งในช่วง 2 วินาทีที่ผ่านมา- เรียกให้แสดงเมื่อ
angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees
การเร่งความเร็วขนาดใหญ่โดยไม่มีการเปลี่ยนการวางแนวโทรศัพท์ไม่ควรทำให้เกิด
เหตุการณ์การเอียง ตัวอย่างเช่น การเลี้ยวหักศอกหรือการเร่งความเร็วที่สูงขณะขับรถไม่ควรทำให้เกิดการเอียง แม้ว่ามุมของความเร่งเฉลี่ยอาจแตกต่างออกไปมากกว่า 35 องศาก็ตาม
โดยปกติแล้ว เซ็นเซอร์นี้จะติดตั้งใช้งานด้วยความช่วยเหลือจากเครื่องวัดความเร่งเท่านั้น คุณใช้เซ็นเซอร์อื่นๆ ได้เช่นกันในกรณีที่เซ็นเซอร์ดังกล่าวไม่ได้ใช้พลังงานมากขึ้นมากนัก นี่คือเซ็นเซอร์พลังงานต่ำที่ควรช่วยให้ SoC เข้าสู่โหมดสลีปได้ อย่าจำลองเซ็นเซอร์นี้ใน HAL เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1
ใน sensors_event_t.data[0]
เซ็นเซอร์แบบคอมโพสิตของการวางแนว
เวกเตอร์การหมุน
เซ็นเซอร์ที่อยู่บนอุปกรณ์ ได้แก่ ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก และเครื่องวัดการหมุน
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR)
แสดงเซ็นเซอร์ที่ไม่ปลุก
เซ็นเซอร์เวกเตอร์การหมุนจะรายงานการวางแนวของอุปกรณ์สัมพันธ์กับกรอบพิกัดตะวันออก-เหนือ-บน โดยทั่วไปค่านี้ได้มาจากการผสานรวมการอ่านค่าจากตัวตรวจวัดความเร่ง เครื่องวัดการหมุน และเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก ระบบพิกัดตะวันออก-เหนือ-ขึ้น หมายถึงพื้นฐานออโตอร์ธออร์มัลโดยตรง โดยที่
- X ชี้ไปทางทิศตะวันออกและสัมผัสกับพื้น
- Y ชี้ไปทางทิศเหนือและสัมผัสกับพื้น
- Z จะชี้ขึ้นฟ้าและตั้งฉากกับพื้น
การวางแนวของโทรศัพท์แสดงด้วยการหมุนที่จำเป็นในการปรับแนวพิกัดตะวันออก-เหนือ-บนให้สอดคล้องกับพิกัดของโทรศัพท์ กล่าวคือ การใช้การหมุนกับเฟรมโลก (X,Y,Z) จะจัดแนวเฟรมให้สอดคล้องกับพิกัดของโทรศัพท์ (x,y,z)
การหมุนจะเหมือนกับการหมุนโทรศัพท์ตามมุม θ รอบแกน rot_axis
เพื่อเปลี่ยนจากการวางแนวอุปกรณ์อ้างอิง (ตะวันออก-เหนือ-บน) ไปเป็นการวางแนวอุปกรณ์ปัจจุบัน การหมุนจะเข้ารหัสเป็นส่วนประกอบ x, y, z, w หน่วยที่ไม่มีหน่วย 4 หน่วยของหน่วยควอเทอร์เนียน
sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
sensors_event_t.data[3] = cos(theta/2)
สถานที่:
- ช่อง x, y และ z ของ
rot_axis
คือพิกัดตะวันออก-เหนือ-บนของเวกเตอร์ความยาว 1 หน่วยที่แสดงแกนหมุน theta
คือมุมการหมุน
ควอเทอร์เนียนเป็นควอเทอร์เนียนหน่วย: ต้องเป็นค่าที่เป็นไปตามมาตรฐาน 1
มิเช่นนั้นจะทำให้ไคลเอ็นต์ทำงานผิดปกติ
นอกจากนี้ เซ็นเซอร์นี้จะรายงานความแม่นยำของส่วนหัวโดยประมาณ ดังนี้
sensors_event_t.data[4] = estimated_accuracy
(เป็นเรเดียน)
ข้อผิดพลาดของส่วนหัวต้องน้อยกว่า estimated_accuracy
95% ของเวลาทั้งหมด เซ็นเซอร์นี้ต้องใช้ไจโรสโคปเป็นอินพุตการเปลี่ยนแปลงการวางแนวหลัก
เซ็นเซอร์นี้ยังใช้อินพุตจากเครื่องตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กเพื่อชดเชยความคลาดเคลื่อนของเครื่องวัดการหมุน และไม่สามารถติดตั้งใช้งานโดยใช้เพียงเครื่องตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก
เวกเตอร์การหมุนเกม
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่งและเครื่องวัดการหมุน (ไม่มีเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก)
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์เวกเตอร์การหมุนของเกมคล้ายกับเซ็นเซอร์เวกเตอร์การหมุน แต่ไม่ใช้สนามแม่เหล็กโลก ดังนั้น แกน Y จึงไม่ได้ชี้ไปทางทิศเหนือ แต่ชี้ไปยังข้อมูลอ้างอิงอื่น การอ้างอิงดังกล่าวได้รับอนุญาตให้ลอยตาม ขนาดในลำดับเดียวกับเครื่องวัดการหมุนจะลอยไปรอบแกน Z
ดูรายละเอียดเกี่ยวกับวิธีตั้งค่า sensors_event_t.data[0-3]
ได้ที่เซ็นเซอร์เวกเตอร์การหมุน เซ็นเซอร์นี้ไม่ได้รายงานความแม่นยำของทิศทางโดยประมาณ sensors_event_t.data[4]
สงวนไว้และควรตั้งค่าเป็น 0
ในกรณีที่ดีที่สุด โทรศัพท์ที่หมุนและกลับไปยังการวางแนวเดียวกันกับโลกแห่งความเป็นจริงควรรายงานเวกเตอร์การหมุนของเกมเดียวกัน
เซ็นเซอร์นี้ต้องอิงตามเครื่องวัดการหมุนและตัวตรวจวัดความเร่ง ไม่สามารถใช้เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กเป็นอินพุตได้ ยกเว้นใช้แบบอ้อมผ่านการประมาณค่าความเบี่ยงเบนของไจโรสโคป
แรงโน้มถ่วง
เซ็นเซอร์ที่จับการเคลื่อนไหวพื้นฐาน: ตัวตรวจวัดความเร่งและเครื่องวัดการหมุน (หากมี) (หรือแม่เหล็กไฟฟ้าหากไม่มีเครื่องวัดการหมุน)
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_GRAVITY)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์แรงโน้มถ่วงจะรายงานทิศทางและขนาดของแรงโน้มถ่วงในพิกัดของอุปกรณ์
ระบบจะรายงานองค์ประกอบเวกเตอร์แรงโน้มถ่วงเป็น m/s^2 ในช่อง x, y และ z ของ sensors_event_t.acceleration
เมื่ออุปกรณ์ไม่มีการใช้งาน เอาต์พุตของเซ็นเซอร์แรงโน้มถ่วงควรเหมือนกับของตัวตรวจวัดความเร่ง ในโลก ขนาดประมาณ 9.8 m/s^2
หากอุปกรณ์มีเครื่องวัดการหมุน เซ็นเซอร์แรงโน้มถ่วงต้องใช้เครื่องวัดการหมุนและตัวตรวจวัดความเร่งเป็นอินพุต
หากอุปกรณ์ไม่มีเครื่องวัดการหมุน เซ็นเซอร์แรงโน้มถ่วงต้องใช้ตัวตรวจวัดความเร่งและแม่เหล็กเป็นอินพุต
เวกเตอร์การหมุนของสนามแม่เหล็กโลก
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก (ไม่มีเครื่องวัดการหมุน)
โหมดการรายงาน: ต่อเนื่อง
พลังงานต่ำ
getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR)
แสดงผลเซ็นเซอร์ที่ไม่ปลุก
เวกเตอร์การหมุนของสนามแม่เหล็กโลกคล้ายกับเซ็นเซอร์เวกเตอร์การหมุน แต่จะอาศัยแม่เหล็กไฟฟ้าและไม่ใช้ไจโรสโคป
เซ็นเซอร์นี้ต้องอิงตามแม่เหล็กไฟฟ้า ติดตั้งใช้งานโดยใช้ไจโรสโคปไม่ได้ และเซ็นเซอร์นี้ใช้อินพุตจากไจโรสโคปไม่ได้
ดูรายละเอียดเกี่ยวกับวิธีตั้งค่า sensors_event_t.data[0-4]
ได้ที่เซ็นเซอร์เวกเตอร์การหมุน
ข้อผิดพลาดของทิศทางต้องน้อยกว่าความแม่นยำโดยประมาณ (sensors_event_t.data[4]
) 95% ของเวลา เช่นเดียวกับเซ็นเซอร์เวกเตอร์การหมุน
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ จึงต้องติดตั้งในฮาร์ดแวร์
การวางแนว (เลิกใช้งานแล้ว)
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก และ (หากมี) การหมุน
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_ORIENTATION)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
หมายเหตุ: นี่เป็นเซ็นเซอร์ประเภทเก่าที่เลิกใช้งานแล้วใน Android SDK เนื่องจากมีการแทนที่ด้วยเซ็นเซอร์เวกเตอร์การหมุน ซึ่งกำหนดให้ชัดเจนยิ่งขึ้น ใช้เซ็นเซอร์เวกเตอร์การหมุนแทนเซ็นเซอร์การวางแนวเมื่อเป็นไปได้
เซ็นเซอร์การวางแนวจะรายงานลักษณะการวางแนวของอุปกรณ์ การวัดจะรายงานเป็นองศาในช่อง x, y และ z ของ sensors_event_t.orientation
ดังนี้
sensors_event_t.orientation.x
: มุมทิศ นั่นคือมุมระหว่างทิศเหนือแม่เหล็กกับแกน Y รอบแกน Z (0<=azimuth<360
) 0=เหนือ 90=ตะวันออก 180=ใต้ 270=ตะวันตกsensors_event_t.orientation.y
: การเอียง การหมุนรอบแกน X (-180<=pitch<=180
) โดยมีค่าเป็นบวกเมื่อแกน Z ขยับเข้าหาแกน Ysensors_event_t.orientation.z
: การหมุนรอบแกน Y (-90<=roll<=90
), มีค่าเป็นบวกเมื่อแกน X เคลื่อนที่เข้าหาแกน Z
โปรดทราบว่ามุมการกลิ้งเป็นค่าบวกตามเข็มนาฬิกาเนื่องจากเหตุผลทางประวัติศาสตร์ (ในทางคณิตศาสตร์ ค่าควรเป็นบวกในทิศทางทวนเข็มนาฬิกา):
คำจำกัดความนี้แตกต่างจากการหมุนตามแนวราบ การหมุนตามแนวตั้ง และการหมุนตามแนวเฉียงที่ใช้ในการบิน ซึ่งแกน X จะขนานกับด้านยาวของเครื่องบิน (จากส่วนท้ายไปส่วนหัว)
เซ็นเซอร์การวางแนวจะรายงานความแม่นยำที่คาดไว้ของการอ่านค่าผ่าน sensors_event_t.orientation.status
ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้ของช่องนี้ได้จากค่าคงที่
SENSOR_STATUS_*
ของ
SensorManager
เซ็นเซอร์ที่ไม่ได้ปรับเทียบ
เซ็นเซอร์ที่ไม่ได้ปรับเทียบจะให้ผลลัพธ์ดิบมากกว่าและอาจมีอคติอยู่บ้าง แต่ก็จะมี "การกระโดด" น้อยกว่าจากการแก้ไขที่ใช้การปรับเทียบ แอปบางแอปอาจต้องการผลลัพธ์ที่ไม่ได้ปรับเทียบเหล่านี้เนื่องจากราบรื่นและน่าเชื่อถือมากกว่า ตัวอย่างเช่น หากแอปพยายามทำการผสานเซ็นเซอร์ด้วยตนเอง การนำการปรับเทียบมาใช้อาจทำให้ผลลัพธ์บิดเบือนได้
ตัวตรวจวัดความเร่งไม่ได้ปรับเทียบ
เซ็นเซอร์ร่างกายพื้นฐาน: ตัวตรวจวัดความเร่ง
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED)
แสดงผลเซ็นเซอร์ที่ไม่ปลุก
เซ็นเซอร์ตรวจวัดความเร่งที่ไม่ได้ปรับเทียบจะรายงานความเร่งของอุปกรณ์ตามแกนเซ็นเซอร์ทั้ง 3 แกนโดยไม่มีการแก้ไขความเบี่ยงเบน (ความเบี่ยงเบนของโรงงานและการชดเชยอุณหภูมิจะมีผลกับการวัดที่ไม่ได้ปรับเทียบ) พร้อมกับค่าประมาณความเบี่ยงเบน
ค่าทั้งหมดอยู่ในหน่วย SI (m/s^2) และมีการรายงานในช่องของ
sensors_event_t.uncalibrated_accelerometer
:
x_uncalib
: การเร่ง (ไม่มีการชดเชยความเบี่ยงเบน) ตามแกน Xy_uncalib
: การเร่ง (โดยไม่มีการชดเชยการให้น้ำหนักพิเศษ) ตามแกน Yz_uncalib
: การเร่ง (ไม่มีการชดเชยความเบี่ยงเบน) ตามแกน Zx_bias
: ความเบี่ยงเบนโดยประมาณตามแกน Xy_bias
: อคติโดยประมาณตามแกน Yz_bias
: ความเบี่ยงเบนโดยประมาณตามแกน Z
เครื่องวัดการหมุนไม่ได้ปรับเทียบ
เซ็นเซอร์ทางกายภาพพื้นฐาน: ไจโรสโคป
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เครื่องวัดการหมุนที่ไม่ได้ปรับเทียบจะรายงานอัตราการหมุนรอบแกนเซ็นเซอร์โดยไม่มีการชดเชยค่าเบี่ยงเบน พร้อมกับค่าประมาณของค่าเบี่ยงเบน ค่าทั้งหมดจะอยู่ในหน่วยเรเดียน/วินาทีและจะรายงานในช่องของ sensors_event_t.uncalibrated_gyro
ดังนี้
x_uncalib
: ความเร็วเชิงมุม (ไม่มีการชดเชยความคลาดเคลื่อน) รอบแกน Xy_uncalib
: ความเร็วเชิงมุม (ไม่มีการชดเชยความคลาดเคลื่อน) รอบแกน Yz_uncalib
: ความเร็วเชิงมุม (ไม่มีการชดเชยการดริฟต์) รอบแกน Zx_bias
: ความคลาดเคลื่อนโดยประมาณรอบแกน Xy_bias
: ความคลาดเคลื่อนโดยประมาณรอบแกน Yz_bias
: ความคลาดเคลื่อนโดยประมาณรอบแกน Z
แนวคิดของการวัดผลที่ไม่ได้ปรับเทียบคือผลรวมของการวัดผลที่ปรับเทียบแล้วและการประมาณค่าความเบี่ยงเบน _uncalibrated = _calibrated + _bias
คาดว่าค่า x_bias
, y_bias
และ z_bias
จะเพิ่มขึ้นทันทีที่ค่าประมาณของความคลาดเคลื่อนเปลี่ยนแปลง และควรคงที่ตลอดช่วงที่เหลือ
ดูคำจำกัดความของเซ็นเซอร์ไจโรสโคปเพื่อดูรายละเอียดเกี่ยวกับระบบพิกัดที่ใช้
ต้องใช้การปรับเทียบจากโรงงานและการชดเชยอุณหภูมิกับการวัด นอกจากนี้ ยังต้องใช้การประมาณความคลาดเคลื่อนของไจโรสโคปเพื่อให้รายงานค่าประมาณที่เหมาะสมใน x_bias
,
y_bias
และ z_bias
หากการติดตั้งใช้งานไม่สามารถประมาณการเลื่อน ก็ไม่ต้องใช้เซ็นเซอร์นี้
หากมีเซ็นเซอร์นี้ เซ็นเซอร์ Gyroscope ที่เกี่ยวข้องก็ต้องมีด้วย และเซ็นเซอร์ทั้ง 2 ตัวต้องใช้ค่า sensor_t.name
และ sensor_t.vendor
เดียวกัน
สนามแม่เหล็กไม่ได้ปรับเทียบ
เซ็นเซอร์ทางกายภาพพื้นฐาน: มาตรแม่เหล็ก
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์สนามแม่เหล็กที่ไม่ได้ปรับเทียบจะรายงานสนามแม่เหล็กรอบตัวพร้อมกับค่าประมาณการปรับเทียบด้วยเหล็กแข็ง ค่าทั้งหมดเป็นไมโครเทสลา (uT) และรายงานในช่องของ sensors_event_t.uncalibrated_magnetic
ดังนี้
x_uncalib
: สนามแม่เหล็ก (ไม่มีการชดเชยเหล็กแข็ง) ตามแกน Xy_uncalib
: สนามแม่เหล็ก (ไม่มีการชดเชยเหล็กแข็ง) ตามแกน Yz_uncalib
: สนามแม่เหล็ก (ไม่มีการชดเชยด้วยเหล็กแข็ง) ตามแนวแกน Zx_bias
: การชดเชยเหล็กแข็งโดยประมาณตามแกน Xy_bias
: การให้น้ำหนักเหล็กแข็งโดยประมาณตามแกน Yz_bias
: การชดเชยเหล็กแข็งโดยประมาณตามแกน Z
โดยหลักการแล้ว การวัดที่ไม่มีการปรับเทียบคือผลบวกของการวัดที่มีการปรับเทียบและค่าประมาณการให้น้ำหนักพิเศษ: _uncalibrated = _calibrated + _bias
แมกนีตอมิกเตอร์ที่ไม่ได้ปรับเทียบช่วยให้อัลกอริทึมระดับสูงขึ้นสามารถจัดการกับการประมาณเหล็กแข็งที่ไม่ดีได้ ค่า x_bias
, y_bias
และ z_bias
คาดว่าจะเพิ่มขึ้นทันทีที่ค่าประมาณของฮาร์ดไอรอนมีการเปลี่ยนแปลง และควรคงที่ตลอดช่วงเวลาที่เหลือ
ต้องใช้การปรับเทียบเหล็กอ่อนและชดเชยอุณหภูมิกับ
การวัด นอกจากนี้ ยังต้องใช้การประมาณการแบบแข็งเพื่อให้รายงานค่าประมาณที่สมเหตุสมผลใน x_bias
, y_bias
และ z_bias
ได้ หากการติดตั้งใช้งานไม่สามารถประมาณค่าความเบี่ยงเบนได้ แสดงว่าต้องไม่ติดตั้งใช้งานเซ็นเซอร์นี้
หากมีเซ็นเซอร์นี้ จะต้องมีเซ็นเซอร์สนามแม่เหล็กที่เกี่ยวข้องด้วย และเซ็นเซอร์ทั้ง 2 ตัวต้องใช้ค่า sensor_t.name
และ sensor_t.vendor
เดียวกัน
มุมบานพับ
โหมดการรายงาน: เมื่อเปลี่ยนแปลง
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
แสดงเซ็นเซอร์การปลุก
เซ็นเซอร์มุมของบานพับจะวัดมุม (เป็นองศา) ระหว่างชิ้นส่วน 2 ชิ้นของอุปกรณ์ การเคลื่อนไหวของบานพับที่วัดโดยเซ็นเซอร์ประเภทนี้คาดว่าจะเปลี่ยนวิธีที่ผู้ใช้โต้ตอบกับอุปกรณ์ เช่น โดยการกางออกหรือเปิดเผยจอแสดงผล
เซ็นเซอร์คอมโพสิตของการโต้ตอบ
เซ็นเซอร์บางตัวใช้เพื่อตรวจจับการโต้ตอบกับผู้ใช้เป็นหลัก เราไม่ได้กำหนดว่าต้องติดตั้งเซ็นเซอร์เหล่านั้นอย่างไร แต่เซ็นเซอร์ต้องใช้พลังงานต่ำ ผู้ผลิตอุปกรณ์เป็นผู้รับผิดชอบในการตรวจสอบคุณภาพในแง่ประสบการณ์ของผู้ใช้
ท่าทางสัมผัสสำหรับปลุก
เซ็นเซอร์ทางกายภาพที่สำคัญ: ไม่ระบุ (ใช้พลังงานต่ำ)
โหมดการรายงาน: แบบครั้งเดียว
พลังงานต่ำ
ใช้เซ็นเซอร์นี้เฉพาะเวอร์ชันที่ปลุกเท่านั้น
getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE)
แสดงเซ็นเซอร์การปลุกระบบ
เซ็นเซอร์ท่าทางสัมผัสเพื่อปลุกช่วยให้อุปกรณ์ตื่นขึ้นตามการเคลื่อนไหวที่เฉพาะเจาะจงของอุปกรณ์ เมื่อเซ็นเซอร์นี้ทำงาน อุปกรณ์จะทํางานเหมือนกับมีการกดปุ่มเปิด/ปิดเพื่อเปิดหน้าจอ ผู้ใช้อาจปิดใช้งานลักษณะการทำงานนี้ (การเปิดหน้าจอเมื่อเซ็นเซอร์นี้ทริกเกอร์) ในการตั้งค่าอุปกรณ์ การเปลี่ยนแปลงการตั้งค่าจะไม่ส่งผลต่อลักษณะการทํางานของเซ็นเซอร์ แต่จะส่งผลต่อว่าเฟรมเวิร์กจะเปิดหน้าจอเมื่อเซ็นเซอร์ทริกเกอร์หรือไม่เท่านั้น ไม่มีการระบุท่าทางสัมผัสจริงที่จะตรวจจับ และผู้ผลิตอุปกรณ์จะเลือกได้
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ เนื่องจากมีแนวโน้มที่จะเปิดใช้งานทุกวันตลอด 24 ชั่วโมง
เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1
ใน sensors_event_t.data[0]
ท่าทางสัมผัสเพื่อรับสาย
เซ็นเซอร์ทางกายภาพที่สำคัญ: ไม่ระบุ (ใช้พลังงานต่ำ)
โหมดการรายงาน: แบบครั้งเดียว
พลังงานต่ำ
ใช้เฉพาะเซ็นเซอร์เวอร์ชันปลุกเท่านั้น
getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE)
แสดงเซ็นเซอร์การปลุกระบบ
เซ็นเซอร์ท่าทางเพื่อหยิบอุปกรณ์จะทริกเกอร์เมื่อมีการหยิบอุปกรณ์ขึ้น ไม่ว่าจะวางไว้ที่ใดก่อนหน้านี้ (โต๊ะ กระเป๋ากางเกง กระเป๋า)
เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1
ใน sensors_event_t.data[0]
ท่าทางสัมผัสเหลือบมอง
เซ็นเซอร์ทางกายภาพที่เกี่ยวข้อง: ไม่ระบุ (อุปกรณ์ที่ใช้พลังงานต่ำ)
โหมดการรายงาน: แบบครั้งเดียว
พลังงานต่ำ
ใช้เฉพาะเวอร์ชันปลุกระบบของเซ็นเซอร์นี้
getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE)
แสดงผลเซ็นเซอร์ปลุก
เซ็นเซอร์ท่าทางสัมผัสการเหลือบมองเปิดหน้าจอเป็นเวลาสั้นๆ เพื่อให้ผู้ใช้ดูเนื้อหาบนหน้าจอตามการเคลื่อนไหวที่เฉพาะเจาะจงได้ เมื่อเซ็นเซอร์นี้ทำงาน อุปกรณ์จะเปิดหน้าจอเป็นระยะเวลาสั้นๆ เพื่อให้ผู้ใช้ดูการแจ้งเตือนหรือเนื้อหาอื่นๆ ได้ขณะที่อุปกรณ์ยังคงล็อกอยู่ในสถานะที่ไม่โต้ตอบ (อยู่ในโหมดสลีป) จากนั้นหน้าจอจะปิดอีกครั้ง ผู้ใช้อาจปิดใช้งานลักษณะการทำงานนี้ (การเปิดหน้าจอเป็นระยะเวลาสั้นๆ เมื่อเซ็นเซอร์นี้ทำงาน) ในการตั้งค่าอุปกรณ์ การเปลี่ยนแปลงการตั้งค่าจะไม่ส่งผลต่อลักษณะการทำงานของเซ็นเซอร์ แต่จะส่งผลต่อเฉพาะว่าเฟรมเวิร์กจะเปิดหน้าจอเป็นระยะเวลาสั้นๆ เมื่อทริกเกอร์หรือไม่ ไม่ได้ระบุท่าทางสัมผัสจริงที่จะตรวจจับ และผู้ผลิตอุปกรณ์จะเลือกท่าทางสัมผัสได้
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำเนื่องจากมีแนวโน้มที่จะเปิดใช้งานทุกวันตลอด 24 ชั่วโมง
เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1
ใน sensors_event_t.data[0]
เซ็นเซอร์ IMU แบบจำกัดแกน
เซ็นเซอร์ IMU แบบแกนจำกัดที่พร้อมใช้งานใน Android 13 เป็นเซ็นเซอร์ที่รองรับกรณีการใช้งานที่ไม่มีทั้ง 3 แกน (x, y, z) ประเภท IMU มาตรฐานใน Android (เช่น
SENSOR_TYPE_ACCELEROMETER
และ
SENSOR_TYPE_GYROSCOPE
)
ถือว่ารองรับทั้ง 3 แกน อย่างไรก็ตาม อุปกรณ์และรูปแบบบางประเภทอาจไม่รองรับเครื่องวัดความเร่ง 3 แกนและไจโรสโคป 3 แกน
แกนที่จำกัดของมาตรความเร่ง
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES)
แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ
เซ็นเซอร์ตรวจจับแกนจำกัดของตัวตรวจวัดความเร่งเทียบเท่ากับ TYPE_ACCELEROMETER
แต่รองรับกรณีที่ไม่รองรับ 1 หรือ 2 แกน
ค่าเหตุการณ์เซ็นเซอร์ 3 รายการล่าสุดที่เซ็นเซอร์รายงานแสดงถึงว่าระบบรองรับค่าความเร่งสำหรับแกน x, y และ z หรือไม่ ค่า 1.0
บ่งชี้ว่าระบบรองรับแกน ส่วนค่า 0
ระบุว่าระบบไม่รองรับแกน ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับ ณ เวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงระหว่างรันไทม์
ผู้ผลิตอุปกรณ์ต้องตั้งค่าการเร่งความเร็วสำหรับแกนที่ไม่ได้ใช้เป็น 0
แทนที่จะมีค่าที่ไม่ระบุ
แกนที่จำกัดของไจโรสโคป
เซ็นเซอร์ทางกายภาพพื้นฐาน: เครื่องวัดการหมุน
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES)
แสดงผลเซ็นเซอร์ที่ไม่ปลุก
เซ็นเซอร์ตรวจจับแกนจำกัดของเครื่องวัดการหมุนเทียบเท่ากับ TYPE_GYROSCOPE
แต่รองรับกรณีที่ไม่รองรับแกน 1 หรือ 2 แกน
ค่าเหตุการณ์เซ็นเซอร์ 3 รายการล่าสุดที่เซ็นเซอร์รายงานแสดงให้เห็นว่าระบบรองรับค่าความเร็วเชิงมุมสำหรับแกน x, y และ z หรือไม่ ค่า 1.0
บ่งบอกว่าระบบรองรับแกนนั้น และค่า 0
บ่งบอกว่าระบบไม่รองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับ ณ เวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงระหว่างรันไทม์
ผู้ผลิตอุปกรณ์ต้องตั้งค่าความเร็วเชิงมุมสำหรับแกนที่ไม่ได้ใช้เป็น 0
ไม่ได้ปรับเทียบแกนที่มีข้อจำกัดของตัวตรวจวัดความเร่ง
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED)
แสดงผลเซ็นเซอร์ที่ไม่ปลุก
เซ็นเซอร์ของตัวตรวจวัดความเร่งแบบจำกัดที่ไม่มีการปรับเทียบเทียบเท่ากับ TYPE_ACCELEROMETER_UNCALIBRATED
แต่รองรับกรณีที่ไม่รองรับ 1 หรือ 2 แกน
ค่าเหตุการณ์เซ็นเซอร์ 3 รายการล่าสุดที่เซ็นเซอร์รายงานแสดงถึงว่าระบบรองรับค่าความเร่งและค่าความเบี่ยงเบนสำหรับแกน x, y และ z หรือไม่ ค่า 1.0
บ่งบอกว่าระบบรองรับแกนนั้น และค่า 0
บ่งบอกว่าระบบไม่รองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับ ณ เวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงระหว่างรันไทม์
ผู้ผลิตอุปกรณ์ต้องตั้งค่าการเร่งและค่าความเบี่ยงเบนสำหรับแกนที่ไม่ได้ใช้เป็น 0
ไม่ได้ปรับเทียบแกนที่จํากัดของไจโรสโคป
เซ็นเซอร์ร่างกายพื้นฐาน: เครื่องวัดการหมุน
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ที่ไม่ได้รับการสอบเทียบแกนจำกัดของเครื่องวัดการหมุนเทียบเท่ากับ TYPE_GYROSCOPE_UNCALIBRATED
แต่รองรับกรณีที่ระบบไม่รองรับแกน 1 หรือ 2 แกน
ค่าเหตุการณ์เซ็นเซอร์ 3 รายการล่าสุดที่เซ็นเซอร์รายงานจะแสดงว่าระบบรองรับความเร็วเชิงมุมและค่าความคลาดเคลื่อนสำหรับแกน x, y และ z หรือไม่ ค่า 1.0
บ่งบอกว่าระบบรองรับแกนนั้น และค่า 0
บ่งบอกว่าระบบไม่รองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับ ณ เวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงระหว่างรันไทม์
ผู้ผลิตอุปกรณ์ต้องตั้งค่าความเร็วเชิงมุมและค่าความคลาดเคลื่อนสำหรับแกนที่ไม่ได้ใช้เป็น 0
IMU แกนจำกัดแบบคอมโพสิต
เซ็นเซอร์ที่อยู่บนอุปกรณ์: เซ็นเซอร์ตัวตรวจวัดความเร่งแบบ 3 แกน, ไจโรสโคปแบบ 3 แกน, ตัวตรวจวัดความเร่งแบบ 3 แกนที่ไม่ได้ปรับเทียบ และเซ็นเซอร์ไจโรสโคปแบบ 3 แกนที่ไม่ได้ปรับเทียบ
โหมดการรายงาน: ต่อเนื่อง
เซ็นเซอร์ IMU แบบแกนจำกัดแบบคอมโพสิตเทียบเท่ากับเซ็นเซอร์ IMU แบบแกนจำกัด แต่แทนที่จะรองรับที่ HAL เซ็นเซอร์นี้จะแปลงข้อมูลเซ็นเซอร์ 3 แกนเป็นตัวแปรแกนจำกัดที่เทียบเท่า เซ็นเซอร์คอมโพสิตเหล่านี้ใช้ได้กับอุปกรณ์ยานยนต์เท่านั้น
ตารางต่อไปนี้แสดงตัวอย่างการเปลี่ยนจากเครื่องวัดความเร่ง 3 แกนมาตรฐานเป็นเครื่องวัดความเร่งแกนจำกัดแบบผสม
ค่า SensorEvent สำหรับ SENSOR_TYPE_ACCELEROMETER | ตัวอย่าง SENSOR_TYPE_ACCELEROMeter SensorEvent | SensorEvent ประเภท SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES แบบคอมโพสิต |
---|---|---|
ค่า[0] | -0.065 |
-0.065 |
values[1] | 0.078 |
0.078 |
values[2] | 9.808 |
9.808 |
values[3] | ไม่มี |
1.0 |
values[4] | ไม่มี |
1.0 |
values[5] | ไม่มี |
1.0 |
เซ็นเซอร์ยานยนต์
เซ็นเซอร์เพื่อรองรับกรณีการใช้งานยานยนต์
ส่วนหัว
เซ็นเซอร์ทางกายภาพพื้นฐาน: ชุดค่าผสมของ GPS, มาตรแม่เหล็ก, ตัวตรวจวัดความเร่ง และเครื่องวัดการหมุน
โหมดการรายงาน: ต่อเนื่อง
getDefaultSensor(SENSOR_TYPE_HEADING)
แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ทิศทางพร้อมใช้งานใน Android 13 โดยจะวัดทิศทางที่อุปกรณ์ชี้เทียบกับทิศเหนือจริงเป็นองศา เซ็นเซอร์ส่วนหัวมีค่า SensorEvent
2 ค่า
1 รายการสำหรับทิศทางของอุปกรณ์ที่วัดได้ และอีก 1 รายการสำหรับความถูกต้องของค่าทิศทางที่ระบุ
ค่าทิศทางที่เซ็นเซอร์นี้รายงานต้องอยู่ระหว่าง 0.0
(รวม) ถึง 360.0
(ไม่รวม) โดย 0
หมายถึงทิศเหนือ 90
หมายถึงทิศตะวันออก 180
หมายถึงทิศใต้ และ 270
หมายถึงทิศตะวันตก
ความแม่นยำของเซ็นเซอร์นี้กำหนดไว้ที่ความเชื่อมั่น 68 เปอร์เซ็นต์ ในกรณีที่การกระจายที่สำคัญเป็นค่าเกาส์เซียนปกติ ความแม่นยำจะเป็นค่าเบี่ยงเบนมาตรฐาน 1 ค่า เช่น หากเซ็นเซอร์ส่วนหัวแสดงผลค่าส่วนหัวที่ 60 องศา และค่าความแม่นยำที่ 10 องศา ก็จะมีความน่าจะเป็น 68 เปอร์เซ็นต์ที่ส่วนหัวที่แท้จริงจะอยู่ระหว่าง 50 องศาถึง 70 องศา