في الإصدار L من Android، سنتوقف عن إتاحة بعض أجهزة استشعار HAL.
مماثلة. الإصداران الوحيدان المتوافقان هما SENSORS_DEVICE_API_VERSION_1_0
وSENSORS_DEVICE_API_VERSION_1_3
.
في الإصدارات القادمة، من المحتمل أن نوقف الدعم لـ 1_0 أيضًا.
لا تتضمن القيمة 1_0 مفهوم التجميع. إن أمكن، يجب أن تستخدم جميع الأجهزة التي تستخدم 1_0 الترقية إلى 1_3.
تعرض 1_1 و1_2 تعريفًا ضعيفًا لمفهوم التجميع، ولا متاح بعد الآن
يجب الترقية إلى الإصدار 1_3 على جميع الأجهزة التي تستخدم حاليًا الإصدار 1_1 أو 1_2.
في 1_3، بسّطنا مفهوم التجميع وأطلقنا ميزة التنشيط أجهزة الاستشعار.
للترقية إلى 1_3، اتبع التغييرات المدرجة أدناه.
تنفيذ الدالة الدفعة
حتى إذا لم يتم تنفيذ التجميع (لا يحتوي جهازك على FIFO)، يجب
لتنفيذ الدالة batch
. يتم استخدام batch
لتحديد
فترة جمع العيّنات والحد الأقصى لوقت استجابة إعداد التقارير لمستشعر معيّن. أُنشأها جون هنتر، الذي كان متخصصًا
يحل محل setDelay
. لن يتم الاتصال بـ "setDelay
"
بعد الآن.
في حال عدم استخدام التجميع، يمكنك تنفيذ batch
من خلال
فما عليك سوى استدعاء الدالة setDelay
الحالية باستخدام
مَعلمة sampling_period_ns
.
تنفيذ دالة التدفق
حتى في حال عدم تنفيذ التجميع العنقودي، يجب تنفيذ
flush
.
في حال عدم تنفيذ التجميع، على flush
إنشاء واحد.
حدث META_DATA_FLUSH_COMPLETE
وعرض 0 (نجاح).
تغيير أدوات الاستشعار_poll_device_t.common.version
your_poll_device.common.version = SENSORS_DEVICE_API_VERSION_1_3
إضافة الحقول الجديدة إلى تعريف أجهزة الاستشعار
عند تحديد كل جهاز استشعار، بالإضافة إلى sensor_t المعتاد الحقول:
.name = "My magnetic field Sensor", .vendor = "My company", .version = 1, .handle = mag_handle, .type = SENSOR_TYPE_MAGNETIC_FIELD, .maxRange = 200.0f, .resolution = CONVERT_M, .power = 5.0f, .minDelay = 16667,
عليك أيضًا ضبط الحقول الجديدة، المحددة بين 1_0 و1_3:
.fifoReservedEventCount = 0, .fifoMaxEventCount = 0, .stringType = 0, .requiredPermission = 0, .maxDelay = 200000 .flags = SENSOR_FLAG_CONTINUOUS_MODE,
fifoReservedEventCount: في حال عدم تنفيذ التجميع، اضبط هذا الحقل على 0.
fifoMaxEventCount: في حالة عدم تنفيذ التجميع، اضبط هذا على 0
stringType: اضبط القيمة على 0 لجميع أجهزة استشعار Android الرسمية (التي تم تحديدها في installs.h)، حيث سيتم استبدال هذه القيمة بإطار العمل. بالنسبة أدوات استشعار غير رسمية، يمكنك الاطّلاع على sensor_t تفاصيل حول كيفية إعداده.
requiredPermission: هذا هو الإذن الذي يجب أن تحصل عليه التطبيقات
الوصول إلى أداة الاستشعار. يمكنك عادةً ضبط هذا على 0 لجميع أجهزة الاستشعار،
ولكن يجب أن تضبط أدوات الاستشعار من النوع HEART_RATE
القيمة على SENSOR_PERMISSION_BODY_SENSORS.
maxDelay: هذه القيمة مهمة وعليك ضبطها وفقًا إمكانات كل من أداة الاستشعار وسائقها.
يتم تحديد هذه القيمة فقط لأجهزة الاستشعار المستمرة والمتغيّرة. إنه
التأخير بين حدثَي جهاز استشعار يقابلان أدنى تردد
التي تدعمها أداة الاستشعار. عند طلب الترددات المنخفضة عبر
batch
، سيتم إنشاء الأحداث بهذا التكرار
بدلاً من ذلك. ويمكن استخدامه من قبل إطار العمل أو التطبيقات لتقدير
قد تكون دفعة FIFO ممتلئة. إذا لم يتم ضبط هذه القيمة بشكل صحيح، ستفشل CTS.
بالنسبة إلى أدوات الاستشعار في وضع الإبلاغ واللقطة الواحدة، يجب ضبط maxDelay
على 0.
بالنسبة إلى أجهزة الاستشعار المستمرة، اضبطها على الحد الأقصى لفترة أخذ العيّنات المسموح بها في ميكرو ثانية.
ينطبق ما يلي على period_ns
وmaxDelay
وminDelay
:
period_ns
بالنانو ثانية بينماmaxDelay
/minDelay
هي بالميكرو ثانية.- يجب أن يتناسب
maxDelay
دائمًا مع عدد صحيح بعلامة 32 بت. أُنشأها جون هنتر، الذي كان متخصصًا يتم تعريفه كبُنى 64 بت على بُنى 64 بت فقط لأسباب تتعلق بالتوافق الثنائي.
flags: يحدّد هذا الحقل وضع الإبلاغ عن أداة الاستشعار وما إذا كانت جهاز استشعار للاستيقاظ.
إذا لم تطبّق التجميع وكنت تريد الانتقال من الإصدار 1.0 إلى 1.3، اضبط هذا إلى:
SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ONE_SHOT_MODE
مقابل لقطة واحدة
أدوات الاستشعار
SENSOR_FLAG_CONTINUOUS_MODE
مقابل المستمرة
أجهزة الاستشعار SENSOR_FLAG_ON_CHANGE_MODE
عند التغيير
أدوات الاستشعار باستثناء القرب
SENSOR_FLAG_SPECIAL_REPORTING_MODE
لأجهزة الاستشعار ذات الإعدادات الخاصة
وضع الإبلاغ باستثناء الإمالة
أداة الرصد.
SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ON_CHANGE_MODE
لجهاز استشعار التقارب وجهاز استشعار أداة رصد الإمالة الرسمية في Android.
الملاحظات عند الترقية من 1_1 أو 1_2
- تعمل وظيفة
batch
دائمًا تقريبًا، حتى في أجهزة الاستشعار التي لا تتوافق الدفع، بغض النظر عن قيمة وسيطة المهلة. الحالات الوحيدة حيث قد يتعذّر تنفيذ الدالةbatch
وتمثل أخطاء داخلية أو خللاًsensor_handle,
أو سالبsampling_period_ns
أوmax_report_latency_ns
سالب. - يتم تحديد ما إذا كان جهاز الاستشعار يتيح الدفع باستخدام
fifoMaxEventCount
أكبر من 0. (في الإصدارات السابقة، كانت تستند إلى القيمة المعروضةbatch()
). - أجهزة الاستشعار التي تتيح تجميع البيانات هي دائمًا في ما نطلق عليه اسم "التجميع".
هذا الوضع" في الإصدارات السابقة: حتى إذا كانت معلَمة
max_report_latency_ns
هي 0، يجب أن تكون أداة الاستشعار مجمّعة، أي يجب أن تكون الأحداث بتخزينها في FIFO عند انتقال المنظومة على الرقاقة إلى وضع التعليق. - معلمة
flags
للدالةbatch
هي لم تعد مستخدمة بعد الآن.DRY_RUN
وWAKE_UPON_FIFO_FULL
هي سيتم إيقافهما نهائيًا ولن يتم تمريرهما مطلقًا إلى الدالةbatch
. - يشار الآن إلى وسيطة مهلة الدفعة باسم
الوسيطة
max_report_latency
.