مجموعة أدوات الاستشعار

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

الطبقات ومالكو حزمة أدوات الاستشعار في Android

الشكل 1: طبقات مجموعة أجهزة استشعار Android ومالكوها المعنيّون

SDK

تصل التطبيقات إلى أجهزة الاستشعار من خلال Sensors SDK API (حزمة تطوير البرامج). تحتوي حزمة تطوير البرامج على دوال لسرد أجهزة الاستشعار المتاحة وللتسجيل في أحد أجهزة الاستشعار.

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

  • على سبيل المثال، قد يسجّل أحد التطبيقات في مقياس التسارع التلقائي، ويطلب الأحداث بمعدّل 100 هرتز، ويسمح بالإبلاغ عن الأحداث مع وقت استجابة يبلغ ثانية واحدة.
  • سيتلقّى التطبيق الأحداث من مقياس التسارع بمعدّل 100 هرتز على الأقل، وقد يتم تأخيرها لمدة تصل إلى ثانية واحدة.

يمكنك الاطّلاع على مستندات المطوّرين لمزيد من المعلومات حول حزمة تطوير البرامج.

Framework

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

  • عندما يسجّل تطبيق أول في أحد أجهزة الاستشعار، يرسل إطار العمل طلبًا إلى طبقة تجريد الأجهزة (HAL) لتفعيل أداة الاستشعار.
  • عندما تسجّل تطبيقات إضافية في جهاز الاستشعار نفسه، يأخذ الإطار في الاعتبار متطلبات كل تطبيق ويرسل المَعلمات المطلوبة المعدَّلة إلى طبقة HAL.
    • سيكون معدّل أخذ العيّنات هو الحد الأقصى لمعدّلات أخذ العيّنات المطلوبة، ما يعني أنّ بعض التطبيقات ستتلقّى الأحداث بمعدّل أعلى من المعدّل الذي طلبته.
    • سيكون الحد الأقصى لوقت الاستجابة للإبلاغ هو الحد الأدنى من الأوقات المطلوبة. إذا طلب أحد التطبيقات جهاز استشعار واحدًا بحد أقصى لوقت الاستجابة للإبلاغ يبلغ 0، ستتلقّى جميع التطبيقات الأحداث من جهاز الاستشعار هذا في الوضع المستمر حتى إذا طلب بعضها جهاز الاستشعار بحد أقصى لوقت الاستجابة للإبلاغ غير صفري. يمكنك الاطّلاع على تجميع البيانات لمزيد من التفاصيل.
  • عندما يلغي آخر تطبيق مسجّل في أحد أجهزة الاستشعار تسجيله منه، يرسل الإطار طلبًا إلى طبقة HAL لإيقاف جهاز الاستشعار حتى لا يتم استهلاك الطاقة بدون داعٍ.

تأثير التجميع

تفسّر الحاجة إلى طبقة إرسال متعدّد في إطار العمل بعض قرارات التصميم.

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

دمج بيانات أجهزة الاستشعار

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

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

لا يتم الحفاظ على التنفيذ التلقائي لدمج بيانات أجهزة الاستشعار و قد يؤدي إلى عدم اجتياز الأجهزة التي تعتمد عليه اختبارات مجموعة اختبارات التوافق (CTS).

الخيارات المتقدمة

يتم توفير هذا القسم كمعلومات أساسية للمستخدمين الذين يحافظون على رمز إطار عمل مشروع Android مفتوح المصدر (AOSP). وهو غير ذي صلة بالشركات المصنّعة للأجهزة.

JNI

يستخدم إطار العمل واجهة Java الأصلية (JNI) المرتبطة بـ android.hardware والموجودة في الدليل frameworks/base/core/jni/. يستدعي هذا الرمز الرموز البرمجية الأصلية من المستوى الأدنى للحصول على إذن الوصول إلى أجهزة استشعار الأجهزة.

إطار عمل أصلي

يتم تحديد الإطار الأصلي في frameworks/native/ ويوفر بديلاً أصليًا مكافئًا لحزمة android.hardware. يستدعي الإطار الأصلي وكلاء Binder IPC للحصول على إذن الوصول إلى الخدمات الخاصة بأجهزة الاستشعار.

Binder IPC

يسهّل وكلاء Binder IPC التواصل بين حدود العمليات.

HAL

إنّ Sensors Hardware Abstraction Layer (HAL) API هي الواجهة بين برامج تشغيل الأجهزة وإطار عمل Android. تتألف من واجهة HAL واحدة sensors.h وتنفيذ HAL واحد يُشار إليه باسم sensors.cpp.

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

تقع واجهة HAL لجهاز الاستشعار في hardware/libhardware/include/hardware. يمكنك الاطّلاع على sensors.h لمزيد من التفاصيل.

خلال دورة الإصدار

يحدّد تنفيذ HAL إصدار واجهة HAL التي ينفّذها من خلال ضبط your_poll_device.common.version. يتم تحديد إصدارات واجهة HAL الحالية في sensors.h، وترتبط الوظائف بهذه الإصدارات.

يتوافق إطار عمل Android حاليًا مع الإصدارَين 1.0 و1.3، ولكن لن يعود الإصدار 1.0 متوافقًا قريبًا. تصف هذه المستندات سلوك الإصدار 1.3، الذي يجب أن تتم ترقية جميع الأجهزة إليه. لمعرفة التفاصيل حول كيفية الترقية إلى الإصدار 1.3، يمكنك الاطّلاع على إيقاف إصدار HAL نهائيًا.

برنامج تشغيل النواة

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

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

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

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

ملاحظة: لتطوير ميزات جديدة في ContextHub تستخدم أجهزة استشعار أو مصابيح LED جديدة، يمكنك أيضًا استخدام Neonkey SensorHub المتصل بلوحة تطوير Hikey أو Hikey960.

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

لا يحدّد Android كيفية تصميم مركز أجهزة الاستشعار وكيفية تواصله مع أجهزة الاستشعار ونظام على شريحة (SoC) (ناقل I2C، وناقل SPI، وما إلى ذلك)، ولكن يجب أن يهدف إلى تقليل استخدام الطاقة بشكل عام.

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

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

هذه هي شرائح MEMs المادية التي تجري القياسات. في كثير من الحالات، تتوفّر عدة أجهزة استشعار مادية على الشريحة نفسها. على سبيل المثال، تتضمّن بعض الشرائح مقياس تسارع وجيروسكوب ومقياس مغناطيسية. (غالبًا ما يُشار إلى هذه الشرائح باسم شرائح 9 محاور، لأنّ كل جهاز استشعار يقدّم بيانات على 3 محاور.)

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

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