خذ استبيان قابلية الاستخدام لدينا لتحسين هذا الموقع.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

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

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

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

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

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

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

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

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

في تطبيقات Android Automotive ، يتم تحديد المحاور فيما يتعلق بإطار هيكل السيارة.

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

الشكل 2. نظام الإحداثيات (بالنسبة لجهاز السيارة) المستخدم بواسطة Sensor API

  • يزيد X باتجاه يمين السيارة
  • يزداد Y تجاه أنف إطار الجسم
  • يزيد Z نحو سقف إطار الجسم

يقع أصل نظام الإحداثيات في وسط المحور الخلفي للسيارة. عند النظر من الاتجاه الإيجابي للمحور ، تكون التدويرات الإيجابية في عكس اتجاه عقارب الساعة. وبالتالي ، عندما تقوم السيارة بالانعطاف يسارًا ، فمن المتوقع أن يكون معدل الدوران للمحور z قيمة موجبة.

مجسات القاعدة

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

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

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

على سبيل المثال ، قد تختلف خصائص المستشعر الأساسي عن خصائص المستشعر المادي الأساسي في حالات الاستخدام التالية:

  • شريحة جيروسكوب مصنفة بمدى تحيز 1 درجة / ثانية.
    • بعد معايرة المصنع ، يتم تطبيق تعويض درجة الحرارة وتعويض التحيز ، سيتم تقليل التحيز الفعلي لمستشعر Android ، وقد يصل إلى نقطة يكون فيها التحيز أقل من 0.01 درجة / ثانية.
    • في هذه الحالة ، نقول أن مستشعر Android به انحياز أقل من 0.01 درجة / ثانية ، على الرغم من أن ورقة بيانات المستشعر الأساسي ذكرت 1 درجة / ثانية.
  • بارومتر باستهلاك طاقة 100 uW.
    • نظرًا لأن البيانات التي تم إنشاؤها يجب نقلها من الشريحة إلى شركة نفط الجنوب ، فقد تكون تكلفة الطاقة الفعلية لجمع البيانات من مستشعر مقياس الضغط الجوي أعلى بكثير ، على سبيل المثال 1000 uW.
    • في هذه الحالة ، نقول أن مستشعر Android لديه استهلاك طاقة يبلغ 1000 uW ، على الرغم من أن استهلاك الطاقة المقاس عند قياسات شريحة البارومتر هو 100uW.
  • مقياس المغناطيسية الذي يستهلك 100uW عند معايرته ، ولكنه يستهلك أكثر عند المعايرة.
    • قد يتطلب روتين المعايرة الخاص به تنشيط الجيروسكوب ، واستهلاك 5000 uW ، وتشغيل بعض الخوارزمية ، مما يكلف 900 uW أخرى.
    • في هذه الحالة ، نقول أن الحد الأقصى لاستهلاك الطاقة لمستشعر (مقياس المغناطيسية) Android هو 6000 uW.
    • في هذه الحالة ، يكون متوسط ​​استهلاك الطاقة هو المقياس الأكثر فائدة ، وهو ما يتم الإبلاغ عنه في الخصائص الثابتة للمستشعر من خلال HAL.

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

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

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) غير 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_AMBIENT_TEMPERATURE)

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

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

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

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) غير 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 من sensors_event_t.magnetic.status خلال 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) غير getDefaultSensor(SENSOR_TYPE_HEART_RATE)

يقوم مستشعر معدل ضربات القلب بالإبلاغ عن معدل ضربات القلب الحالي للشخص الذي يلمس الجهاز.

يتم الإبلاغ عن معدل ضربات القلب الحالي في نبضة في الدقيقة في 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 دائمًا SENSOR_PERMISSION_BODY_SENSORS .

ضوء

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

getDefaultSensor(SENSOR_TYPE_LIGHT) بدون تنبيه

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

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

القرب

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

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

getDefaultSensor(SENSOR_TYPE_PROXIMITY) أداة استشعار getDefaultSensor(SENSOR_TYPE_PROXIMITY)

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

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

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

الضغط

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

getDefaultSensor(SENSOR_TYPE_PRESSURE) غير getDefaultSensor(SENSOR_TYPE_PRESSURE)

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

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

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

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

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

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

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) غير getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY)

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

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

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

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

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

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

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

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

موقف سلوك

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

مستمر

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

موقف سلوك

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

مستمر

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

التفاعل

غير معرف

ضربة واحدة

الجاذبية

موقف سلوك

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

مستمر

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

غير معايرة

جيروسكوب

مستمر

تسارع خطي

نشاط

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

مستمر

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

غير معاير

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

مستمر

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

موقف سلوك

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

مستمر

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

التفاعل

غير معرف

ضربة واحدة

ناقل الدوران

موقف سلوك

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

مستمر

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

نشاط

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

ضربة واحدة

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

نشاط

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

على التغيير

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

نشاط

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

مميز

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

نشاط

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

مميز

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

التفاعل

غير معرف

ضربة واحدة

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

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

تسارع خطي

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

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

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) غير 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) غير getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)

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

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

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

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

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

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

عداد الخطوة

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

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

طاقة منخفضة

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) غير 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) غير 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 هي 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) بإرجاع getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) غير تنشيط

يشبه متجه الدوران المغنطيسي الأرضي مستشعر ناقل الدوران ولكن باستخدام مقياس مغناطيسي ولا يوجد جيروسكوب.

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

راجع مستشعر متجه الدوران للحصول على تفاصيل حول كيفية تعيين sensors_event_t.data[0-4] .

تمامًا مثل مستشعر متجه الدوران ، يجب أن يكون خطأ العنوان أقل من الدقة المقدرة ( sensors_event_t.data[4] ) 95٪ من الوقت.

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

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

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

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

getDefaultSensor(SENSOR_TYPE_ORIENTATION) غير 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 sensors_event_t.orientation.y -180<=pitch<=180 ) ، مع القيم الموجبة عندما يتحرك المحور Z باتجاه المحور Y.
  • sensors_event_t.orientation.z : الدوران ، الدوران حول المحور Y ( -90<=roll<=90 ) ، بقيم موجبة عندما يتحرك المحور X نحو المحور Z.

يرجى ملاحظة ، لأسباب تاريخية أن زاوية الدوران موجبة في اتجاه عقارب الساعة. (من الناحية الحسابية ، يجب أن تكون موجبة في اتجاه عكس عقارب الساعة):

تصوير الاتجاه بالنسبة للجهاز

الشكل 3. الاتجاه بالنسبة للجهاز

يختلف هذا التعريف عن الانحراف والخطوة واللفافة المستخدمة في الطيران حيث يكون المحور X على طول الجانب الطويل من الطائرة (من الذيل إلى الأنف).

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

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

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

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

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

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

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) غير 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) بإرجاع 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.name و sensor_t.vendor .

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

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

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

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) أداة استشعار getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)

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

حساسات التفاعل المركبة

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

إيقاظ إيماءة

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

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