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

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

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

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

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

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 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 เคลื่อนที่เข้าหาแกน 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 องศา