ประเภทเซ็นเซอร์

ส่วนนี้จะอธิบายแกนเซ็นเซอร์ เซ็นเซอร์พื้นฐาน และเซ็นเซอร์แบบผสม (กิจกรรม ท่าทาง เซ็นเซอร์ที่ยังไม่ได้ปรับเทียบ และการโต้ตอบ)

แกนเซ็นเซอร์

ค่าเหตุการณ์ของเซ็นเซอร์จากเซ็นเซอร์หลายตัวจะแสดงในเฟรมที่เฉพาะเจาะจงซึ่ง คงที่เมื่อเทียบกับอุปกรณ์

แกนอุปกรณ์เคลื่อนที่

Sensor API จะสัมพันธ์กับการวางแนวตามธรรมชาติของหน้าจอเท่านั้น (ระบบจะไม่สลับแกนเมื่อการวางแนวหน้าจอของอุปกรณ์เปลี่ยนแปลง

ระบบ
พิกัดของ Sensor API สำหรับอุปกรณ์เคลื่อนที่

รูปที่ 1 ระบบพิกัด (เทียบกับ อุปกรณ์เคลื่อนที่) ที่ใช้โดย Sensor API

ขวานซัด

ในการติดตั้งใช้งาน Android Automotive แกนจะกำหนดโดยอ้างอิงกับเฟรมตัวถังของรถ จุดเริ่มต้นของกรอบอ้างอิงของยานพาหนะคือจุดกึ่งกลางของเพลาหลัง กรอบอ้างอิงของยานพาหนะ จะวางแนวเพื่อให้

  • แกน X ชี้ไปทางขวาและอยู่บนระนาบแนวนอน ซึ่งตั้งฉากกับระนาบสมมาตรของยานพาหนะ
  • แกน Y ชี้ไปข้างหน้าและอยู่บนระนาบแนวนอน
ระบบพิกัดของ Sensor API สำหรับ
อุปกรณ์ยานยนต์

รูปที่ 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 ไมโครวัตต์ แม้ว่าการใช้พลังงานที่วัดได้ที่ชิปบารอมิเตอร์จะอยู่ที่ 100 ไมโครวัตต์ก็ตาม
  • แมกนีโตมิเตอร์ที่ใช้พลังงาน 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 ม./วินาที^2) ลบด้วยแรงโน้มถ่วง (-9.81 ม./วินาที^2)
  • เมื่อวางอุปกรณ์ราบกับโต๊ะและดันขึ้นไปบนฟ้า ค่า ความเร่งจะมากกว่า +9.81 ซึ่งสอดคล้องกับ ความเร่ง ของอุปกรณ์ (+A m/s^2) ลบด้วยแรงโน้มถ่วง (-9.81 m/s^2)

การอ่านค่าจะได้รับการปรับเทียบโดยใช้สิ่งต่อไปนี้

  • การชดเชยอุณหภูมิ
  • การปรับเทียบอคติทางออนไลน์
  • การปรับเทียบเครื่องชั่งออนไลน์

การปรับเทียบอคติและสเกลต้องได้รับการอัปเดตในขณะที่เซ็นเซอร์ ปิดใช้งานเท่านั้น เพื่อหลีกเลี่ยงไม่ให้ค่าเพิ่มขึ้นอย่างกะทันหันระหว่างการสตรีม

นอกจากนี้ มาตรวัดความเร่งยังรายงานความแม่นยำที่คาดหวังในการอ่านค่าผ่าน sensors_event_t.acceleration.status ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับฟิลด์นี้ได้ในค่าคงที่ SensorManager ของ SENSOR_STATUS_*

อุณหภูมิแวดล้อม

โหมดการรายงาน: 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_*

เราไม่สามารถจำลองไจโรสโคปตามแมกนีโตมิเตอร์และมาตรความเร่งได้ เนื่องจาก จะทำให้ความสอดคล้องและการตอบสนองในพื้นที่ลดลง โดยต้องอิงตามชิปไจโรสโคปปกติ

อัตราการเต้นของหัวใจ

โหมดการรายงาน: 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 ตัว หลีกเลี่ยงการเลือกเซ็นเซอร์ทางกายภาพอื่นๆ ที่อยู่เบื้องหลังเพื่อประมาณผลลัพธ์ เนื่องจากจะทำให้ผู้ใช้ได้รับประสบการณ์ที่ไม่ดี

ประเภทเซ็นเซอร์ หมวดหมู่ เซ็นเซอร์จริงที่อยู่เบื้องหลัง โหมดการรายงาน

เวกเตอร์การหมุนของเกม

ทัศนคติ

ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน ห้ามใช้เครื่องวัดสนามแม่เหล็ก

ต่อเนื่อง

เวกเตอร์การหมุน แม่เหล็กโลก เซ็นเซอร์
     ใช้พลังงานต่ำ

ทัศนคติ

ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก ห้ามใช้เครื่องวัดการหมุน

ต่อเนื่อง

ท่าทางสัมผัสเพื่อดู เซ็นเซอร์ใช้พลังงานต่ำ

การโต้ตอบ

ไม่ระบุ

ครั้งเดียว

Gravity

ทัศนคติ

ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน (หากมี) หรือแมกนีโตมิเตอร์ (หากไม่มีเครื่องวัดการหมุน)

ต่อเนื่อง

เครื่องวัดการหมุนที่ไม่ได้ปรับเทียบ

ยังไม่ได้ปรับเทียบ

เครื่องวัดการหมุน

ต่อเนื่อง

การเร่งความเร็วเชิงเส้น

กิจกรรม

ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน (หากมี) หรือแมกนีโตมิเตอร์ (หากไม่มีเครื่องวัดการหมุน)

ต่อเนื่อง

สนามแม่เหล็กที่ยังไม่ได้ปรับเทียบ

ยังไม่ได้ปรับเทียบ

เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก

ต่อเนื่อง

การวางแนว (เลิกใช้งานแล้ว)

ทัศนคติ

ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก เครื่องวัดการหมุน (หากมี)

ต่อเนื่อง

ท่าทางสัมผัสการรับสินค้า เซ็นเซอร์ใช้พลังงานต่ำ

การโต้ตอบ

ไม่ระบุ

ครั้งเดียว

เวกเตอร์การหมุน

ทัศนคติ

ตัวตรวจวัดความเร่ง เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก เครื่องวัดการหมุน (หากมี)

ต่อเนื่อง

การเคลื่อนไหวที่สำคัญ เซ็นเซอร์ใช้พลังงานต่ำ

กิจกรรม

ตัวตรวจวัดความเร่ง (หรือตัวอื่นที่ใช้พลังงานต่ำมาก)

ครั้งเดียว

ตัวนับก้าว เซ็นเซอร์ใช้พลังงานต่ำ

กิจกรรม

ตัวตรวจวัดความเร่ง

เมื่อมีการเปลี่ยนแปลง

เครื่องตรวจจับการก้าว เซ็นเซอร์ใช้พลังงานต่ำ

กิจกรรม

ตัวตรวจวัดความเร่ง

พิเศษ

เครื่องตรวจจับการเอียง เซ็นเซอร์ใช้พลังงานต่ำ

กิจกรรม

ตัวตรวจวัดความเร่ง

พิเศษ

ท่าทางสัมผัสปลุก เซ็นเซอร์ใช้พลังงานต่ำ

การโต้ตอบ

ไม่ระบุ

ครั้งเดียว

เซ็นเซอร์ใช้พลังงานต่ำ = เซ็นเซอร์ที่ใช้พลังงานต่ำ

เซ็นเซอร์รวมกิจกรรม

การเร่งความเร็วเชิงเส้น

เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่งและ (หากมี) เครื่องวัดการหมุน (หรือ เครื่องวัดสนามแม่เหล็กหากไม่มีเครื่องวัดการหมุน)

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 ได้

เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ กล่าวคือ หากตรวจหาจำนวนก้าวในฮาร์ดแวร์ไม่ได้ ก็ไม่ควรกำหนดเซ็นเซอร์นี้ กล่าวอย่างเจาะจงคือ เมื่อเปิดใช้งานตัวนับก้าว และไม่ได้เปิดใช้งานตัวตรวจวัดความเร่ง เฉพาะก้าวเท่านั้นที่ควรทริกเกอร์ การขัดจังหวะ (ไม่ใช่ข้อมูลตัวตรวจวัดความเร่ง)

อุปกรณ์ตรวจจับการเอียง

เซ็นเซอร์ทางกายภาพพื้นฐาน: ตัวตรวจวัดความเร่ง (+ อาจมีเซ็นเซอร์อื่นๆ ตราบใดที่ใช้พลังงานต่ำ)

Reporting-mode: Special

ใช้พลังงานต่ำ

ใช้เฉพาะเซ็นเซอร์เวอร์ชันที่เปิดใช้ได้

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)

การหมุนสามารถมองได้ว่าเป็นการหมุนโทรศัพท์ด้วยมุมทีต้าโดยรอบแกน 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 เคลื่อนที่เข้าหาแกน Y
  • sensors_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: การเร่งความเร็ว (ไม่มีการชดเชยอคติ) ตามแกน X
  • y_uncalib: ความเร่ง (ไม่มีการชดเชยอคติ) ตามแกน Y
  • z_uncalib: ความเร่ง (ไม่มีการชดเชยอคติ) ตามแกน Z
  • x_bias: อคติโดยประมาณตามแกน X
  • y_bias: อคติโดยประมาณตามแกน Y
  • z_bias: อคติโดยประมาณตามแกน Z

เครื่องวัดการหมุนที่ไม่ได้ปรับเทียบ

เซ็นเซอร์ทางกายภาพพื้นฐาน: เครื่องวัดการหมุน

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) ส่งคืนเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

ไจโรสโคปที่ไม่ได้ปรับเทียบจะรายงานอัตราการหมุนรอบแกนเซ็นเซอร์ โดยไม่ได้ใช้การชดเชยอคติกับแกนเหล่านั้น พร้อมกับการประมาณอคติ ค่าทั้งหมด อยู่ในหน่วยเรเดียน/วินาที และรายงานในฟิลด์ของ sensors_event_t.uncalibrated_gyro:

  • x_uncalib: ความเร็วเชิงมุม (ไม่มีการชดเชยการดริฟต์) รอบแกน X
  • y_uncalib: ความเร็วเชิงมุม (ไม่มีการชดเชยการดริฟต์) รอบแกน Y
  • z_uncalib: ความเร็วเชิงมุม (ไม่มีการชดเชยการดริฟท์) รอบแกน Z
  • x_bias: การดริฟต์โดยประมาณรอบแกน X
  • y_bias: การดริฟต์โดยประมาณรอบแกน Y
  • z_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: สนามแม่เหล็ก (ไม่มีการชดเชยฮาร์ดไอรอน) ตามแกน X
  • y_uncalib: สนามแม่เหล็ก (ไม่มีการชดเชยฮาร์ดไอออน) ตามแกน Y
  • z_uncalib: สนามแม่เหล็ก (ไม่มีการชดเชยฮาร์ดไอรอน) ตามแกน Z
  • x_bias: อคติฮาร์ดไอรอนโดยประมาณตามแกน X
  • y_bias: ค่าอคติของฮาร์ดไอรอนโดยประมาณตามแกน Y
  • z_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 องศา