ส่วนนี้จะอธิบายแกนเซ็นเซอร์ เซ็นเซอร์พื้นฐาน และเซ็นเซอร์แบบผสม (กิจกรรม ท่าทาง เซ็นเซอร์ที่ยังไม่ได้ปรับเทียบ และการโต้ตอบ)
แกนเซ็นเซอร์
ค่าเหตุการณ์เซ็นเซอร์จากเซ็นเซอร์หลายตัวจะแสดงในเฟรมที่เฉพาะเจาะจงซึ่ง คงที่เมื่อเทียบกับอุปกรณ์
แกนของอุปกรณ์เคลื่อนที่
Sensor API จะสัมพันธ์กับการวางแนวตามธรรมชาติของหน้าจอเท่านั้น (ระบบจะไม่สลับแกนเมื่อการวางแนวหน้าจอของอุปกรณ์เปลี่ยนแปลง

รูปที่ 1 ระบบพิกัด (เทียบกับ อุปกรณ์เคลื่อนที่) ที่ใช้โดย Sensor API
ขวานยานยนต์
ในการติดตั้งใช้งาน Android Automotive แกนจะกำหนดโดยอ้างอิงกับเฟรมตัวถังของรถ จุดเริ่มต้นของกรอบอ้างอิงของยานพาหนะคือจุดกึ่งกลางของเพลาหลัง กรอบอ้างอิงของยานพาหนะ จะวางแนวเพื่อให้
- แกน X ชี้ไปทางขวาและอยู่บนระนาบแนวนอน ซึ่งตั้งฉากกับระนาบสมมาตรของยานพาหนะ
- แกน Y ชี้ไปข้างหน้าและอยู่บนระนาบแนวนอน

รูปที่ 2 ระบบพิกัด (เทียบกับ อุปกรณ์ยานยนต์) ที่ใช้โดย Sensor API
กรอบอ้างอิงของยานพาหนะคือระบบพิกัดมือขวา ดังนั้นแกน Z จึงชี้ขึ้น
แกน Z ของกรอบอ้างอิงจะสอดคล้องกับแรงโน้มถ่วง ซึ่งหมายความว่าแกน X และแกน Y จะอยู่ในแนวนอนทั้งคู่ ด้วยเหตุนี้ แกน Y จึงอาจไม่ได้ผ่านเพลาหน้าเสมอไป
เซ็นเซอร์ฐาน
เซ็นเซอร์พื้นฐานจะตั้งชื่อตามเซ็นเซอร์จริงที่แสดง เซ็นเซอร์เหล่านี้ ส่งต่อข้อมูลจากเซ็นเซอร์ทางกายภาพเดียว (ซึ่งตรงกันข้ามกับเซ็นเซอร์แบบผสม ที่สร้างข้อมูลจากเซ็นเซอร์อื่นๆ) ตัวอย่างประเภทเซ็นเซอร์พื้นฐาน ได้แก่
SENSOR_TYPE_ACCELEROMETER
SENSOR_TYPE_GYROSCOPE
SENSOR_TYPE_MAGNETOMETER
อย่างไรก็ตาม เซ็นเซอร์ฐานไม่เหมือนกับและไม่ควรสับสนกับ เซ็นเซอร์จริงที่อยู่เบื้องหลัง ข้อมูลจากเซ็นเซอร์ฐานไม่ใช่ เอาต์พุตดิบของเซ็นเซอร์จริงเนื่องจากมีการใช้การแก้ไข (เช่น การชดเชยอคติ และการชดเชยอุณหภูมิ)
ตัวอย่างเช่น ลักษณะของเซ็นเซอร์ฐานอาจแตกต่างจากลักษณะของเซ็นเซอร์จริงที่อยู่เบื้องหลังในกรณีการใช้งานต่อไปนี้
- ชิปไจโรสโคปที่มีช่วงอคติ 1 องศา/วินาที
- หลังจากปรับเทียบจากโรงงานแล้ว ระบบจะใช้การชดเชยอุณหภูมิและการชดเชยอคติ จากนั้นอคติจริงของเซ็นเซอร์ Android จะลดลง อาจลดลงจนถึงจุดที่รับประกันได้ว่าอคติจะต่ำกว่า 0.01 deg/sec
- ในกรณีนี้ เราจะบอกว่าเซ็นเซอร์ Android มีค่าความคลาดเคลื่อนต่ำกว่า 0.01 องศา/วินาที แม้ว่าเอกสารข้อมูลของเซ็นเซอร์พื้นฐานจะระบุว่า 1 องศา/วินาที
- บารอมิเตอร์ที่มีการใช้พลังงาน 100 uW
- เนื่องจากต้องส่งข้อมูลที่สร้างขึ้นจากชิปไปยัง SoC ค่าใช้จ่ายด้านพลังงานจริงในการรวบรวมข้อมูลจากเซ็นเซอร์บารอมิเตอร์ของ Android จึงอาจสูงกว่ามาก เช่น 1,000 uW
- ในกรณีนี้ เราจะกล่าวว่าเซ็นเซอร์ Android มีการใช้พลังงาน 1,000 uW แม้ว่าการใช้พลังงานที่วัดได้ที่ชิปบารอมิเตอร์จะอยู่ที่ 100 uW ก็ตาม
- แมกนีโตมิเตอร์ที่ใช้พลังงาน 100uW เมื่อปรับเทียบแล้ว แต่จะใช้พลังงานมากขึ้นเมื่อ
ปรับเทียบ
- โดยอาจต้องเปิดใช้งานไจโรสโคปเพื่อทำการปรับเทียบ ซึ่งจะใช้พลังงาน 5,000 ไมโครวัตต์ และเรียกใช้อัลกอริทึมบางอย่าง ซึ่งจะใช้พลังงานอีก 900 ไมโครวัตต์
- ในกรณีนี้ เรากล่าวว่าการใช้พลังงานสูงสุดของเซ็นเซอร์ (แมกนีโตมิเตอร์) Android คือ 6000 uW
- ในกรณีนี้ การใช้พลังงานโดยเฉลี่ยจะเป็นการวัดที่มีประโยชน์มากกว่า และเป็นสิ่งที่รายงานในลักษณะคงที่ของเซ็นเซอร์ผ่าน HAL
ตัวตรวจวัดความเร่ง
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ของตัวตรวจวัดความเร่งจะรายงานความเร่งของอุปกรณ์ตาม แกนเซ็นเซอร์ทั้ง 3 การวัดความเร่งจะรวมทั้งความเร่งทางกายภาพ (การเปลี่ยนแปลงความเร็ว) และแรงโน้มถ่วง ระบบจะรายงานการวัดในฟิลด์ x, y และ z ของ sensors_event_t.acceleration
ค่าทั้งหมดอยู่ในหน่วย SI (ม./วินาที^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
ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับฟิลด์นี้ได้ในค่าคงที่
SensorManager
ของ
SENSOR_STATUS_*
อุณหภูมิแวดล้อม
Reporting-mode: On-change
getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์นี้จะแสดงอุณหภูมิแวดล้อม (ห้อง) เป็นองศาเซลเซียส
เซ็นเซอร์สนามแม่เหล็ก
Reporting-mode: Continuous
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
ของ
SENSOR_STATUS_*
การอ่านค่าจะได้รับการปรับเทียบโดยใช้สิ่งต่อไปนี้
- การชดเชยอุณหภูมิ
- การปรับเทียบเหล็กอ่อนจากโรงงาน (หรือออนไลน์)
- การปรับเทียบฮาร์ดไอออนออนไลน์
เครื่องวัดการหมุน
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_GYROSCOPE)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ไจโรจะรายงานอัตราการหมุนของอุปกรณ์รอบ แกนเซ็นเซอร์ทั้ง 3
การหมุนเป็นค่าบวกในทิศทางทวนเข็มนาฬิกา (กฎมือขวา) กล่าวคือ ผู้สังเกตการณ์ที่มองจากตำแหน่งบวกบนแกน x, y หรือ z ที่อุปกรณ์ซึ่งวางอยู่ที่จุดกำเนิดจะรายงานการหมุนเป็นบวกหาก อุปกรณ์ดูเหมือนจะหมุนทวนเข็มนาฬิกา โปรดทราบว่านี่คือ คำจำกัดความทางคณิตศาสตร์มาตรฐานของการหมุนในทิศทางบวก และไม่สอดคล้อง กับคำจำกัดความของการหมุนในอุตสาหกรรมอากาศยาน
ระบบจะรายงานการวัดในช่อง x, y และ z ของ
sensors_event_t.gyro
และค่าทั้งหมดเป็นเรเดียนต่อวินาที (rad/s)
การอ่านค่าจะได้รับการปรับเทียบโดยใช้สิ่งต่อไปนี้
- การชดเชยอุณหภูมิ
- ค่าชดเชยตามขนาดโรงงาน (หรือออนไลน์)
- การปรับเทียบความเอนเอียงทางออนไลน์ (เพื่อขจัดดริฟต์)
ไจโรสโคปยังรายงานความแม่นยำที่คาดหวังในการอ่านค่าผ่าน
sensors_event_t.gyro.status
ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับฟิลด์นี้ได้ในค่าคงที่
SensorManager
ของ
SENSOR_STATUS_*
เราไม่สามารถจำลองไจโรสโคปตามแมกนีโตมิเตอร์และมาตรความเร่งได้ เนื่องจาก จะทำให้ความสอดคล้องและการตอบสนองในเครื่องลดลง โดยต้องอิงตามชิปไจโรสโคปปกติ
อัตราการเต้นของหัวใจ
Reporting-mode: On-change
getDefaultSensor(SENSOR_TYPE_HEART_RATE)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์วัดอัตราการเต้นของหัวใจจะรายงานอัตราการเต้นของหัวใจปัจจุบันของบุคคลที่สัมผัส อุปกรณ์
อัตราการเต้นของหัวใจปัจจุบันเป็นหน่วยครั้งต่อนาที (BPM) จะรายงานใน
sensors_event_t.heart_rate.bpm
และสถานะของเซ็นเซอร์จะ
รายงานใน
sensors_event_t.heart_rate.status
ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับฟิลด์นี้ได้ในค่าคงที่
SensorManager
ของ
SENSOR_STATUS_*
โดยเฉพาะอย่างยิ่งเมื่อเปิดใช้งานครั้งแรก หากไม่ทราบว่าอุปกรณ์ไม่ได้อยู่บนร่างกาย ฟิลด์สถานะของเหตุการณ์แรกต้องตั้งค่าเป็น SENSOR_STATUS_UNRELIABLE
เนื่องจากเซ็นเซอร์นี้เป็นเซ็นเซอร์ที่ตรวจจับการเปลี่ยนแปลง
ระบบจะสร้างเหตุการณ์เมื่อ heart_rate.bpm
หรือ
heart_rate.status
มีการเปลี่ยนแปลงนับตั้งแต่เหตุการณ์ล่าสุดเท่านั้น ระบบจะสร้างเหตุการณ์
ไม่เร็วกว่าทุกๆ sampling_period
เฟรมเวิร์กจะลบล้าง sensor_t.requiredPermission
โดยอัตโนมัติเพื่อ
ให้สิทธิ์ที่เหมาะสมเพื่อรักษาความเข้ากันได้ เฟรมเวิร์กใช้สิทธิ์ SENSOR_PERMISSION_READ_HEART_RATE
สำหรับ Android 16 ขึ้นไป และสิทธิ์ SENSOR_PERMISSION_BODY_SENSORS
สำหรับ Android 15 ลงไป
น้อย
Reporting-mode: On-change
getDefaultSensor(SENSOR_TYPE_LIGHT)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์แสงจะรายงานความสว่างปัจจุบันในหน่วยลักซ์ SI
การวัดผลจะรายงานใน sensors_event_t.light
พร็อกซิมิตี
Reporting-mode: On-change
มักระบุเป็นเซ็นเซอร์ปลุก
getDefaultSensor(SENSOR_TYPE_PROXIMITY)
แสดงผลเซ็นเซอร์ปลุก
พร็อกซิมิตีเซ็นเซอร์จะรายงานระยะห่างจากเซ็นเซอร์ไปยังพื้นผิวที่มองเห็นได้ใกล้ที่สุด
ใน Android 4.4 และเวอร์ชันก่อนหน้า พร็อกซิมิตีเซ็นเซอร์จะเป็นเซ็นเซอร์ปลุกเสมอ ซึ่งจะปลุก SoC เมื่อตรวจพบการเปลี่ยนแปลงในพร็อกซิมิตี หลังจาก Android 4.4 เราขอแนะนำให้ใช้เซ็นเซอร์เวอร์ชันที่เปิดหน้าจอก่อน เนื่องจากเป็นเซ็นเซอร์ที่ใช้เปิดและปิดหน้าจอขณะโทรศัพท์
ระบบจะรายงานการวัดเป็นเซนติเมตรใน
sensors_event_t.distance
โปรดทราบ
ว่าเซ็นเซอร์ตรวจจับความใกล้บางตัวรองรับเฉพาะการวัดค่าแบบไบนารี "ใกล้"
หรือ "ไกล"
ในกรณีนี้ เซ็นเซอร์จะรายงานค่า sensor_t.maxRange
ในสถานะ "ไกล"
และค่าที่น้อยกว่า sensor_t.maxRange
ในสถานะ
"ใกล้"
ความกดอากาศ
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_PRESSURE)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์วัดความดัน (หรือที่เรียกว่าบารอมิเตอร์) จะรายงานความดันบรรยากาศ ในหน่วยเฮกโตปาสกาล (hPa)
การอ่านค่าได้รับการปรับเทียบโดยใช้
- การชดเชยอุณหภูมิ
- การปรับเทียบค่าออฟเซ็ตจากโรงงาน
- การปรับเทียบเครื่องชั่งในโรงงาน
โดยมักใช้บารอมิเตอร์เพื่อประมาณการเปลี่ยนแปลงระดับความสูง หากต้องการประมาณความสูงสัมบูรณ์ ต้องใช้ความกดอากาศที่ระดับน้ำทะเล (เปลี่ยนแปลงตามสภาพอากาศ) เป็นข้อมูลอ้างอิง
ความชื้นสัมพัทธ์
Reporting-mode: On-change
getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ความชื้นสัมพัทธ์จะวัดความชื้นสัมพัทธ์ของอากาศโดยรอบและ แสดงผลค่าเป็นเปอร์เซ็นต์
ประเภทเซ็นเซอร์แบบผสม
เซ็นเซอร์แบบผสมจะสร้างข้อมูลโดยการประมวลผลและ/หรือรวมข้อมูลจากเซ็นเซอร์จริงอย่างน้อย 1 ตัว (เซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ฐานเรียกว่า เซ็นเซอร์คอมโพสิต) ตัวอย่างเซ็นเซอร์แบบผสม ได้แก่
- เครื่องตรวจจับก้าวและ การเคลื่อนไหวที่สำคัญ ซึ่งมักอิงตาม เครื่องวัดความเร่ง แต่ก็อาจอิงตามเซ็นเซอร์อื่นๆ ได้เช่นกัน หากการใช้พลังงาน และความแม่นยำเป็นที่ยอมรับได้
- เวกเตอร์การหมุนของเกมโดยอิงตาม เครื่องวัดความเร่งและเครื่องวัดการหมุน
- เครื่องวัดการหมุนที่ยังไม่ได้ปรับเทียบ ซึ่ง คล้ายกับเซ็นเซอร์ฐานเครื่องวัดการหมุน แต่มีการรายงานการปรับเทียบอคติ แยกกันแทนที่จะแก้ไขในการวัด
ลักษณะของเซ็นเซอร์แบบรวมจะมาจากลักษณะของข้อมูลสุดท้ายเช่นเดียวกับเซ็นเซอร์พื้นฐาน ตัวอย่างเช่น การใช้พลังงานของเวกเตอร์การหมุนของเกมอาจเท่ากับผลรวมของการใช้พลังงานของชิปตัวตรวจวัดความเร่ง ชิปเครื่องวัดการหมุน ชิปที่ประมวลผลข้อมูล และบัสที่ส่งข้อมูล อีกตัวอย่างหนึ่งคือ การดริฟต์ของเวกเตอร์การหมุนของเกม ขึ้นอยู่กับคุณภาพของอัลกอริทึมการปรับเทียบมากพอๆ กับ ลักษณะของเซ็นเซอร์ทางกายภาพ
ตารางต่อไปนี้แสดงประเภทเซ็นเซอร์แบบผสมที่ใช้ได้ เซ็นเซอร์แบบผสมแต่ละตัว จะอิงตามข้อมูลจากเซ็นเซอร์จริงอย่างน้อย 1 ตัว หลีกเลี่ยงการเลือกเซ็นเซอร์จริงอื่นๆ ที่อยู่เบื้องหลังเพื่อประมาณผลลัพธ์ เนื่องจากจะทำให้ผู้ใช้ได้รับประสบการณ์ที่ไม่ดี
ประเภทเซ็นเซอร์ | หมวดหมู่ | เซ็นเซอร์จริงที่อยู่เบื้องหลัง | โหมดการรายงาน |
---|---|---|---|
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน ต้องไม่ใช้เครื่องวัดสนามแม่เหล็ก |
ต่อเนื่อง |
|
ทัศนคติ |
ตัวตรวจวัดความเร่ง แมกนีโตมิเตอร์ ห้ามใช้เครื่องวัดการหมุน |
ต่อเนื่อง |
|
ท่าทางสัมผัสการเหลือบมอง ![]() |
การโต้ตอบ |
ไม่ระบุ |
ครั้งเดียว |
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน (หากมี) หรือแมกนีโตมิเตอร์ (หากไม่มีเครื่องวัดการหมุน) |
ต่อเนื่อง |
|
ไม่ได้ปรับเทียบ |
เครื่องวัดการหมุน |
ต่อเนื่อง |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน (หากมี) หรือแมกนีโตมิเตอร์ (หากไม่มีเครื่องวัดการหมุน) |
ต่อเนื่อง |
|
ไม่ได้ปรับเทียบ |
เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก |
ต่อเนื่อง |
|
การวางแนว (เลิกใช้งานแล้ว) |
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก เครื่องวัดการหมุน (หากมี) |
ต่อเนื่อง |
การโต้ตอบ |
ไม่ระบุ |
ครั้งเดียว |
|
ทัศนคติ |
ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก เครื่องวัดการหมุน (หากมี) |
ต่อเนื่อง |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง (หรือตัวอื่นที่ใช้พลังงานต่ำมาก) |
ครั้งเดียว |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง |
เมื่อมีการเปลี่ยนแปลง |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง |
พิเศษ |
|
กิจกรรม |
ตัวตรวจวัดความเร่ง |
พิเศษ |
|
การโต้ตอบ |
ไม่ระบุ |
ครั้งเดียว |
= เซ็นเซอร์ที่ใช้พลังงานต่ำ
เซ็นเซอร์รวมกิจกรรม
การเร่งความเร็วเชิงเส้น
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่งและ (หากมี) เครื่องวัดการหมุน (หรือ เครื่องวัดสนามแม่เหล็กหากไม่มีเครื่องวัดการหมุน)
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ความเร่งเชิงเส้นจะรายงานความเร่งเชิงเส้นของอุปกรณ์ใน กรอบเซ็นเซอร์โดยไม่รวมแรงโน้มถ่วง
แนวคิดของเอาต์พุตคือ เอาต์พุตของตัวตรวจวัดความเร่งลบด้วยเอาต์พุตของเซ็นเซอร์แรงโน้มถ่วง โดยจะรายงานเป็น m/s^2 ในช่อง x, y และ z
ของ sensors_event_t.acceleration
ค่าที่อ่านได้ในทุกแกนควรใกล้เคียง 0 เมื่ออุปกรณ์อยู่กับที่
หากอุปกรณ์มีเครื่องวัดการหมุน เซ็นเซอร์ตรวจวัดความเร่งเชิงเส้นต้องใช้เครื่องวัดการหมุนและตัวตรวจวัดความเร่งเป็นอินพุต
หากอุปกรณ์ไม่มีเครื่องวัดการหมุน เซ็นเซอร์การเร่งเชิงเส้น ต้องใช้ตัวตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กเป็นอินพุต
การเคลื่อนไหวที่สำคัญ
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง (หรือเซ็นเซอร์อื่นที่ใช้พลังงานต่ำ)
Reporting-mode: One-shot
ใช้พลังงานต่ำ
ใช้เฉพาะเซ็นเซอร์เวอร์ชันที่เปิดใช้งานได้เท่านั้น
getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)
แสดงผลเซ็นเซอร์ปลุก
เครื่องตรวจจับการเคลื่อนไหวที่สำคัญจะทริกเกอร์เมื่อตรวจพบการเคลื่อนไหวที่สำคัญ ซึ่งเป็นการเคลื่อนไหวที่อาจทำให้เกิดการเปลี่ยนแปลงตำแหน่งของผู้ใช้
ตัวอย่างการเคลื่อนไหวที่สำคัญดังกล่าว ได้แก่
- เดินหรือปั่นจักรยาน
- นั่งในรถยนต์ รถโค้ช หรือรถไฟที่กำลังเคลื่อนที่
ตัวอย่างสถานการณ์ที่ไม่ได้กระตุ้นการเคลื่อนไหวที่สำคัญ
- โทรศัพท์อยู่ในกระเป๋าและบุคคลนั้นไม่ได้เคลื่อนไหว
- โทรศัพท์วางอยู่บนโต๊ะและโต๊ะสั่นเล็กน้อยเนื่องจาก การจราจรหรือเครื่องซักผ้าที่อยู่ใกล้ๆ
ในระดับสูง ระบบจะใช้อุปกรณ์ตรวจจับการเคลื่อนไหวที่สำคัญเพื่อลด การใช้พลังงานในการระบุตำแหน่ง เมื่ออัลกอริทึมการแปลเป็นภาษาท้องถิ่น ตรวจพบว่าอุปกรณ์อยู่กับที่ อัลกอริทึมจะเปลี่ยนเป็นโหมดประหยัดพลังงาน ซึ่งจะอาศัยการเคลื่อนไหวที่สำคัญเพื่อปลุกอุปกรณ์เมื่อผู้ใช้ เปลี่ยนตำแหน่ง
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ ซึ่งจะช่วยประหยัดพลังงาน แต่ อาจทำให้เกิดผลลบลวงเล็กน้อย โดยมีสาเหตุ 2-3 ประการ ดังนี้
- เซ็นเซอร์นี้มีเป้าหมายเพื่อประหยัดพลังงาน
- การทริกเกอร์เหตุการณ์เมื่อผู้ใช้ไม่ได้เคลื่อนไหว (ผลบวกลวง) จะ สิ้นเปลืองพลังงาน จึงควรหลีกเลี่ยง
- การไม่ทริกเกอร์เหตุการณ์เมื่อผู้ใช้กำลังเคลื่อนที่ (ผลลบลวง) เป็นสิ่งที่ยอมรับได้ ตราบใดที่ไม่ได้เกิดขึ้นซ้ำๆ หากผู้ใช้เดินเป็นเวลา 10 วินาที การไม่ทริกเกอร์เหตุการณ์ภายใน 10 วินาทีนั้นถือว่าไม่ถูกต้อง
เหตุการณ์เซ็นเซอร์แต่ละรายการจะรายงาน 1
ใน sensors_event_t.data[0]
ตัวตรวจจับก้าว
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง (+ อาจมีเซ็นเซอร์อื่นๆ ตราบใดที่ใช้พลังงานต่ำ)
Reporting-mode: Special (1 เหตุการณ์ต่อขั้นตอนที่ดำเนินการ)
ใช้พลังงานต่ำ
getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เครื่องตรวจจับการก้าวจะสร้างเหตุการณ์ทุกครั้งที่ผู้ใช้ก้าว
การประทับเวลาของเหตุการณ์ sensors_event_t.timestamp
สอดคล้อง
กับเวลาที่เท้าสัมผัสพื้น ซึ่งทำให้เกิดความแปรปรวนสูงในการเร่งความเร็ว
เมื่อเทียบกับตัวนับก้าว ตัวตรวจจับก้าวควรมีเวลาในการตอบสนองที่ต่ำกว่า (น้อยกว่า 2 วินาที) ทั้งเครื่องตรวจจับก้าวและตัวนับก้าวจะตรวจจับ เมื่อผู้ใช้เดิน วิ่ง และเดินขึ้นบันได ไม่ควร ทริกเกอร์เมื่อผู้ใช้ปั่นจักรยาน ขับรถ หรืออยู่ในยานพาหนะอื่นๆ
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ กล่าวคือ หากฮาร์ดแวร์ตรวจจับจำนวนก้าวไม่ได้ ก็ไม่ควรระบุเซ็นเซอร์นี้ กล่าวอย่างเจาะจงคือ เมื่อเปิดใช้งานตัวตรวจจับ การก้าวและไม่ได้เปิดใช้งานมาตรความเร่ง เฉพาะการก้าวเท่านั้นที่ควรทริกเกอร์ การขัดจังหวะ (ไม่ใช่การอ่านค่ามาตรความเร่งทุกครั้ง)
sampling_period_ns
ไม่มีผลต่อเครื่องตรวจจับการก้าว
เหตุการณ์เซ็นเซอร์แต่ละรายการจะรายงาน 1
ใน sensors_event_t.data[0]
ตัวนับก้าว
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง (+ อาจมีเซ็นเซอร์อื่นๆ ตราบใดที่ใช้พลังงานต่ำ)
Reporting-mode: 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]
เซ็นเซอร์ตรวจจับทัศนคติแบบผสม
เวกเตอร์การหมุน
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก และเครื่องวัดการหมุน
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR)
จะแสดงเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์เวกเตอร์การหมุนจะรายงานการวางแนวของอุปกรณ์เทียบกับ กรอบพิกัดตะวันออก-เหนือ-ขึ้น โดยปกติแล้วจะได้รับจากการผสานรวมค่าจาก เครื่องวัดความเร่ง เครื่องวัดการหมุน และเครื่องวัดสนามแม่เหล็ก ระบบพิกัด East-North-Up กำหนดเป็นฐานตั้งฉากโดยตรงซึ่งมีลักษณะดังนี้
- X ชี้ไปทางทิศตะวันออกและสัมผัสกับพื้น
- Y ชี้ไปทางเหนือและสัมผัสกับพื้น
- Z ชี้ขึ้นฟ้าและตั้งฉากกับพื้น
การวางแนวของโทรศัพท์แสดงโดยการหมุนที่จำเป็นต่อการ จัดแนวพิกัด East-North-Up กับพิกัดของโทรศัพท์ กล่าวคือ การหมุนเฟรมโลก (X,Y,Z) จะทําให้เฟรมโลกสอดคล้องกับพิกัดโทรศัพท์ (x,y,z)
การหมุนสามารถมองได้ว่าเป็นการหมุนโทรศัพท์ด้วยมุมทีต้า (Theta) รอบแกน 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
คือพิกัด East-North-Up ของเวกเตอร์ความยาวหน่วยที่แสดงแกนการหมุน theta
คือมุมการหมุน
ควอเทอร์เนียนเป็นควอเทอร์เนียนหน่วย ซึ่งต้องมีบรรทัดฐาน 1
หากไม่ตรวจสอบ
จะทำให้ไคลเอ็นต์ทำงานผิดปกติ
นอกจากนี้ เซ็นเซอร์นี้ยังรายงานความแม่นยำของทิศทางโดยประมาณด้วย
sensors_event_t.data[4] = estimated_accuracy
(ในหน่วยเรเดียน)
ข้อผิดพลาดของส่วนหัวต้องน้อยกว่า estimated_accuracy
95% ของ
เวลา เซ็นเซอร์นี้ต้องใช้ไจโรสโคปเป็นอินพุตหลักสำหรับการเปลี่ยนแปลงการวางแนว
เซ็นเซอร์นี้ยังใช้ข้อมูลจากตัวตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กเพื่อชดเชย การดริฟต์ของเครื่องวัดการหมุน และจะใช้เฉพาะตัวตรวจวัดความเร่ง และเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กไม่ได้
เวกเตอร์การหมุนของเกม
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่งและเครื่องวัดการหมุน (ไม่มีเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก)
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์เวกเตอร์การหมุนของเกมคล้ายกับเซ็นเซอร์เวกเตอร์การหมุน แต่ไม่ได้ ใช้สนามแม่เหล็กโลก ดังนั้นแกน Y จึงไม่ได้ชี้ไปทางเหนือ แต่ ชี้ไปยังการอ้างอิงอื่นๆ แทน การอ้างอิงดังกล่าวจะเลื่อนได้ตาม ลำดับขนาดเดียวกับการเลื่อนของเครื่องวัดการหมุนรอบแกน Z
ดูรายละเอียดเกี่ยวกับวิธีตั้งค่า sensors_event_t.data[0-3]
ได้ที่เซ็นเซอร์เวกเตอร์การหมุน เซ็นเซอร์นี้ไม่รายงานความแม่นยำของส่วนหัวโดยประมาณ
sensors_event_t.data[4]
สงวนไว้และควรตั้งค่าเป็น 0
ในกรณีที่สมบูรณ์แบบ โทรศัพท์ที่หมุนและกลับมาอยู่ใน การวางแนวเดียวกันในโลกแห่งความจริงควรรายงานเวกเตอร์การหมุนของเกมเดียวกัน
เซ็นเซอร์นี้ต้องอิงตามไจโรสโคปและตัวตรวจวัดความเร่ง โดยไม่สามารถใช้ เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กเป็นข้อมูลนำเข้าได้ นอกเหนือจากการประมาณ ค่าอคติของไจโรสโคปโดยอ้อม
แรงโน้มถ่วง
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่งและ (หากมี) เครื่องวัดการหมุน (หรือ เครื่องวัดสนามแม่เหล็กหากไม่มีเครื่องวัดการหมุน)
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_GRAVITY)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์แรงโน้มถ่วงจะรายงานทิศทางและขนาดของแรงโน้มถ่วงในพิกัดของอุปกรณ์
ระบบจะรายงานองค์ประกอบเวกเตอร์แรงโน้มถ่วงในหน่วย m/s^2 ในฟิลด์ x, y และ z
ของ sensors_event_t.acceleration
เมื่ออุปกรณ์อยู่นิ่ง เอาต์พุตของเซ็นเซอร์แรงโน้มถ่วงควรเหมือนกับของตัวตรวจวัดความเร่ง บนโลก แรงโน้มถ่วงมีค่าประมาณ 9.8 ม./วินาที^2
หากอุปกรณ์มีเครื่องวัดการหมุน เซ็นเซอร์แรงโน้มถ่วงต้องใช้เครื่องวัดการหมุนและตัวตรวจวัดความเร่งเป็นอินพุต
หากอุปกรณ์ไม่มีเครื่องวัดการหมุน เซ็นเซอร์แรงโน้มถ่วงต้องใช้ ตัวตรวจวัดความเร่งและแมกนีโตมิเตอร์เป็นอินพุต
เวกเตอร์การหมุนของสนามแม่เหล็กโลก
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก (ไม่มีเครื่องวัดการหมุน)
Reporting-mode: Continuous
ใช้พลังงานต่ำ
getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เวกเตอร์การหมุนตามสนามแม่เหล็กโลกคล้ายกับเซ็นเซอร์เวกเตอร์การหมุน แต่ ใช้แมกนีโตมิเตอร์และไม่มีไจโรสโคป
เซ็นเซอร์นี้ต้องอิงตามแมกนีโตมิเตอร์ โดยไม่สามารถใช้ ไจโรสโคป และเซ็นเซอร์นี้ไม่สามารถใช้ข้อมูลจากไจโรสโคปได้
ดูรายละเอียดเกี่ยวกับวิธีตั้งค่า sensors_event_t.data[0-4]
ได้ที่เซ็นเซอร์เวกเตอร์การหมุน
เช่นเดียวกับเซ็นเซอร์เวกเตอร์การหมุน ข้อผิดพลาดของส่วนหัวต้องน้อยกว่าความแม่นยำโดยประมาณ (sensors_event_t.data[4]
) 95% ของเวลา
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ จึงต้องติดตั้งในฮาร์ดแวร์
การวางแนว (เลิกใช้งานแล้ว)
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง แมกนีโตมิเตอร์ และ (หากมี) เครื่องวัดการหมุน
Reporting-mode: Continuous
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
โปรดทราบว่าด้วยเหตุผลทางประวัติศาสตร์ มุมการหมุนจึงเป็นบวกในทิศทาง ตามเข็มนาฬิกา (ในทางคณิตศาสตร์ ค่านี้ควรเป็นบวกในทิศทางทวนเข็มนาฬิกา)

รูปที่ 3 การวางแนวเทียบกับอุปกรณ์
คำจำกัดความนี้แตกต่างจาก Yaw, Pitch และ Roll ที่ใช้ในการบิน ซึ่งแกน X จะอยู่ตามด้านยาวของเครื่องบิน (หางถึงจมูก)
เซ็นเซอร์การวางแนวจะรายงานความแม่นยำที่คาดหวังในการอ่านค่าผ่าน sensors_event_t.orientation.status
ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับฟิลด์นี้ได้ในค่าคงที่
SensorManager
ของ
SENSOR_STATUS_*
เซ็นเซอร์ที่ยังไม่ได้ปรับเทียบ
เซ็นเซอร์ที่ไม่ได้ปรับเทียบจะให้ผลลัพธ์ดิบมากกว่าและอาจมีอคติอยู่บ้าง แต่ ก็มีการ "กระโดด" น้อยกว่าจากการแก้ไขที่ใช้ผ่านการ ปรับเทียบ แอปบางแอปอาจต้องการผลลัพธ์ที่ไม่ได้ปรับเทียบเหล่านี้เนื่องจากมีความราบรื่นและเชื่อถือได้มากกว่า เช่น หากแอปพยายามทำการรวมเซ็นเซอร์ของตัวเอง การปรับเทียบอาจทำให้ผลลัพธ์บิดเบือนได้
ตัวตรวจวัดความเร่งที่ยังไม่ได้ปรับเทียบ
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ของตัวตรวจวัดความเร่งที่ไม่ได้ปรับเทียบจะรายงานความเร่งของอุปกรณ์
ตามแกนเซ็นเซอร์ทั้ง 3 โดยไม่มีการแก้ไขความเอนเอียง (ความเอนเอียงจากโรงงาน
และการชดเชยอุณหภูมิจะใช้กับการวัดที่ไม่ได้ปรับเทียบ) พร้อมกับ
การประมาณความเอนเอียง
ค่าทั้งหมดอยู่ในหน่วย SI (ม./วินาที^2) และรายงานในฟิลด์ของ
sensors_event_t.uncalibrated_accelerometer
:
x_uncalib
: การเร่งความเร็ว (ไม่มีการชดเชยอคติ) ตามแกน Xy_uncalib
: ความเร่ง (ไม่มีการชดเชยอคติ) ตามแกน Yz_uncalib
: ความเร่ง (ไม่มีการชดเชยอคติ) ตามแกน Zx_bias
: อคติโดยประมาณตามแกน Xy_bias
: อคติโดยประมาณตามแกน Yz_bias
: อคติโดยประมาณตามแกน Z
เครื่องวัดการหมุนที่ยังไม่ได้ปรับเทียบ
เซ็นเซอร์ทางกายภาพพื้นฐาน: เครื่องวัดการหมุน
Reporting-mode: Continuous
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
ได้ หากการติดตั้งใช้งาน
ไม่สามารถประมาณค่าดริฟต์ได้ ก็ไม่ควรติดตั้งใช้งานเซ็นเซอร์นี้
หากมีเซ็นเซอร์นี้ เซ็นเซอร์ไจโรสโคปที่เกี่ยวข้องต้องมีอยู่ด้วย และเซ็นเซอร์ทั้ง 2 ต้องใช้ค่า sensor_t.name
และ sensor_t.vendor
เดียวกัน
สนามแม่เหล็กที่ยังไม่ได้ปรับเทียบ
เซ็นเซอร์ทางกายภาพพื้นฐาน: เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก
Reporting-mode: Continuous
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
เดียวกัน
มุมบานพับ
Reporting-mode: On-change
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
แสดงเซ็นเซอร์ปลุก
เซ็นเซอร์มุมบานพับจะวัดมุมเป็นองศาระหว่างชิ้นส่วน 2 ชิ้นที่ประกอบกันเป็น อุปกรณ์ การเคลื่อนไหวของบานพับที่วัดโดยเซ็นเซอร์ประเภทนี้คาดว่าจะเปลี่ยนวิธีที่ผู้ใช้โต้ตอบกับอุปกรณ์ เช่น โดยการกางออกหรือแสดงจอแสดงผล
เซ็นเซอร์แบบผสมสำหรับการโต้ตอบ
เซ็นเซอร์บางตัวส่วนใหญ่ใช้เพื่อตรวจหาการโต้ตอบกับผู้ใช้ เราไม่ได้ กำหนดวิธีติดตั้งใช้งานเซ็นเซอร์เหล่านั้น แต่เซ็นเซอร์ต้องใช้พลังงานต่ำ และผู้ผลิตอุปกรณ์มีหน้าที่รับผิดชอบในการยืนยันคุณภาพของเซ็นเซอร์ในแง่ของประสบการณ์ของผู้ใช้
ท่าทางสัมผัสสำหรับปลุก
เซ็นเซอร์ทางกายภาพพื้นฐาน: ไม่ได้กำหนด (ทุกอย่างที่ใช้พลังงานต่ำ)
Reporting-mode: One-shot
ใช้พลังงานต่ำ
ใช้เฉพาะเซ็นเซอร์เวอร์ชันที่เปิดใช้งานได้เท่านั้น
getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE)
แสดงผลเซ็นเซอร์ปลุก
เซ็นเซอร์ท่าทางสัมผัสเพื่อปลุกจะช่วยให้อุปกรณ์ตื่นขึ้นตามการเคลื่อนไหวเฉพาะของอุปกรณ์ เมื่อเซ็นเซอร์นี้ทำงาน อุปกรณ์จะทำงานราวกับว่ามีการกดปุ่มเปิด/ปิด ซึ่งจะเปิดหน้าจอ ผู้ใช้อาจปิดใช้งานลักษณะการทำงานนี้ (การเปิดหน้าจอเมื่อเซ็นเซอร์นี้ทริกเกอร์) ได้ในการตั้งค่าอุปกรณ์ การเปลี่ยนแปลงในการตั้งค่าจะไม่ส่งผลต่อลักษณะการทำงานของเซ็นเซอร์ แต่จะส่งผลต่อการที่เฟรมเวิร์กจะเปิดหน้าจอเมื่อทริกเกอร์หรือไม่เท่านั้น ไม่ได้ระบุท่าทางจริงที่จะตรวจจับ และผู้ผลิตอุปกรณ์สามารถเลือกได้
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ เนื่องจากมีแนวโน้มที่จะเปิดใช้งานตลอด 24 ชั่วโมงทุกวัน
เหตุการณ์เซ็นเซอร์แต่ละรายการจะรายงาน 1
ใน sensors_event_t.data[0]
ท่าทางสัมผัสสำหรับการหยิบ
เซ็นเซอร์ทางกายภาพพื้นฐาน: ไม่ได้กำหนด (ทุกอย่างที่ใช้พลังงานต่ำ)
Reporting-mode: One-shot
ใช้พลังงานต่ำ
ใช้เฉพาะเซ็นเซอร์เวอร์ชันที่เปิดใช้งานได้เท่านั้น
getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE)
แสดงผลเซ็นเซอร์ปลุก
เซ็นเซอร์ท่าทางสัมผัสเมื่อหยิบจะทำงานเมื่อมีการหยิบอุปกรณ์ ไม่ว่าก่อนหน้านี้อุปกรณ์จะอยู่ที่ใดก็ตาม (โต๊ะ กระเป๋าเสื้อ กระเป๋า)
เหตุการณ์เซ็นเซอร์แต่ละรายการจะรายงาน 1
ใน sensors_event_t.data[0]
ท่าทางสัมผัสแบบเหลือบมอง
เซ็นเซอร์ทางกายภาพพื้นฐาน: ไม่ได้กำหนด (ทุกอย่างที่ใช้พลังงานต่ำ)
Reporting-mode: One-shot
ใช้พลังงานต่ำ
ใช้เฉพาะเซ็นเซอร์เวอร์ชันที่เปิดใช้งานได้เท่านั้น
getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE)
แสดงผลเซ็นเซอร์ปลุก
เซ็นเซอร์ท่าทางสัมผัสแบบเหลือบมองช่วยให้เปิดหน้าจอได้ชั่วครู่เพื่อให้ ผู้ใช้เหลือบมองเนื้อหาบนหน้าจอตามการเคลื่อนไหวที่เฉพาะเจาะจง เมื่อเซ็นเซอร์นี้ ทริกเกอร์ อุปกรณ์จะเปิดหน้าจอชั่วคราวเพื่อให้ผู้ใช้ ดูการแจ้งเตือนหรือเนื้อหาอื่นๆ ขณะที่อุปกรณ์ยังคงล็อกอยู่ใน สถานะที่ไม่มีการโต้ตอบ (งีบ) จากนั้นหน้าจอจะปิดอีกครั้ง ผู้ใช้อาจปิดใช้งานลักษณะการทำงานนี้ (การเปิดหน้าจอชั่วคราวเมื่อเซ็นเซอร์นี้ทริกเกอร์) ได้ในการตั้งค่าอุปกรณ์ การเปลี่ยนแปลงในการตั้งค่าจะไม่ส่งผลต่อลักษณะการทำงานของเซ็นเซอร์ แต่จะส่งผลต่อการที่เฟรมเวิร์กจะเปิดหน้าจอชั่วคราวเมื่อทริกเกอร์หรือไม่เท่านั้น ไม่ได้ระบุท่าทางจริงที่จะตรวจจับ และผู้ผลิตอุปกรณ์สามารถเลือกได้
เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ เนื่องจากมีแนวโน้มที่จะเปิดใช้งานตลอด 24 ชั่วโมงทุกวัน
เหตุการณ์เซ็นเซอร์แต่ละรายการจะรายงาน 1
ใน
sensors_event_t.data[0]
เซ็นเซอร์ IMU แบบแกนจำกัด
เซ็นเซอร์ IMU แบบแกนจำกัดพร้อมใช้งานตั้งแต่ Android 13 เป็นต้นไป
เป็นเซ็นเซอร์ที่รองรับ Use Case ที่แกนทั้ง 3 (x, y, z) ไม่พร้อมใช้งาน
ประเภท IMU มาตรฐานใน Android (เช่น
SENSOR_TYPE_ACCELEROMETER
และ
SENSOR_TYPE_GYROSCOPE
)
ถือว่ารองรับทั้ง 3 แกน อย่างไรก็ตาม อุปกรณ์และรูปแบบอุปกรณ์บางอย่างไม่รองรับเครื่องวัดความเร่งแบบ 3 แกนและไจโรสโคปแบบ 3 แกน
แกนที่จำกัดของมาตรความเร่ง
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์แกนที่จำกัดของตัวตรวจวัดความเร่งเทียบเท่ากับ
TYPE_ACCELEROMETER
แต่รองรับกรณีที่ระบบไม่รองรับแกน 1 หรือ 2 แกน
ค่าเหตุการณ์เซ็นเซอร์ 3 ค่าสุดท้ายที่เซ็นเซอร์รายงานจะแสดงว่าระบบรองรับค่าความเร่งสำหรับแกน x, y และ z หรือไม่
ค่า
1.0
แสดงว่ารองรับแกน และค่า
0
แสดงว่าไม่รองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับในเวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงในระหว่างรันไทม์
ผู้ผลิตอุปกรณ์ต้องตั้งค่าการเร่งความเร็วสำหรับแกนที่ไม่ได้ใช้เป็น
0
แทนที่จะใช้ค่าที่ไม่ได้กำหนด
แกนที่จำกัดของเครื่องวัดการหมุน
เซ็นเซอร์ทางกายภาพพื้นฐาน: เครื่องวัดการหมุน
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์แกนที่จำกัดของเครื่องวัดการหมุนเทียบเท่ากับ TYPE_GYROSCOPE
แต่รองรับกรณีที่ระบบไม่รองรับแกน 1 หรือ 2 แกน
ค่าเหตุการณ์เซ็นเซอร์ 3 ค่าสุดท้ายที่เซ็นเซอร์รายงานจะแสดงว่าระบบรองรับค่าความเร็วเชิงมุมสำหรับแกน x, y และ z หรือไม่ ค่า
1.0
แสดงว่ารองรับแกน และค่า
0
แสดงว่าไม่รองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับในเวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงในระหว่างรันไทม์
ผู้ผลิตอุปกรณ์ต้องตั้งค่าความเร็วเชิงมุมสำหรับแกนที่ไม่ได้ใช้เป็น
0
ตัวตรวจวัดความเร่งแบบแกนจำกัดที่ยังไม่ได้ปรับเทียบ
เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED)
ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก
เซ็นเซอร์ที่ไม่ได้ปรับเทียบซึ่งจำกัดแกนของตัวตรวจวัดความเร่งจะเทียบเท่ากับ
TYPE_ACCELEROMETER_UNCALIBRATED
แต่รองรับกรณีที่ไม่รองรับแกน 1 หรือ
2 แกน
ค่าเหตุการณ์เซ็นเซอร์ 3 ค่าสุดท้ายที่เซ็นเซอร์รายงานจะแสดงว่าระบบรองรับค่าความเร่งและค่าอคติสำหรับแกน x, y และ z หรือไม่
ค่า 1.0
แสดงว่าแกนได้รับการรองรับ และค่า 0
แสดงว่าไม่ได้รับการรองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับในเวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงในระหว่างรันไทม์
ผู้ผลิตอุปกรณ์ต้องตั้งค่าความเร่งและค่าอคติสำหรับแกนที่ไม่ได้ใช้
เป็น 0
แกนที่จำกัดของไจโรสโคปที่ยังไม่ได้ปรับเทียบ
เซ็นเซอร์ทางกายภาพพื้นฐาน: เครื่องวัดการหมุน
Reporting-mode: Continuous
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 แกนที่ยังไม่ได้ปรับเทียบ
Reporting-mode: Continuous
เซ็นเซอร์ IMU แบบแกนจำกัดแบบผสมเทียบเท่ากับเซ็นเซอร์ IMU แบบแกนจำกัด แต่จะแปลงข้อมูลเซ็นเซอร์แบบ 3 แกน เป็นตัวแปรแบบแกนจำกัดที่เทียบเท่าแทนที่จะรองรับที่ HAL เซ็นเซอร์แบบผสมเหล่านี้จะเปิดใช้สำหรับอุปกรณ์ยานยนต์เท่านั้น
ตารางต่อไปนี้แสดงตัวอย่างการแปลงจากเครื่องวัดความเร่งมาตรฐาน 3 แกน เป็นเครื่องวัดความเร่งแบบแกนจำกัดแบบผสม
ค่า SensorEvent สำหรับ SENSOR_TYPE_ACCELEROMETER | ตัวอย่าง SENSOR_TYPE_ACCELEROMETER SensorEvent | Composite SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES SensorEvent |
---|---|---|
values[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, แมกนีโตมิเตอร์ ตัวตรวจวัดความเร่ง และเครื่องวัดการหมุน
Reporting-mode: Continuous
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 องศา