أنواع أجهزة الاستشعار

يصف هذا القسم محاور المستشعر ، وأجهزة الاستشعار الأساسية ، وأجهزة الاستشعار المركبة (النشاط ، والموقف ، وغير المعايرة ، والتفاعل).

محاور الاستشعار

يتم التعبير عن قيم أحداث المستشعر من العديد من أجهزة الاستشعار في إطار محدد ثابت بالنسبة للجهاز.

محاور الجهاز المحمول

تعد واجهة برمجة تطبيقات المستشعر ذات صلة فقط بالاتجاه الطبيعي للشاشة (لا يتم تبديل المحاور عندما يتغير اتجاه شاشة الجهاز.

تنسيق نظام استشعار API للأجهزة المحمولة

الشكل 1. نظام تنسيق (متعلق بجهاز محمول) يستخدمه Sensor API

محاور السيارات

في تطبيقات Android Automotive ، يتم تحديد المحاور فيما يتعلق بإطار هيكل السيارة. أصل الإطار المرجعي للسيارة هو مركز المحور الخلفي. يتم توجيه الإطار المرجعي للسيارة بحيث:

  • يشير المحور X إلى اليمين وهو على مستوى أفقي ، عموديًا على مستوى تناظر المركبة.
  • يشير المحور ص إلى الأمام وهو على مستوى أفقي.
تنسيق نظام استشعار 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 ، فقد تكون تكلفة الطاقة الفعلية لجمع البيانات من مستشعر مقياس الضغط الجوي أعلى بكثير ، على سبيل المثال 1000 uW.
    • في هذه الحالة ، نقول أن مستشعر Android لديه استهلاك طاقة يبلغ 1000 uW ، على الرغم من أن استهلاك الطاقة المقاس عند قياسات شريحة البارومتر هو 100uW.
  • مقياس مغناطيسي يستهلك 100uW عند معايرته ، ولكنه يستهلك أكثر عند المعايرة.
    • قد يتطلب روتين المعايرة الخاص به تنشيط الجيروسكوب ، واستهلاك 5000 uW ، وتشغيل بعض الخوارزمية ، مما يكلف 900 uW أخرى.
    • في هذه الحالة ، نقول أن الحد الأقصى لاستهلاك الطاقة لمستشعر (مقياس المغناطيسية) Android هو 6000 uW.
    • في هذه الحالة ، يعد متوسط ​​استهلاك الطاقة هو المقياس الأكثر فائدة ، وهو ما يتم الإبلاغ عنه في الخصائص الثابتة للمستشعر من خلال HAL.

مقياس التسارع

وضع التقارير: مستمر

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) غير نشط

يقوم مستشعر مقياس التسارع بالإبلاغ عن تسارع الجهاز على طول محاور الاستشعار الثلاثة. يتضمن التسارع المقاس كلاً من التسارع المادي (تغير السرعة) والجاذبية. يتم الإبلاغ عن القياس في مجالات x و y و z الخاصة بالمستشعرات_event_t.aceleration.

جميع القيم بوحدات SI (م / ث ^ 2) وتقيس تسارع الجهاز مطروحًا منه قوة الجاذبية على طول محاور الاستشعار الثلاثة.

فيما يلي بعض الأمثلة:

  • يجب أن يكون معيار (x ، y ، z) قريبًا من الصفر في حالة السقوط الحر.
  • عندما يكون الجهاز مسطحًا على طاولة ويتم دفعه على جانبه الأيسر نحو اليمين ، تكون قيمة التسارع x موجبة.
  • عندما يكون الجهاز مسطحًا على منضدة ، تكون قيمة التسارع على طول z +9.81 alo ، وهو ما يتوافق مع تسارع الجهاز (0 m / s ^ 2) مطروحًا منه قوة الجاذبية (-9.81 m / s ^ 2).
  • عندما يكون الجهاز مسطحًا على طاولة ويتم دفعه نحو السماء ، تكون قيمة التسارع أكبر من +9.81 ، وهو ما يتوافق مع تسارع الجهاز (+ A م / ث ^ 2) مطروحًا منه قوة الجاذبية (-9.81 م) / ق ^ 2).

يتم معايرة القراءات باستخدام:

  • تعويض درجة الحرارة
  • معايرة التحيز عبر الإنترنت
  • معايرة الميزان عبر الإنترنت

يجب تحديث معايرة التحيز والمقياس فقط أثناء إلغاء تنشيط المستشعر ، وذلك لتجنب التسبب في حدوث قفزات في القيم أثناء التدفق.

يوضح مقياس التسارع أيضًا مدى الدقة التي يتوقع أن تكون قراءاته من خلالها من خلال sensors_event_t.acceleration.status . راجع SensorManager SENSOR_STATUS_* لمزيد من المعلومات حول القيم الممكنة لهذا الحقل.

درجة الحرارة المحيطة

وضع التقارير: عند التغيير

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) غير نشط

يوفر هذا المستشعر درجة حرارة الغرفة (الغرفة) بالدرجات المئوية.

مستشعر المجال المغناطيسي

وضع التقارير: مستمر

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) غير نشط

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

يقوم مستشعر المجال المغناطيسي (المعروف أيضًا باسم مقياس المغناطيسية) بالإبلاغ عن المجال المغناطيسي المحيط ، كما تم قياسه على طول محاور المستشعر الثلاثة.

يتم الإبلاغ عن القياس في الحقول x و y و z من sensors_event_t.magnetic وجميع القيم في micro-Tesla (uT).

يُبلغ مقياس المغنطيسية أيضًا عن مدى الدقة التي يتوقع أن تكون قراءاته من خلالها من خلال sensors_event_t.magnetic.status . راجع SensorManager SENSOR_STATUS_* لمزيد من المعلومات حول القيم الممكنة لهذا الحقل.

يتم معايرة القراءات باستخدام:

  • تعويض درجة الحرارة
  • معايرة الحديد اللين في المصنع (أو عبر الإنترنت)
  • معايرة الحديد الصلب عبر الإنترنت

جيروسكوب

وضع التقارير: مستمر

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) بإرجاع مستشعر غير تنشيط

يقوم مستشعر الجيروسكوب بالإبلاغ عن معدل دوران الجهاز حول محاور الاستشعار الثلاثة.

يكون الدوران موجبًا في اتجاه عكس عقارب الساعة (القاعدة اليمنى). أي أن المراقب الذي ينظر من بعض المواقع الإيجابية على المحور x أو y أو z في جهاز موضوع على الأصل سيبلغ عن دوران إيجابي إذا بدا أن الجهاز يدور في عكس اتجاه عقارب الساعة. لاحظ أن هذا هو التعريف الرياضي القياسي للدوران الإيجابي ولا يتفق مع تعريف الفضاء الجوي للفة.

يتم الإبلاغ عن القياس في الحقول x و y و z من sensors_event_t.gyro وجميع القيم بالراديان في الثانية (راديان / ثانية).

يتم معايرة القراءات باستخدام:

  • تعويض درجة الحرارة
  • تعويض مقياس المصنع (أو عبر الإنترنت)
  • معايرة التحيز عبر الإنترنت (لإزالة الانجراف)

يوضح الجيروسكوب أيضًا مدى الدقة التي يتوقع أن تكون قراءاته فيها من خلال sensors_event_t.gyro.status . راجع SensorManager SENSOR_STATUS_* لمزيد من المعلومات حول القيم الممكنة لهذا الحقل.

لا يمكن محاكاة الجيروسكوب بناءً على مقاييس المغناطيسية ومقاييس التسارع ، لأن هذا قد يتسبب في تقليل التناسق والاستجابة المحلية. يجب أن يعتمد على شريحة جيروسكوب عادية.

معدل ضربات القلب

وضع التقارير: عند التغيير

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_BODY_SENSORS .

خفيفة

وضع التقارير: عند التغيير

getDefaultSensor(SENSOR_TYPE_LIGHT) غير نشط

يقوم مستشعر الضوء بالإبلاغ عن الإضاءة الحالية بوحدات SI lux.

يتم الإبلاغ عن القياس في sensors_event_t.light .

القرب

وضع التقارير: عند التغيير

عادة ما يتم تعريفه على أنه جهاز استشعار للاستيقاظ

getDefaultSensor(SENSOR_TYPE_PROXIMITY) تنبيه

يحدد مستشعر القرب المسافة من المستشعر إلى أقرب سطح مرئي.

حتى Android 4.4 ، كانت مستشعرات التقارب دائمًا مستشعرات تنبيه ، تستيقظ شركة نفط الجنوب عند اكتشاف تغيير في القرب. بعد Android 4.4 ، ننصح بتنفيذ إصدار التنبيه لهذا المستشعر أولاً ، لأنه الإصدار المستخدم لتشغيل وإيقاف تشغيل الشاشة أثناء إجراء المكالمات الهاتفية.

يتم الإبلاغ عن القياس بالسنتيمتر في sensors_event_t.distance . لاحظ أن بعض مستشعرات التقارب تدعم فقط القياس الثنائي "القريب" أو "البعيد". في هذه الحالة ، يُبلغ المستشعر عن قيمة sensor_t.maxRange الخاصة به في الحالة "far" وقيمة أقل من sensor_t.maxRange في الحالة "near".

ضغط

وضع التقارير: مستمر

getDefaultSensor(SENSOR_TYPE_PRESSURE) غير نشط

يُبلغ مستشعر الضغط (المعروف أيضًا باسم البارومتر) عن الضغط الجوي في هيكتوباسكال (hPa).

يتم معايرة القراءات باستخدام

  • تعويض درجة الحرارة
  • معايرة تحيز المصنع
  • معايرة مقياس المصنع

غالبًا ما يستخدم البارومتر لتقدير تغيرات الارتفاع. لتقدير الارتفاع المطلق ، يجب استخدام ضغط مستوى سطح البحر (يتغير حسب الطقس) كمرجع.

الرطوبة النسبية

وضع التقارير: عند التغيير

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) غير نشط

يقيس مستشعر الرطوبة النسبية رطوبة الهواء المحيط النسبية ويرجع قيمة بالنسبة المئوية.

أنواع أجهزة الاستشعار المركبة

ينشئ المستشعر المركب البيانات عن طريق معالجة و / أو دمج البيانات من واحد أو أكثر من أجهزة الاستشعار المادية. (يسمى أي مستشعر ليس مستشعرًا أساسيًا بالمستشعر المركب). تتضمن أمثلة المستشعرات المركبة ما يلي:

  • كاشف الخطوة والحركة المهمة ، والتي تعتمد عادةً على مقياس التسارع ، ولكن يمكن أن تستند إلى مستشعرات أخرى أيضًا ، إذا كان استهلاك الطاقة والدقة مقبولان.
  • متجه دوران اللعبة ، بناءً على مقياس التسارع والجيروسكوب.
  • جيروسكوب غير معاير ، وهو مشابه لمستشعر قاعدة الجيروسكوب ، ولكن مع الإبلاغ عن معايرة التحيز بشكل منفصل بدلاً من تصحيحها في القياس.

كما هو الحال مع المستشعرات الأساسية ، تأتي خصائص المستشعرات المركبة من خصائص بياناتها النهائية. على سبيل المثال ، من المحتمل أن يكون استهلاك الطاقة لمتجه دوران اللعبة مساويًا لمجموع استهلاك الطاقة لشريحة مقياس التسارع وشريحة الجيروسكوب والشريحة التي تعالج البيانات والحافلات التي تنقل البيانات. كمثال آخر ، يعتمد انجراف متجه دوران اللعبة على جودة خوارزمية المعايرة بقدر ما يعتمد على خصائص المستشعر الفيزيائي.

يسرد الجدول التالي أنواع أجهزة الاستشعار المركبة المتوفرة. يعتمد كل مستشعر مركب على بيانات من واحد أو أكثر من أجهزة الاستشعار المادية. تجنب اختيار أجهزة الاستشعار المادية الأساسية الأخرى لتقريب النتائج لأنها توفر تجربة مستخدم سيئة.

نوع الاستشعار فئة المستشعرات الفيزيائية الأساسية وضع التقارير

لعبة تناوب ناقلات

موقف سلوك

يجب ألا يستخدم مقياس التسارع والجيروسكوب مقياس المغناطيسية

مستمر

ناقل الدوران المغنطيسي الأرضي مستشعر منخفض الطاقة

موقف سلوك

يجب ألا يستخدم مقياس التسارع ، مقياس المغناطيسية ، الجيروسكوب

مستمر

لفتة لمحة مستشعر منخفض الطاقة

التفاعل

غير معرف

ضربة واحدة

الجاذبية

موقف سلوك

مقياس التسارع والجيروسكوب

مستمر

الجيروسكوب غير معاير

غير معاير

جيروسكوب

مستمر

تسارع خطي

نشاط

مقياس التسارع أو الجيروسكوب (إن وجد) أو مقياس المغناطيسية (إذا لم يكن الجيروسكوب موجودًا)

مستمر

المجال المغناطيسي غير معاير

غير معاير

مقياس المغناطيسية

مستمر

الاتجاه (مهمل)

موقف سلوك

مقياس التسارع ، مقياس المغناطيسية ، الجيروسكوب (إن وجد)

مستمر

التقط لفتة مستشعر منخفض الطاقة

التفاعل

غير معرف

ضربة واحدة

ناقل الدوران

موقف سلوك

مقياس التسارع ، مقياس المغناطيسية ، الجيروسكوب

مستمر

حركة كبيرة مستشعر منخفض الطاقة

نشاط

مقياس التسارع (أو آخر طالما أن الطاقة منخفضة جدًا)

ضربة واحدة

عداد الخطوة مستشعر منخفض الطاقة

نشاط

مقياس التسارع

على التغيير

كاشف الخطوة مستشعر منخفض الطاقة

نشاط

مقياس التسارع

خاص

كاشف الميل مستشعر منخفض الطاقة

نشاط

مقياس التسارع

خاص

إيقاظ إيماءة مستشعر منخفض الطاقة

التفاعل

غير معرف

ضربة واحدة

مستشعر منخفض الطاقة = مستشعر منخفض الطاقة

مجسات النشاط المركب

تسارع خطي

المستشعرات الفيزيائية الأساسية: مقياس التسارع والجيروسكوب (إن وجد) (أو مقياس المغناطيسية في حالة عدم وجود الجيروسكوب)

وضع التقارير: مستمر

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) غير نشط

يقوم مستشعر التسارع الخطي بالإبلاغ عن التسارع الخطي للجهاز في إطار المستشعر ، ولا يشمل الجاذبية.

الناتج مفاهيمي: خرج مقياس التسارع مطروحًا منه خرج مستشعر الجاذبية . تم الإبلاغ عنه في m / s ^ 2 في مجالات x و y و z الخاصة sensors_event_t.acceleration .

يجب أن تكون القراءات على جميع المحاور قريبة من 0 عندما يكون الجهاز غير متحرك.

إذا كان الجهاز يحتوي على جيروسكوب ، يجب أن يستخدم مستشعر التسارع الخطي الجيروسكوب ومقياس التسارع كمدخلات.

إذا كان الجهاز لا يحتوي على جيروسكوب ، يجب أن يستخدم مستشعر التسارع الخطي مقياس التسارع ومقياس المغناطيسية كمدخلات.

حركة كبيرة

المستشعر المادي الأساسي: مقياس التسارع (أو آخر طالما أن الطاقة منخفضة)

وضع التقارير: طلقة واحدة

طاقة منخفضة

استخدم إصدار التنبيه فقط من هذا المستشعر.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) تنبيه

يتم تشغيل كاشف حركة مهم عند اكتشاف حركة مهمة : حركة قد تؤدي إلى تغيير في موقع المستخدم.

أمثلة على هذه الحركات الهامة هي:

  • المشي أو ركوب الدراجات
  • الجلوس في سيارة متحركة أو مدرب أو قطار

أمثلة على المواقف التي لا تؤدي إلى إحداث حركة كبيرة:

  • الهاتف في الجيب والشخص لا يتحرك
  • الهاتف على منضدة والطاولة تهتز قليلاً بسبب حركة المرور القريبة أو الغسالة

على المستوى العالي ، يتم استخدام كاشف الحركة الهام لتقليل استهلاك الطاقة لتحديد الموقع. عندما تكتشف خوارزميات التوطين أن الجهاز ثابت ، يمكنها التبديل إلى وضع الطاقة المنخفضة ، حيث تعتمد على حركة كبيرة لتنبيه الجهاز عندما يقوم المستخدم بتغيير الموقع.

يجب أن يكون هذا المستشعر منخفض الطاقة. يقوم بإجراء مفاضلة لاستهلاك الطاقة والتي قد تؤدي إلى كمية صغيرة من السلبيات الزائفة. يتم ذلك لعدة أسباب:

  • الهدف من هذا المستشعر هو توفير الطاقة.
  • إن بدء حدث عندما لا يتحرك المستخدم (إيجابية كاذبة) مكلف من حيث القوة ، لذا يجب تجنبه.
  • يعد عدم تشغيل حدث عندما يتحرك المستخدم (سلبي كاذب) مقبولًا طالما لم يتم ذلك بشكل متكرر. إذا كان المستخدم يمشي لمدة 10 ثوانٍ ، فلن يُقبل عدم تشغيل حدث خلال تلك العشر ثوانٍ.

يبلغ كل حدث مستشعر 1 في sensors_event_t.data[0] .

كاشف الخطوة

المستشعر المادي الأساسي: مقياس التسارع (+ ربما الآخرين طالما أن الطاقة منخفضة)

وضع التقارير: خاص (حدث واحد لكل خطوة)

طاقة منخفضة

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) غير نشط

يقوم كاشف الخطوة بإنشاء حدث في كل مرة يتخذ فيها المستخدم خطوة.

يتوافق الطابع الزمني للحدث sensors_event_t.timestamp مع الوقت الذي اصطدمت فيه القدم بالأرض ، مما أدى إلى تباين كبير في التسارع.

بالمقارنة مع عداد الخطوة ، يجب أن يكون للكاشف الخطوة زمن انتقال أقل (أقل من ثانيتين). يكتشف كل من كاشف الخطوة وعداد الخطوات عندما يمشي المستخدم أو يركض أو يصعد السلالم. يجب ألا يتم تشغيلها عندما يركب المستخدم الدراجة أو يقودها أو في مركبات أخرى.

يجب أن يكون هذا المستشعر منخفض الطاقة. بمعنى ، إذا تعذر إجراء اكتشاف الخطوة في الأجهزة ، فلا ينبغي تعريف هذا المستشعر. على وجه الخصوص ، عندما يتم تنشيط كاشف الخطوة ولم يكن مقياس التسارع كذلك ، يجب أن تؤدي الخطوات فقط إلى حدوث مقاطعات (وليس كل قراءة لمقياس التسارع).

sampling_period_ns ليس لها أي تأثير على أجهزة الكشف عن الخطوة.

يبلغ كل حدث مستشعر 1 في sensors_event_t.data[0] .

عداد الخطوة

المستشعر المادي الأساسي: مقياس التسارع (+ ربما الآخرين طالما أن الطاقة منخفضة)

وضع التقارير: عند التغيير

طاقة منخفضة

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) غير نشط

يقوم عداد الخطوات بالإبلاغ عن عدد الخطوات التي اتخذها المستخدم منذ آخر إعادة تشغيل أثناء التنشيط.

يتم الإبلاغ عن القياس على أنه uint64_t في sensors_event_t.step_counter ويتم إعادة تعيينه إلى الصفر فقط عند إعادة تشغيل النظام.

يتم تعيين الطابع الزمني للحدث على الوقت الذي تم فيه اتخاذ الخطوة الأخيرة لهذا الحدث.

انظر نوع مستشعر كاشف الخطوة للدلالة على وقت الخطوة.

مقارنةً بكاشف الخطوة ، يمكن أن يكون لعداد الخطوات زمن انتقال أعلى (حتى 10 ثوانٍ). بفضل هذا الكمون ، يتمتع هذا المستشعر بدقة عالية ؛ يجب أن يكون عدد الخطوات بعد يوم كامل من الإجراءات في حدود 10٪ من عدد الخطوات الفعلي. يكتشف كل من كاشف الخطوة وعداد الخطوات عندما يمشي المستخدم أو يركض أو يصعد السلالم. يجب ألا يتم تشغيلها عندما يركب المستخدم الدراجة أو يقودها أو في مركبات أخرى.

يجب أن يضمن الجهاز عدم تجاوز عدد الخطوات الداخلية مطلقًا. يجب أن يكون الحد الأدنى لحجم العداد الداخلي للجهاز 16 بت. في حالة حدوث تجاوز وشيك (على الأكثر كل 2 ^ 16 خطوة) ، يمكن إيقاظ SoC حتى يتمكن السائق من إجراء الصيانة المضادة.

كما هو مذكور في التفاعل ، أثناء عمل هذا المستشعر ، يجب ألا يعطل أي مستشعرات أخرى ، على وجه الخصوص ، مقياس التسارع ، الذي قد يكون قيد الاستخدام جيدًا.

إذا كان جهاز معين لا يدعم أوضاع التشغيل هذه ، فيجب ألا يتم الإبلاغ عن نوع المستشعر هذا بواسطة HAL. وهذا يعني أنه من غير المقبول "محاكاة" هذا المستشعر في HAL.

يجب أن يكون هذا المستشعر منخفض الطاقة. بمعنى ، إذا تعذر إجراء اكتشاف الخطوة في الأجهزة ، فلا ينبغي تعريف هذا المستشعر. على وجه الخصوص ، عندما يتم تنشيط عداد الخطوات ولا يكون مقياس التسارع كذلك ، يجب أن تؤدي الخطوات فقط إلى المقاطعات (وليس بيانات مقياس التسارع).

كاشف الميل

المستشعر المادي الأساسي: مقياس التسارع (+ ربما الآخرين طالما أن الطاقة منخفضة)

وضع التقارير: خاص

طاقة منخفضة

استخدم إصدار التنبيه فقط من هذا المستشعر.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) تنبيه

يقوم كاشف الإمالة بإنشاء حدث في كل مرة يتم فيها اكتشاف حدث الإمالة.

يتم تحديد حدث الإمالة من خلال اتجاه متوسط ​​الجاذبية للنافذة لمدة ثانيتين والذي يتغير بمقدار 35 درجة على الأقل منذ التنشيط أو الحدث الأخير الذي تم إنشاؤه بواسطة المستشعر. هنا الخوارزمية:

  • reference_estimated_gravity = متوسط ​​قياسات مقياس التسارع خلال الثانية الأولى بعد التنشيط أو الجاذبية المقدرة عند إنشاء حدث الإمالة الأخير.
  • current_estimated_gravity = متوسط ​​قياسات مقياس التسارع خلال ثانيتين.
  • الزناد عند 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 من وحدة رباعية:

  • 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 هي إحداثيات شرق-شمال-لأعلى لمتجه طول الوحدة الذي يمثل محور الدوران
  • 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 م / ث ^ 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 . راجع SensorManager SENSOR_STATUS_* لمزيد من المعلومات حول القيم الممكنة لهذا الحقل.

مجسات غير معايرة

توفر المستشعرات غير المعايرة نتائج أولية وقد تتضمن بعض التحيز ولكنها تحتوي أيضًا على عدد أقل من "القفزات" من التصحيحات المطبقة من خلال المعايرة. قد تفضل بعض التطبيقات هذه النتائج غير المعايرة باعتبارها أكثر سلاسة وموثوقية. على سبيل المثال ، إذا كان أحد التطبيقات يحاول إجراء اندماج المستشعر الخاص به ، فإن إدخال المعايرة يمكن أن يؤدي في الواقع إلى تشويه النتائج.

مقياس التسارع غير معاير

المستشعر المادي الأساسي: مقياس التسارع

وضع التقارير: مستمر

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) غير نشط

يشير مستشعر التسارع غير المُعاير إلى تسارع الجهاز على طول محاور المستشعر الثلاثة دون أي تصحيح للانحياز (يتم تطبيق انحياز المصنع وتعويض درجة الحرارة على القياسات غير المُعايرة) ، جنبًا إلى جنب مع تقدير التحيز. جميع القيم في وحدات SI (م / ث ^ 2) ويتم الإبلاغ عنها في مجالات sensors_event_t.uncalibrated_accelerometer :

  • x_uncalib : تسريع (بدون تعويض التحيز) على طول المحور X.
  • y_uncalib : التسارع (بدون تعويض التحيز) على طول المحور ص
  • z_uncalib : تسريع (بدون تعويض التحيز) على طول المحور Z.
  • x_bias : التحيز المقدر على طول المحور X.
  • y_bias : التحيز المقدر على طول المحور ص
  • 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 : الانجراف المقدر حول المحور ص
  • z_bias : الانجراف المقدر حول المحور Z.

من الناحية المفاهيمية ، فإن القياس غير المعاير هو مجموع القياس المعاير وتقدير التحيز: _uncalibrated = _calibrated + _bias .

من المتوقع أن تقفز قيم x_bias و y_bias و z_bias بمجرد أن يتغير تقدير التحيز ، ويجب أن تكون مستقرة بقية الوقت.

راجع تعريف مستشعر الجيروسكوب للحصول على تفاصيل حول نظام الإحداثيات المستخدم.

يجب تطبيق معايرة المصنع وتعويض درجة الحرارة على القياسات. أيضًا ، يجب تنفيذ تقدير انحراف الجيروسكوب بحيث يمكن الإبلاغ عن تقديرات معقولة في x_bias و y_bias و z_bias . إذا لم يكن التنفيذ قادرًا على تقدير الانجراف ، فيجب عدم تنفيذ هذا المستشعر.

إذا كان هذا المستشعر موجودًا ، فيجب أن يكون مستشعر الجيروسكوب المقابل موجودًا أيضًا ويجب أن يشترك كلا sensor_t.vendor في نفس قيم sensor_t.name .

المجال المغناطيسي غير معاير

المستشعر المادي الأساسي: مقياس المغناطيسية

وضع التقارير: مستمر

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) غير تنشيط

يشير مستشعر المجال المغناطيسي غير المعاير إلى المجال المغناطيسي المحيط مع تقدير معايرة الحديد الصلب. جميع القيم في micro-Tesla (uT) ويتم الإبلاغ عنها في مجالات sensors_event_t.uncalibrated_magnetic :

  • x_uncalib : مجال مغناطيسي (بدون تعويض الحديد الصلب) على طول المحور X.
  • y_uncalib : مجال مغناطيسي (بدون تعويض الحديد الصلب) على طول المحور ص
  • z_uncalib : مجال مغناطيسي (بدون تعويض الحديد الصلب) على طول المحور Z.
  • x_bias : تقدير انحياز الحديد الصلب على طول المحور X.
  • y_bias : تقدير انحياز الحديد الصلب على طول المحور ص
  • z_bias : تقدير انحياز الحديد الصلب على طول المحور Z.

من الناحية المفاهيمية ، فإن القياس غير المعاير هو مجموع القياس المعاير وتقدير التحيز: _uncalibrated = _calibrated + _bias .

يسمح مقياس المغناطيسية غير المعاير لخوارزميات المستوى الأعلى بالتعامل مع تقدير الحديد الصلب السيئ. من المتوقع أن تقفز قيم x_bias و y_bias و z_bias بمجرد أن يتغير تقدير قيمة الحديد الصلب ، ويجب أن تكون مستقرة بقية الوقت.

يجب تطبيق معايرة الحديد اللين وتعويض درجة الحرارة على القياسات. أيضًا ، يجب تنفيذ تقدير الحديد الصلب بحيث يمكن الإبلاغ عن تقديرات معقولة في x_bias و y_bias و z_bias . إذا لم يكن التنفيذ قادرًا على تقدير التحيز ، فيجب عدم تنفيذ هذا المستشعر.

إذا كان هذا المستشعر موجودًا ، فيجب أن يكون مستشعر المجال المغناطيسي المقابل موجودًا ويجب أن sensor_t.name كلا sensor_t.vendor في قيم المستشعرات.

زاوية المفصلة

وضع التقارير: عند التغيير

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) أداة استشعار التنبيه

يقيس مستشعر زاوية المفصلة الزاوية ، بالدرجات ، بين جزأين متكاملين من الجهاز. من المتوقع أن تؤدي حركة المفصلة التي يتم قياسها بواسطة هذا النوع من المستشعرات إلى تغيير الطرق التي يمكن للمستخدم من خلالها التفاعل مع الجهاز ، على سبيل المثال ، عن طريق فتح أو الكشف عن شاشة.

مجسات التفاعل المركب

تستخدم بعض المستشعرات في الغالب لاكتشاف التفاعلات مع المستخدم. We don't define how those sensors must be implemented, but they must be low power and it's the responsibility of the device manufacturer to verify their quality in terms of user experience.

Wake up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) returns a wake-up sensor

A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7.

Each sensor event reports 1 in sensors_event_t.data[0] .

Pick up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) returns a wake-up sensor

A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).

Each sensor event reports 1 in sensors_event_t.data[0] .

Glance gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) returns a wake-up sensor

A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1 in sensors_event_t.data[0] .

Limited axes IMU sensors

Available from Android 13, limited axes IMU sensors are sensors that support use cases where not all three axes (x, y, z) are available. Standard IMU types in Android (such as SENSOR_TYPE_ACCELEROMETER and SENSOR_TYPE_GYROSCOPE ) assume that all three axes are supported. However, not all form factors and devices support 3-axis accelerometers and 3-axis gyroscopes.

Accelerometer limited axes

Underlying physical sensors: Accelerometer

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) returns a non-wake-up sensor

An accelerometer limited axes sensor is equivalent to TYPE_ACCELEROMETER but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the acceleration value for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the acceleration values for unused axes to 0 , instead of having undefined values.

Gyroscope limited axes

Underlying physical sensors: Gyroscope

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) returns a non-wake-up sensor

A gyroscope limited axes sensor is equivalent to TYPE_GYROSCOPE but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the angular speed value for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the angular speed values for unused axes to 0 .

Accelerometer limited axes uncalibrated

Underlying physical sensors: Accelerometer

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) returns a non-wake-up sensor

An accelerometer limited axes uncalibrated sensor is equivalent to TYPE_ACCELEROMETER_UNCALIBRATED but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the acceleration and bias values for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the acceleration and bias values for unused axes to 0 .

Gyroscope limited axes uncalibrated

Underlying physical sensors: Gyroscope

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) returns a non-wake-up sensor

A gyroscope limited axes uncalibrated sensor is equivalent to TYPE_GYROSCOPE_UNCALIBRATED but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the angular speed and drift values for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the angular speed and drift values for unused axes to 0 .

Composite limited axes IMU

Underlying physical sensors: Any combination of 3-axis accelerometer, 3-axis gyroscope, 3-axis accelerometer uncalibrated, and 3-axis gyroscope uncalibrated sensors.

Reporting-mode: Continuous

A composite limited axes IMU sensor is equivalent to a limited axes IMU sensor but instead of being supported at the HAL, it converts the 3-axis sensor data into the equivalent limited axes variants. These composite sensors are only enabled for automotive devices.

The following table shows an example conversion from a standard 3-axis accelerometer to a composite limited axes accelerometer.

SensorEvent Values for SENSOR_TYPE_ACCELEROMETER Example 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]

N/A

1.0

values[4]

N/A

1.0

values[5]

N/A

1.0

Automotive sensors

Sensors to support automotive use cases.

Heading

Underlying physical sensors: Any combination of GPS, magnetometer, accelerometer, and gyroscope.

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_HEADING) returns a non-wake-up sensor

Available from Android 13, a heading sensor measures the direction in which the device is pointing relative to true north in degrees. The heading sensor includes two SensorEvent values. One for the measured device heading and one for the accuracy of the provided heading value.

Heading values reported by this sensor must be between 0.0 (inclusive) and 360.0 (exclusive), with 0 indicating north, 90 east, 180 south, and 270 west.

Accuracy for this sensor is defined at 68 percent confidence. In the case where the underlying distribution is Gaussian normal, the accuracy is one standard deviation. For example, if the heading sensor returns a heading value of 60 degrees and an accuracy value of 10 degrees, there's a 68 percent probability of the true heading being between 50 degrees and 70 degrees.