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

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

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

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

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

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

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

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

ขวานสำหรับรถยนต์

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

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

รูปที่ 2 ระบบพิกัด (สัมพันธ์กับอุปกรณ์ยานยนต์) ที่ Sensor API ใช้

เฟรมอ้างอิงยานพาหนะเป็นระบบพิกัดที่ใช้มือขวา ดังนั้นแกน Z จะชี้ขึ้น

แกน Z ของเฟรมอ้างอิงจะสอดคล้องกับแรงโน้มถ่วง ซึ่งหมายความว่าแกน X และแกน Y จะเป็นแนวนอนทั้งคู่ ด้วยเหตุนี้ แกน Y จึงอาจไม่ได้ผ่านเพลาหน้าเสมอไป

เซ็นเซอร์ฐาน

ประเภทเซ็นเซอร์ฐานจะตั้งชื่อตามเซ็นเซอร์ทางกายภาพที่เซ็นเซอร์เหล่านั้นแสดง เซ็นเซอร์เหล่านี้จะส่งต่อข้อมูลจากเซ็นเซอร์ทางกายภาพตัวเดียว (ตรงข้ามกับเซ็นเซอร์แบบผสมที่สร้างข้อมูลออกมาจากเซ็นเซอร์อื่นๆ) ตัวอย่างประเภทเซ็นเซอร์พื้นฐาน ได้แก่

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

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

เช่น ลักษณะของเซ็นเซอร์ฐานอาจแตกต่างจากลักษณะเฉพาะของเซ็นเซอร์จริงที่แฝงอยู่ในกรณีการใช้งานต่อไปนี้

  • ชิปไจโรสโคปที่ได้รับการจัดประเภทให้มีช่วงความเบี่ยงเบน 1 องศา/วินาที
    • หลังจากการสอบเทียบจากโรงงาน การปรับอุณหภูมิชดเชยและการชดเชยความเบี่ยงเบน จะทำให้ความเบี่ยงเบนจริงของเซ็นเซอร์ Android ลดลง ซึ่งอาจลดลงจนมั่นใจได้ว่าความเบี่ยงเบนจะต่ำกว่า 0.01 องศา/วินาที
    • ในกรณีนี้ เราถือว่าเซ็นเซอร์ Android มีความเบี่ยงเบนต่ำกว่า 0.01 องศา/วินาที แม้ว่าชีตข้อมูลของเซ็นเซอร์ที่เกี่ยวข้องจะระบุว่า 1 องศา/วินาที
  • บารอมิเตอร์ที่มีอัตราการใช้พลังงาน 100 uW
    • เนื่องจากต้องส่งข้อมูลที่สร้างขึ้นจากชิปไปยัง SoC การใช้พลังงานจริงในการรวบรวมข้อมูลจากเซ็นเซอร์บารอมิเตอร์ของ Android จึงอาจสูงกว่ามาก เช่น 1,000 uW
    • ในกรณีนี้ เราจะบอกว่าเซ็นเซอร์ Android ใช้พลังงาน 1,000 uW แม้ว่าการใช้พลังงานที่วัดได้ที่ขั้วต่อชิปบารอมิเตอร์จะเท่ากับ 100uW
  • มาตรความเข้มสนามแม่เหล็กที่ใช้พลังงาน 100uW เมื่อปรับเทียบ แต่ใช้พลังงานมากขึ้นเมื่อปรับเทียบ
    • ขั้นตอนการปรับเทียบอาจต้องเปิดใช้งานไจโรสโคป ซึ่งจะใช้พลังงาน 5,000 uW และเรียกใช้อัลกอริทึมบางอย่าง ซึ่งจะใช้พลังงานอีก 900 uW
    • ในกรณีนี้ เราจะบอกว่าการสิ้นเปลืองพลังงานสูงสุดของเซ็นเซอร์ (Magnetometer) ของ Android คือ 6000 uW
    • ในกรณีนี้ ปริมาณการใช้พลังงานโดยเฉลี่ยเป็นค่าที่มีประโยชน์มากกว่า และเป็นค่าที่รายงานในลักษณะคงที่ของเซ็นเซอร์ผ่าน HAL

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ

เซ็นเซอร์ตัวตรวจวัดความเร่งรายงานความเร่งของอุปกรณ์ตามแกนเซ็นเซอร์ 3 แกน แรงเร่งที่วัดได้จะรวมทั้งแรงเร่งทางกายภาพ (การเปลี่ยนแปลงของความเร็ว) และแรงโน้มถ่วง ระบบจะรายงานการวัดในช่อง x, y และ z ของ sensors_event_t.acceleration

ค่าทั้งหมดเป็นหน่วย SI (m/s^2) และวัดความเร่งของอุปกรณ์ลบด้วยแรงโน้มถ่วงตามแกนเซ็นเซอร์ทั้ง 3

ตัวอย่างมีดังนี้

  • ผลรวมของ (x, y, z) ควรใกล้เคียงกับ 0 เมื่ออยู่ในภาวะตกอิสระ
  • เมื่ออุปกรณ์วางราบบนโต๊ะและถูกดันจากด้านซ้ายไปทางขวา ค่าความเร่งในแนว x จะเป็นค่าบวก
  • เมื่ออุปกรณ์วางราบบนโต๊ะ ค่าความเร่งตามแกน z จะเท่ากับ +9.81 alo ซึ่งสอดคล้องกับความเร่งของอุปกรณ์ (0 m/s^2) ลบด้วยแรงโน้มถ่วง (-9.81 m/s^2)
  • เมื่ออุปกรณ์วางราบบนโต๊ะและถูกดันขึ้นสู่ท้องฟ้า ค่าความเร่งจะมากกว่า +9.81 ซึ่งสอดคล้องกับความเร่งของอุปกรณ์ (+A m/s^2) ลบด้วยแรงโน้มถ่วง (-9.81 m/s^2)

การปรับเทียบค่าที่อ่านได้จะใช้ข้อมูลต่อไปนี้

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

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

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

อุณหภูมิรอบข้าง

โหมดการรายงาน: เมื่อมีการเปลี่ยนแปลง

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) แสดงผลเซ็นเซอร์ที่ไม่ปลุก

เซ็นเซอร์นี้จะแสดงอุณหภูมิแวดล้อม (ห้อง) เป็นองศาเซลเซียส

เซ็นเซอร์สนามแม่เหล็ก

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) แสดงผลเซ็นเซอร์ที่ไม่ปลุก

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

เซ็นเซอร์สนามแม่เหล็ก (หรือที่เรียกว่าเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก) จะรายงานสนามแม่เหล็กโดยรอบซึ่งวัดตามแกนเซ็นเซอร์ 3 แกน

การวัดจะรายงานในช่อง x, y และ z ของ sensors_event_t.magnetic และค่าทั้งหมดจะอยู่ในหน่วยไมโครเทสลา (uT)

เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กยังรายงานความแม่นยำที่คาดว่าค่าที่อ่านได้ว่าจะอ่านได้ จนถึง sensors_event_t.magnetic.status ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับช่องนี้ในค่าคงที่ SensorManager’s SENSOR_STATUS_*

การปรับเทียบค่าที่อ่านได้จะใช้ข้อมูลต่อไปนี้

  • การชดเชยอุณหภูมิ
  • การปรับเทียบแม่เหล็กอ่อนจากโรงงาน (หรือออนไลน์)
  • การปรับเทียบฮาร์ดดิสก์ออนไลน์

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

เซ็นเซอร์ไจโรสโคปจะรายงานอัตราการหมุนของอุปกรณ์รอบแกนเซ็นเซอร์ 3 แกน

การหมุนเป็นบวกเมื่อหมุนทวนเข็มนาฬิกา (กฎมือขวา) กล่าวคือ ผู้สังเกตการณ์ที่มองจากตำแหน่งเชิงบวกบนแกน x, y หรือ z ที่อุปกรณ์ซึ่งอยู่ในจุดเริ่มต้นจะรายงานการหมุนเชิงบวกหากอุปกรณ์ดูเหมือนจะหมุนทวนเข็มนาฬิกา โปรดทราบว่านี่เป็นคำจำกัดความทางคณิตศาสตร์มาตรฐานของการหมุนตามเข็มนาฬิกาและไม่สอดคล้องกับคำจำกัดความของ "การพลิก" ในสาขาวิศวกรรมการบินและอวกาศ

ระบบจะรายงานการวัดในช่อง x, y และ z ของ sensors_event_t.gyro และค่าทั้งหมดจะอยู่ในหน่วยเรเดียนต่อวินาที (rad/s)

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

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

เครื่องวัดการหมุนยังรายงานความแม่นยำของการอ่านค่าจนถึง sensors_event_t.gyro.status อีกด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับช่องนี้ในค่าคงที่ SENSOR_STATUS_* ของ SensorManager

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

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

โหมดการรายงาน: เมื่อมีการเปลี่ยนแปลง

getDefaultSensor(SENSOR_TYPE_HEART_RATE) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

เซ็นเซอร์วัดอัตราการเต้นของหัวใจจะรายงานอัตราการเต้นของหัวใจปัจจุบันของผู้ที่แตะอุปกรณ์

ระบบจะรายงานอัตราการเต้นของหัวใจปัจจุบันเป็นครั้งต่อนาที (BPM) ใน sensors_event_t.heart_rate.bpm และรายงานสถานะของเซ็นเซอร์ใน sensors_event_t.heart_rate.status ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้สำหรับช่องนี้ในค่าคงที่ SENSOR_STATUS_* ของ SensorManager โดยเฉพาะอย่างยิ่ง เมื่อเปิดใช้งานครั้งแรก ช่องสถานะของเหตุการณ์แรกต้องตั้งค่าเป็น SENSOR_STATUS_UNRELIABLE เว้นแต่จะทราบว่าอุปกรณ์ไม่ได้อยู่บนร่างกาย เนื่องจากเซ็นเซอร์นี้เป็นแบบการเปลี่ยนแปลง ระบบจะสร้างเหตุการณ์เฉพาะในกรณีที่ heart_rate.bpm หรือ heart_rate.status มีการเปลี่ยนแปลงนับตั้งแต่เหตุการณ์ล่าสุด ระบบจะสร้างเหตุการณ์ทุกๆ sampling_period รายการ

sensor_t.requiredPermission มีค่าเป็น SENSOR_PERMISSION_BODY_SENSORS เสมอ

น้อย

โหมดการรายงาน: On-change

getDefaultSensor(SENSOR_TYPE_LIGHT) แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ

เซ็นเซอร์แสงจะรายงานความสว่างปัจจุบันเป็นหน่วยลักซ์ SI

การวัดจะแสดงใน sensors_event_t.light

พร็อกซิมิตี

โหมดการรายงาน: On-change

มักกำหนดเป็นเซ็นเซอร์ปลุก

getDefaultSensor(SENSOR_TYPE_PROXIMITY) แสดงผลเซ็นเซอร์ปลุก

พร็อกซิมิตีเซ็นเซอร์จะรายงานระยะทางจากเซ็นเซอร์ไปยังพื้นผิวที่มองเห็นได้ใกล้ที่สุด

ตั้งแต่เวอร์ชัน Android 4.4 พร็อกซิมิตีเซ็นเซอร์จะเป็นเซ็นเซอร์ปลุกระบบเสมอ ซึ่งจะปลุก SoC ให้เริ่มทำงานเมื่อตรวจพบการเปลี่ยนแปลงของระยะใกล้ หลังจาก Android 4.4 เราขอแนะนำให้ใช้เซ็นเซอร์เวอร์ชันปลุกระบบนี้ก่อน เนื่องจากเซ็นเซอร์เวอร์ชันนี้สามารถใช้เปิดและปิดหน้าจอขณะทำการโทร

การวัดจะรายงานเป็นเซนติเมตรใน sensors_event_t.distance โปรดทราบว่าเซ็นเซอร์ตรวจหาบุคคลในบริเวณใกล้เคียงบางรุ่นรองรับการวัดผลแบบ 2 ค่าเท่านั้น ได้แก่ "ใกล้" หรือ "ไกล" ในกรณีนี้ เซ็นเซอร์จะรายงานค่า sensor_t.maxRange ในสถานะ "ไกล" และค่าที่น้อยกว่า sensor_t.maxRange ในสถานะ "ใกล้"

ความกดอากาศ

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_PRESSURE) แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ

เซ็นเซอร์ความดัน (หรือที่เรียกว่าบารอมิเตอร์) จะรายงานความดันบรรยากาศในหน่วยเฮกโตปาสกาล (hPa)

การปรับเทียบค่าที่อ่านได้

  • การชดเชยอุณหภูมิ
  • การปรับเทียบค่าเบี่ยงเบนจากค่าที่โรงงานกำหนด
  • การปรับเทียบเครื่องชั่งน้ำหนัก

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

ความชื้นสัมพัทธ์

โหมดการรายงาน: On-change

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ

เซ็นเซอร์ความชื้นสัมพัทธ์จะวัดความชื้นสัมพัทธ์ในอากาศและแสดงผลค่าเป็นเปอร์เซ็นต์

ประเภทเซ็นเซอร์คอมโพสิต

เซ็นเซอร์แบบคอมโพสิตจะสร้างข้อมูลโดยการประมวลผลและ/หรือผสานข้อมูลจากเซ็นเซอร์ที่จับสัญญาณทางกายภาพ 1 ตัวหรือหลายตัว (เซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ฐานเรียกว่าเซ็นเซอร์คอมโพสิต) ตัวอย่างของเซ็นเซอร์วัสดุเชิงประกอบ ได้แก่

ลักษณะของเซ็นเซอร์คอมโพสิตจะมาจากลักษณะของข้อมูลขั้นสุดท้ายเช่นเดียวกับเซ็นเซอร์พื้นฐาน ตัวอย่างเช่น ปริมาณการใช้พลังงานของเวกเตอร์การหมุนของเกมอาจเท่ากับผลรวมของปริมาณการใช้พลังงานของชิปตรวจวัดความเร่ง ชิปเครื่องวัดการหมุน ชิปที่ประมวลผลข้อมูล และบัสที่ส่งข้อมูล อีกตัวอย่างหนึ่งคือ ความคลาดเคลื่อนของเวกเตอร์การหมุนของเกมจะขึ้นอยู่กับคุณภาพของอัลกอริทึมการปรับเทียบมากพอๆ กับลักษณะของเซ็นเซอร์ทางกายภาพ

ตารางต่อไปนี้แสดงประเภทเซ็นเซอร์คอมโพสิตที่ใช้ได้ เซ็นเซอร์คอมโพสิตแต่ละตัวใช้ข้อมูลจากเซ็นเซอร์ที่จับสัญญาณจริงอย่างน้อย 1 ตัว หลีกเลี่ยงการเลือกเซ็นเซอร์อื่นๆ ที่อยู่เบื้องหลังเพื่อประมาณผลลัพธ์ เนื่องจากจะทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี

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

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

ทัศนคติ

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

ต่อเนื่อง

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

ทัศนคติ

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

ต่อเนื่อง

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

การโต้ตอบ

ไม่ระบุ

ถ่ายครั้งเดียว

แรงโน้มถ่วง

ทัศนคติ

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

ต่อเนื่อง

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

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

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

ต่อเนื่อง

การเร่งแบบเชิงเส้น

กิจกรรม

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

ต่อเนื่อง

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

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

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

ต่อเนื่อง

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

ทัศนคติ

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

ต่อเนื่อง

ท่าทางสัมผัสเพื่อรับสาย เซ็นเซอร์พลังงานต่ำ

การโต้ตอบ

ไม่ระบุ

ถ่ายครั้งเดียว

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

ทัศนคติ

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

ต่อเนื่อง

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

กิจกรรม

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

ถ่ายครั้งเดียว

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

กิจกรรม

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

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

ตัวตรวจจับขั้น เซ็นเซอร์พลังงานต่ำ

กิจกรรม

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

พิเศษ

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

กิจกรรม

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

พิเศษ

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

การโต้ตอบ

ไม่ระบุ

ถ่ายครั้งเดียว

เซ็นเซอร์พลังงานต่ำ = เซ็นเซอร์พลังงานต่ำ

เซ็นเซอร์แบบคอมโพสิตของกิจกรรม

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

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

เซ็นเซอร์ความเร่งเชิงเส้นจะรายงานความเร่งเชิงเส้นของอุปกรณ์ในเฟรมเซ็นเซอร์โดยไม่รวมแรงโน้มถ่วง

เอาต์พุตคือแนวคิด: เอาต์พุตของเครื่องวัดความเร่งลบด้วยเอาต์พุตของเซ็นเซอร์แรงโน้มถ่วง โดยระบบจะรายงานเป็น m/s^2 ในช่อง x, y และ z ของ sensors_event_t.acceleration

ค่าที่อ่านได้บนแกนทั้งหมดควรใกล้เคียงกับ 0 เมื่ออุปกรณ์ไม่เคลื่อนไหว

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

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

การเคลื่อนไหวที่สำคัญ

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

โหมดการรายงาน: แบบครั้งเดียว

พลังงานต่ำ

ใช้เซ็นเซอร์นี้เฉพาะเวอร์ชันที่ปลุกเท่านั้น

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) แสดงผลเซ็นเซอร์ปลุก

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

ตัวอย่างการเคลื่อนไหวที่สำคัญดังกล่าว ได้แก่

  • เดินหรือขี่จักรยาน
  • นั่งอยู่ในรถ โค้ช หรือรถไฟที่กำลังเคลื่อนที่

ตัวอย่างสถานการณ์ที่ไม่ทริกเกอร์การเคลื่อนไหวที่สำคัญ

  • โทรศัพท์อยู่ในกระเป๋าและบุคคลไม่เคลื่อนไหว
  • โทรศัพท์วางอยู่บนโต๊ะและโต๊ะสั่นเล็กน้อยเนื่องจากมีรถสัญจรหรือเครื่องซักผ้าอยู่ใกล้ๆ

ในระดับสูง ระบบจะใช้อุปกรณ์ตรวจจับการเคลื่อนไหวที่สำคัญเพื่อลดการใช้พลังงานในการระบุตำแหน่ง เมื่ออัลกอริทึมการระบุตำแหน่งตรวจพบว่าอุปกรณ์ไม่มีการเคลื่อนไหว อัลกอริทึมจะเปลี่ยนไปใช้โหมดพลังงานต่ำ ซึ่งจะอาศัยการเคลื่อนไหวที่สำคัญเพื่อปลุกอุปกรณ์เมื่อผู้ใช้เปลี่ยนตำแหน่ง

เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ ซึ่งจะแลกมาด้วยการใช้พลังงานที่อาจส่งผลให้เกิดผลลบลวงจำนวนเล็กน้อย การดำเนินการนี้มีสาเหตุดังนี้

  • เป้าหมายของเซ็นเซอร์นี้คือประหยัดพลังงาน
  • การทริกเกอร์เหตุการณ์เมื่อผู้ใช้ไม่ได้เคลื่อนไหว (ผลบวกลวง) นั้นสิ้นเปลืองพลังงาน จึงควรหลีกเลี่ยง
  • การไม่ทริกเกอร์เหตุการณ์เมื่อผู้ใช้เคลื่อนไหว (ผลลบเท็จ) นั้นยอมรับได้ ตราบใดที่ไม่เกิดซ้ำ หากผู้ใช้เดินเป็นเวลา 10 วินาที การไม่ทริกเกอร์เหตุการณ์ภายใน 10 วินาทีนั้นยอมรับไม่ได้

เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1 ใน sensors_event_t.data[0]

ตัวตรวจจับก้าว

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

โหมดการรายงาน: พิเศษ (1 เหตุการณ์ต่อขั้นตอนที่ดำเนินการ)

พลังงานต่ำ

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ

ตัวตรวจจับจำนวนก้าวจะสร้างเหตุการณ์ทุกครั้งที่ผู้ใช้เดิน

การประทับเวลาของเหตุการณ์ sensors_event_t.timestamp ตรงกับเวลาที่เท้าแตะพื้น ซึ่งทำให้เกิดความแปรปรวนสูงในการเร่ง

ตัวตรวจจับจำนวนก้าวควรมีความล่าช้าต่ำกว่า (น้อยกว่า 2 วินาที) เมื่อเทียบกับเครื่องนับก้าว ทั้งตัวตรวจจับก้าวและตัวนับก้าวจะตรวจจับเมื่อผู้ใช้เดิน วิ่ง และเดินขึ้นบันได โดยไม่ควรทริกเกอร์เมื่อผู้ใช้ขี่จักรยาน ขับรถ หรืออยู่ในยานพาหนะอื่นๆ

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

sampling_period_ns ไม่มีผลต่อตัวตรวจจับจำนวนก้าว

เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1 ใน sensors_event_t.data[0]

ตัวนับก้าว

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

โหมดการรายงาน: On-change

พลังงานต่ำ

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

เครื่องนับก้าวจะรายงานจํานวนก้าวที่ผู้ใช้เดินตั้งแต่การรีบูตครั้งล่าสุดขณะเปิดใช้งาน

การวัดจะรายงานเป็น uint64_t ใน sensors_event_t.step_counter และจะรีเซ็ตเป็น 0 เมื่อรีบูตระบบเท่านั้น

ระบบจะตั้งการประทับเวลาของเหตุการณ์เป็นเวลาที่ดําเนินการขั้นตอนสุดท้ายสําหรับเหตุการณ์นั้น

ดูประเภทเซ็นเซอร์ตัวตรวจจับก้าวเพื่อดูสัญญาณของเวลาที่มีการก้าว

ตัวนับก้าวอาจมีความล่าช้าสูงกว่า (สูงสุด 10 วินาที) เมื่อเทียบกับตัวตรวจจับการเดิน ความล่าช้านี้ทำให้เซ็นเซอร์มีความแม่นยำสูง โดยจํานวนก้าวหลังจากการวัดตลอดทั้งวันควรอยู่ภายใน 10% ของจํานวนก้าวจริง ทั้งเครื่องตรวจจับจำนวนก้าวและตัวนับจำนวนก้าวจะตรวจจับเมื่อผู้ใช้เดิน วิ่ง และเดินขึ้นบันได โดยไม่ควรทริกเกอร์เมื่อผู้ใช้ขี่จักรยาน ขับรถ หรืออยู่ในยานพาหนะอื่นๆ

ฮาร์ดแวร์ต้องแน่ใจว่าจำนวนก้าวภายในจะไม่ล้นเกิน ขนาดขั้นต่ำของตัวนับภายในของฮาร์ดแวร์คือ 16 บิต ในกรณีที่ใกล้จะเกิดการท่วม (สูงสุดทุกๆ 2^16 ขั้นตอน) ระบบจะปลุก SoC เพื่อให้โปรแกรมควบคุมดำเนินการบำรุงรักษาตัวนับได้

ตามที่ระบุไว้ในการโต้ตอบ ขณะที่เซ็นเซอร์นี้ทำงานอยู่ จะไม่รบกวนเซ็นเซอร์อื่นๆ โดยเฉพาะตัวตรวจวัดความเร่ง ซึ่งอาจใช้งานได้ดีอยู่แล้ว

หากอุปกรณ์บางเครื่องไม่รองรับโหมดการทํางานเหล่านี้ HAL ต้องไม่รายงานเซ็นเซอร์ประเภทนี้ กล่าวคือ ไม่อนุญาตให้ "จําลอง" เซ็นเซอร์นี้ใน HAL

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

ตัวตรวจจับการเอียง

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

โหมดการรายงาน: พิเศษ

พลังงานต่ำ

ใช้เฉพาะเวอร์ชันปลุกระบบของเซ็นเซอร์นี้

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) แสดงผลเซ็นเซอร์ปลุก

ตัวตรวจจับการเอียงจะสร้างเหตุการณ์ขึ้นทุกครั้งที่ตรวจพบเหตุการณ์การเอียง

เหตุการณ์การเอียงจะกำหนดโดยทิศทางของค่าเฉลี่ยของกรอบเวลา 2 วินาทีซึ่งแรงโน้มถ่วงเปลี่ยนแปลงอย่างน้อย 35 องศานับตั้งแต่การเปิดใช้งานหรือเหตุการณ์ล่าสุดที่เซ็นเซอร์สร้างขึ้น อัลกอริทึมมีดังนี้

  • reference_estimated_gravity = การวัดความเร่งของตัวตรวจวัดความเร่งในช่วงวินาทีแรกหลังจากการเปิดใช้งานหรือค่าแรงโน้มถ่วงโดยประมาณเมื่อระบบสร้างเหตุการณ์การเอียงครั้งล่าสุด
  • current_estimated_gravity = ค่าเฉลี่ยของการวัดจากเครื่องวัดความเร่งในช่วง 2 วินาทีที่ผ่านมา
  • เรียกให้แสดงเมื่อ angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

การเร่งความเร็วขนาดใหญ่โดยไม่มีการเปลี่ยนการวางแนวโทรศัพท์ไม่ควรทำให้เกิด เหตุการณ์การเอียง ตัวอย่างเช่น การเลี้ยวหักศอกหรือการเร่งความเร็วที่สูงขณะขับรถไม่ควรทำให้เกิดการเอียง แม้ว่ามุมของความเร่งเฉลี่ยอาจแตกต่างออกไปมากกว่า 35 องศาก็ตาม โดยปกติแล้ว เซ็นเซอร์นี้จะติดตั้งใช้งานด้วยความช่วยเหลือจากเครื่องวัดความเร่งเท่านั้น คุณใช้เซ็นเซอร์อื่นๆ ได้เช่นกันในกรณีที่เซ็นเซอร์ดังกล่าวไม่ได้ใช้พลังงานมากขึ้นมากนัก นี่คือเซ็นเซอร์พลังงานต่ำที่ควรช่วยให้ SoC เข้าสู่โหมดสลีปได้ อย่าจำลองเซ็นเซอร์นี้ใน HAL เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1 ใน sensors_event_t.data[0]

เซ็นเซอร์แบบคอมโพสิตของการวางแนว

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

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR) แสดงเซ็นเซอร์ที่ไม่ปลุก

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

  • X ชี้ไปทางทิศตะวันออกและสัมผัสกับพื้น
  • Y ชี้ไปทางทิศเหนือและสัมผัสกับพื้น
  • Z จะชี้ขึ้นฟ้าและตั้งฉากกับพื้น

การวางแนวของโทรศัพท์แสดงด้วยการหมุนที่จำเป็นในการปรับแนวพิกัดตะวันออก-เหนือ-บนให้สอดคล้องกับพิกัดของโทรศัพท์ กล่าวคือ การใช้การหมุนกับเฟรมโลก (X,Y,Z) จะจัดแนวเฟรมให้สอดคล้องกับพิกัดของโทรศัพท์ (x,y,z)

การหมุนจะเหมือนกับการหมุนโทรศัพท์ตามมุม θ รอบแกน rot_axis เพื่อเปลี่ยนจากการวางแนวอุปกรณ์อ้างอิง (ตะวันออก-เหนือ-บน) ไปเป็นการวางแนวอุปกรณ์ปัจจุบัน การหมุนจะเข้ารหัสเป็นส่วนประกอบ x, y, z, w หน่วยที่ไม่มีหน่วย 4 หน่วยของหน่วยควอเทอร์เนียน

  • sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
  • sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
  • sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
  • sensors_event_t.data[3] = cos(theta/2)

สถานที่:

  • ช่อง x, y และ z ของ rot_axis คือพิกัดตะวันออก-เหนือ-บนของเวกเตอร์ความยาว 1 หน่วยที่แสดงแกนหมุน
  • theta คือมุมการหมุน

ควอเทอร์เนียนเป็นควอเทอร์เนียนหน่วย: ต้องเป็นค่าที่เป็นไปตามมาตรฐาน 1 มิเช่นนั้นจะทำให้ไคลเอ็นต์ทำงานผิดปกติ

นอกจากนี้ เซ็นเซอร์นี้จะรายงานความแม่นยำของส่วนหัวโดยประมาณ ดังนี้

sensors_event_t.data[4] = estimated_accuracy (เป็นเรเดียน)

ข้อผิดพลาดของส่วนหัวต้องน้อยกว่า estimated_accuracy 95% ของเวลาทั้งหมด เซ็นเซอร์นี้ต้องใช้ไจโรสโคปเป็นอินพุตการเปลี่ยนแปลงการวางแนวหลัก

เซ็นเซอร์นี้ยังใช้อินพุตจากเครื่องตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กเพื่อชดเชยความคลาดเคลื่อนของเครื่องวัดการหมุน และไม่สามารถติดตั้งใช้งานโดยใช้เพียงเครื่องตรวจวัดความเร่งและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก

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

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

เซ็นเซอร์เวกเตอร์การหมุนของเกมคล้ายกับเซ็นเซอร์เวกเตอร์การหมุน แต่ไม่ใช้สนามแม่เหล็กโลก ดังนั้น แกน Y จึงไม่ได้ชี้ไปทางทิศเหนือ แต่ชี้ไปยังข้อมูลอ้างอิงอื่น การอ้างอิงดังกล่าวได้รับอนุญาตให้ลอยตาม ขนาดในลำดับเดียวกับเครื่องวัดการหมุนจะลอยไปรอบแกน Z

ดูรายละเอียดเกี่ยวกับวิธีตั้งค่า sensors_event_t.data[0-3] ได้ที่เซ็นเซอร์เวกเตอร์การหมุน เซ็นเซอร์นี้ไม่ได้รายงานความแม่นยำของทิศทางโดยประมาณ sensors_event_t.data[4] สงวนไว้และควรตั้งค่าเป็น 0

ในกรณีที่ดีที่สุด โทรศัพท์ที่หมุนและกลับไปยังการวางแนวเดียวกันกับโลกแห่งความเป็นจริงควรรายงานเวกเตอร์การหมุนของเกมเดียวกัน

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

แรงโน้มถ่วง

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_GRAVITY) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

เซ็นเซอร์แรงโน้มถ่วงจะรายงานทิศทางและขนาดของแรงโน้มถ่วงในพิกัดของอุปกรณ์

ระบบจะรายงานองค์ประกอบเวกเตอร์แรงโน้มถ่วงเป็น m/s^2 ในช่อง x, y และ z ของ sensors_event_t.acceleration

เมื่ออุปกรณ์ไม่มีการใช้งาน เอาต์พุตของเซ็นเซอร์แรงโน้มถ่วงควรเหมือนกับของตัวตรวจวัดความเร่ง ในโลก ขนาดประมาณ 9.8 m/s^2

หากอุปกรณ์มีเครื่องวัดการหมุน เซ็นเซอร์แรงโน้มถ่วงต้องใช้เครื่องวัดการหมุนและตัวตรวจวัดความเร่งเป็นอินพุต

หากอุปกรณ์ไม่มีเครื่องวัดการหมุน เซ็นเซอร์แรงโน้มถ่วงต้องใช้ตัวตรวจวัดความเร่งและแม่เหล็กเป็นอินพุต

เวกเตอร์การหมุนของสนามแม่เหล็กโลก

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

โหมดการรายงาน: ต่อเนื่อง

พลังงานต่ำ

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) แสดงผลเซ็นเซอร์ที่ไม่ปลุก

เวกเตอร์การหมุนของสนามแม่เหล็กโลกคล้ายกับเซ็นเซอร์เวกเตอร์การหมุน แต่จะอาศัยแม่เหล็กไฟฟ้าและไม่ใช้ไจโรสโคป

เซ็นเซอร์นี้ต้องอิงตามแม่เหล็กไฟฟ้า ติดตั้งใช้งานโดยใช้ไจโรสโคปไม่ได้ และเซ็นเซอร์นี้ใช้อินพุตจากไจโรสโคปไม่ได้

ดูรายละเอียดเกี่ยวกับวิธีตั้งค่า sensors_event_t.data[0-4] ได้ที่เซ็นเซอร์เวกเตอร์การหมุน

ข้อผิดพลาดของทิศทางต้องน้อยกว่าความแม่นยำโดยประมาณ (sensors_event_t.data[4]) 95% ของเวลา เช่นเดียวกับเซ็นเซอร์เวกเตอร์การหมุน

เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ จึงต้องติดตั้งในฮาร์ดแวร์

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

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_ORIENTATION) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

หมายเหตุ: นี่เป็นเซ็นเซอร์ประเภทเก่าที่เลิกใช้งานแล้วใน Android SDK เนื่องจากมีการแทนที่ด้วยเซ็นเซอร์เวกเตอร์การหมุน ซึ่งกำหนดให้ชัดเจนยิ่งขึ้น ใช้เซ็นเซอร์เวกเตอร์การหมุนแทนเซ็นเซอร์การวางแนวเมื่อเป็นไปได้

เซ็นเซอร์การวางแนวจะรายงานลักษณะการวางแนวของอุปกรณ์ การวัดจะรายงานเป็นองศาในช่อง x, y และ z ของ sensors_event_t.orientation ดังนี้

  • sensors_event_t.orientation.x: มุมทิศ นั่นคือมุมระหว่างทิศเหนือแม่เหล็กกับแกน Y รอบแกน Z (0<=azimuth<360) 0=เหนือ 90=ตะวันออก 180=ใต้ 270=ตะวันตก
  • sensors_event_t.orientation.y: การเอียง การหมุนรอบแกน X (-180<=pitch<=180) โดยมีค่าเป็นบวกเมื่อแกน Z ขยับเข้าหาแกน Y
  • sensors_event_t.orientation.z: การหมุนรอบแกน Y (-90<=roll<=90), มีค่าเป็นบวกเมื่อแกน X เคลื่อนที่เข้าหาแกน Z

โปรดทราบว่ามุมการกลิ้งเป็นค่าบวกตามเข็มนาฬิกาเนื่องจากเหตุผลทางประวัติศาสตร์ (ในทางคณิตศาสตร์ ค่าควรเป็นบวกในทิศทางทวนเข็มนาฬิกา):

ภาพการวางแนวซึ่งสัมพันธ์กับอุปกรณ์

รูปที่ 3 การวางแนวที่สัมพันธ์กับอุปกรณ์

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

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

เซ็นเซอร์ที่ไม่ได้ปรับเทียบ

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

ตัวตรวจวัดความเร่งไม่ได้ปรับเทียบ

เซ็นเซอร์ร่างกายพื้นฐาน: ตัวตรวจวัดความเร่ง

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) แสดงผลเซ็นเซอร์ที่ไม่ปลุก

เซ็นเซอร์ตรวจวัดความเร่งที่ไม่ได้ปรับเทียบจะรายงานความเร่งของอุปกรณ์ตามแกนเซ็นเซอร์ทั้ง 3 แกนโดยไม่มีการแก้ไขความเบี่ยงเบน (ความเบี่ยงเบนของโรงงานและการชดเชยอุณหภูมิจะมีผลกับการวัดที่ไม่ได้ปรับเทียบ) พร้อมกับค่าประมาณความเบี่ยงเบน ค่าทั้งหมดอยู่ในหน่วย SI (m/s^2) และมีการรายงานในช่องของ sensors_event_t.uncalibrated_accelerometer:

  • x_uncalib: การเร่ง (ไม่มีการชดเชยความเบี่ยงเบน) ตามแกน X
  • y_uncalib: การเร่ง (โดยไม่มีการชดเชยการให้น้ำหนักพิเศษ) ตามแกน Y
  • z_uncalib: การเร่ง (ไม่มีการชดเชยความเบี่ยงเบน) ตามแกน Z
  • x_bias: ความเบี่ยงเบนโดยประมาณตามแกน X
  • y_bias: อคติโดยประมาณตามแกน Y
  • z_bias: ความเบี่ยงเบนโดยประมาณตามแกน Z

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

เซ็นเซอร์ทางกายภาพพื้นฐาน: ไจโรสโคป

โหมดการรายงาน: ต่อเนื่อง

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 หากการติดตั้งใช้งานไม่สามารถประมาณการเลื่อน ก็ไม่ต้องใช้เซ็นเซอร์นี้

หากมีเซ็นเซอร์นี้ เซ็นเซอร์ Gyroscope ที่เกี่ยวข้องก็ต้องมีด้วย และเซ็นเซอร์ทั้ง 2 ตัวต้องใช้ค่า sensor_t.name และ sensor_t.vendor เดียวกัน

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

เซ็นเซอร์ทางกายภาพพื้นฐาน: มาตรแม่เหล็ก

โหมดการรายงาน: ต่อเนื่อง

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 เดียวกัน

มุมบานพับ

โหมดการรายงาน: เมื่อเปลี่ยนแปลง

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) แสดงเซ็นเซอร์การปลุก

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

เซ็นเซอร์คอมโพสิตของการโต้ตอบ

เซ็นเซอร์บางตัวใช้เพื่อตรวจจับการโต้ตอบกับผู้ใช้เป็นหลัก เราไม่ได้กำหนดว่าต้องติดตั้งเซ็นเซอร์เหล่านั้นอย่างไร แต่เซ็นเซอร์ต้องใช้พลังงานต่ำ ผู้ผลิตอุปกรณ์เป็นผู้รับผิดชอบในการตรวจสอบคุณภาพในแง่ประสบการณ์ของผู้ใช้

ท่าทางสัมผัสสำหรับปลุก

เซ็นเซอร์ทางกายภาพที่สำคัญ: ไม่ระบุ (ใช้พลังงานต่ำ)

โหมดการรายงาน: แบบครั้งเดียว

พลังงานต่ำ

ใช้เซ็นเซอร์นี้เฉพาะเวอร์ชันที่ปลุกเท่านั้น

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) แสดงเซ็นเซอร์การปลุกระบบ

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

เซ็นเซอร์นี้ต้องใช้พลังงานต่ำ เนื่องจากมีแนวโน้มที่จะเปิดใช้งานทุกวันตลอด 24 ชั่วโมง

เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1 ใน sensors_event_t.data[0]

ท่าทางสัมผัสเพื่อรับสาย

เซ็นเซอร์ทางกายภาพที่สำคัญ: ไม่ระบุ (ใช้พลังงานต่ำ)

โหมดการรายงาน: แบบครั้งเดียว

พลังงานต่ำ

ใช้เฉพาะเซ็นเซอร์เวอร์ชันปลุกเท่านั้น

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) แสดงเซ็นเซอร์การปลุกระบบ

เซ็นเซอร์ท่าทางเพื่อหยิบอุปกรณ์จะทริกเกอร์เมื่อมีการหยิบอุปกรณ์ขึ้น ไม่ว่าจะวางไว้ที่ใดก่อนหน้านี้ (โต๊ะ กระเป๋ากางเกง กระเป๋า)

เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1 ใน sensors_event_t.data[0]

ท่าทางสัมผัสเหลือบมอง

เซ็นเซอร์ทางกายภาพที่เกี่ยวข้อง: ไม่ระบุ (อุปกรณ์ที่ใช้พลังงานต่ำ)

โหมดการรายงาน: แบบครั้งเดียว

พลังงานต่ำ

ใช้เฉพาะเวอร์ชันปลุกระบบของเซ็นเซอร์นี้

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) แสดงผลเซ็นเซอร์ปลุก

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

เซ็นเซอร์นี้ต้องใช้พลังงานต่ำเนื่องจากมีแนวโน้มที่จะเปิดใช้งานทุกวันตลอด 24 ชั่วโมง เหตุการณ์เซ็นเซอร์แต่ละรายการรายงาน 1 ใน sensors_event_t.data[0]

เซ็นเซอร์ IMU แบบจำกัดแกน

เซ็นเซอร์ IMU แบบแกนจำกัดที่พร้อมใช้งานใน Android 13 เป็นเซ็นเซอร์ที่รองรับกรณีการใช้งานที่ไม่มีทั้ง 3 แกน (x, y, z) ประเภท IMU มาตรฐานใน Android (เช่น SENSOR_TYPE_ACCELEROMETER และ SENSOR_TYPE_GYROSCOPE) ถือว่ารองรับทั้ง 3 แกน อย่างไรก็ตาม อุปกรณ์และรูปแบบบางประเภทอาจไม่รองรับเครื่องวัดความเร่ง 3 แกนและไจโรสโคป 3 แกน

แกนที่จำกัดของมาตรความเร่ง

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) แสดงผลเซ็นเซอร์ที่ไม่ใช่การปลุกระบบ

เซ็นเซอร์ตรวจจับแกนจำกัดของตัวตรวจวัดความเร่งเทียบเท่ากับ TYPE_ACCELEROMETER แต่รองรับกรณีที่ไม่รองรับ 1 หรือ 2 แกน

ค่าเหตุการณ์เซ็นเซอร์ 3 รายการล่าสุดที่เซ็นเซอร์รายงานแสดงถึงว่าระบบรองรับค่าความเร่งสำหรับแกน x, y และ z หรือไม่ ค่า 1.0 บ่งชี้ว่าระบบรองรับแกน ส่วนค่า 0 ระบุว่าระบบไม่รองรับแกน ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับ ณ เวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงระหว่างรันไทม์

ผู้ผลิตอุปกรณ์ต้องตั้งค่าการเร่งความเร็วสำหรับแกนที่ไม่ได้ใช้เป็น 0 แทนที่จะมีค่าที่ไม่ระบุ

แกนที่จำกัดของไจโรสโคป

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) แสดงผลเซ็นเซอร์ที่ไม่ปลุก

เซ็นเซอร์ตรวจจับแกนจำกัดของเครื่องวัดการหมุนเทียบเท่ากับ TYPE_GYROSCOPE แต่รองรับกรณีที่ไม่รองรับแกน 1 หรือ 2 แกน

ค่าเหตุการณ์เซ็นเซอร์ 3 รายการล่าสุดที่เซ็นเซอร์รายงานแสดงให้เห็นว่าระบบรองรับค่าความเร็วเชิงมุมสำหรับแกน x, y และ z หรือไม่ ค่า 1.0 บ่งบอกว่าระบบรองรับแกนนั้น และค่า 0 บ่งบอกว่าระบบไม่รองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับ ณ เวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงระหว่างรันไทม์

ผู้ผลิตอุปกรณ์ต้องตั้งค่าความเร็วเชิงมุมสำหรับแกนที่ไม่ได้ใช้เป็น 0

ไม่ได้ปรับเทียบแกนที่มีข้อจำกัดของตัวตรวจวัดความเร่ง

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) แสดงผลเซ็นเซอร์ที่ไม่ปลุก

เซ็นเซอร์ของตัวตรวจวัดความเร่งแบบจำกัดที่ไม่มีการปรับเทียบเทียบเท่ากับ TYPE_ACCELEROMETER_UNCALIBRATED แต่รองรับกรณีที่ไม่รองรับ 1 หรือ 2 แกน

ค่าเหตุการณ์เซ็นเซอร์ 3 รายการล่าสุดที่เซ็นเซอร์รายงานแสดงถึงว่าระบบรองรับค่าความเร่งและค่าความเบี่ยงเบนสำหรับแกน x, y และ z หรือไม่ ค่า 1.0 บ่งบอกว่าระบบรองรับแกนนั้น และค่า 0 บ่งบอกว่าระบบไม่รองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับ ณ เวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงระหว่างรันไทม์

ผู้ผลิตอุปกรณ์ต้องตั้งค่าการเร่งและค่าความเบี่ยงเบนสำหรับแกนที่ไม่ได้ใช้เป็น 0

ไม่ได้ปรับเทียบแกนที่จํากัดของไจโรสโคป

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

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

เซ็นเซอร์ที่ไม่ได้รับการสอบเทียบแกนจำกัดของเครื่องวัดการหมุนเทียบเท่ากับ TYPE_GYROSCOPE_UNCALIBRATED แต่รองรับกรณีที่ระบบไม่รองรับแกน 1 หรือ 2 แกน

ค่าเหตุการณ์เซ็นเซอร์ 3 รายการล่าสุดที่เซ็นเซอร์รายงานจะแสดงว่าระบบรองรับความเร็วเชิงมุมและค่าความคลาดเคลื่อนสำหรับแกน x, y และ z หรือไม่ ค่า 1.0 บ่งบอกว่าระบบรองรับแกนนั้น และค่า 0 บ่งบอกว่าระบบไม่รองรับ ผู้ผลิตอุปกรณ์จะระบุแกนที่รองรับ ณ เวลาที่สร้าง และค่าจะไม่เปลี่ยนแปลงระหว่างรันไทม์

ผู้ผลิตอุปกรณ์ต้องตั้งค่าความเร็วเชิงมุมและค่าความคลาดเคลื่อนสำหรับแกนที่ไม่ได้ใช้เป็น 0

IMU แกนจำกัดแบบคอมโพสิต

เซ็นเซอร์ที่อยู่บนอุปกรณ์: เซ็นเซอร์ตัวตรวจวัดความเร่งแบบ 3 แกน, ไจโรสโคปแบบ 3 แกน, ตัวตรวจวัดความเร่งแบบ 3 แกนที่ไม่ได้ปรับเทียบ และเซ็นเซอร์ไจโรสโคปแบบ 3 แกนที่ไม่ได้ปรับเทียบ

โหมดการรายงาน: ต่อเนื่อง

เซ็นเซอร์ IMU แบบแกนจำกัดแบบคอมโพสิตเทียบเท่ากับเซ็นเซอร์ IMU แบบแกนจำกัด แต่แทนที่จะรองรับที่ HAL เซ็นเซอร์นี้จะแปลงข้อมูลเซ็นเซอร์ 3 แกนเป็นตัวแปรแกนจำกัดที่เทียบเท่า เซ็นเซอร์คอมโพสิตเหล่านี้ใช้ได้กับอุปกรณ์ยานยนต์เท่านั้น

ตารางต่อไปนี้แสดงตัวอย่างการเปลี่ยนจากเครื่องวัดความเร่ง 3 แกนมาตรฐานเป็นเครื่องวัดความเร่งแกนจำกัดแบบผสม

ค่า SensorEvent สำหรับ SENSOR_TYPE_ACCELEROMETER ตัวอย่าง SENSOR_TYPE_ACCELEROMeter SensorEvent SensorEvent ประเภท SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES แบบคอมโพสิต
ค่า[0]

-0.065

-0.065

values[1]

0.078

0.078

values[2]

9.808

9.808

values[3]

ไม่มี

1.0

values[4]

ไม่มี

1.0

values[5]

ไม่มี

1.0

เซ็นเซอร์ยานยนต์

เซ็นเซอร์เพื่อรองรับกรณีการใช้งานยานยนต์

ส่วนหัว

เซ็นเซอร์ทางกายภาพพื้นฐาน: ชุดค่าผสมของ GPS, มาตรแม่เหล็ก, ตัวตรวจวัดความเร่ง และเครื่องวัดการหมุน

โหมดการรายงาน: ต่อเนื่อง

getDefaultSensor(SENSOR_TYPE_HEADING) แสดงผลเซ็นเซอร์ที่ไม่ใช่เซ็นเซอร์ปลุก

เซ็นเซอร์ทิศทางพร้อมใช้งานใน Android 13 โดยจะวัดทิศทางที่อุปกรณ์ชี้เทียบกับทิศเหนือจริงเป็นองศา เซ็นเซอร์ส่วนหัวมีค่า SensorEvent 2 ค่า 1 รายการสำหรับทิศทางของอุปกรณ์ที่วัดได้ และอีก 1 รายการสำหรับความถูกต้องของค่าทิศทางที่ระบุ

ค่าทิศทางที่เซ็นเซอร์นี้รายงานต้องอยู่ระหว่าง 0.0 (รวม) ถึง 360.0 (ไม่รวม) โดย 0 หมายถึงทิศเหนือ 90 หมายถึงทิศตะวันออก 180 หมายถึงทิศใต้ และ 270 หมายถึงทิศตะวันตก

ความแม่นยำของเซ็นเซอร์นี้กำหนดไว้ที่ความเชื่อมั่น 68 เปอร์เซ็นต์ ในกรณีที่การกระจายที่สำคัญเป็นค่าเกาส์เซียนปกติ ความแม่นยำจะเป็นค่าเบี่ยงเบนมาตรฐาน 1 ค่า เช่น หากเซ็นเซอร์ส่วนหัวแสดงผลค่าส่วนหัวที่ 60 องศา และค่าความแม่นยำที่ 10 องศา ก็จะมีความน่าจะเป็น 68 เปอร์เซ็นต์ที่ส่วนหัวที่แท้จริงจะอยู่ระหว่าง 50 องศาถึง 70 องศา