اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
أوضاع إعداد التقارير
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكن أن تنشئ أجهزة الاستشعار أحداثًا بطرق مختلفة تُعرف باسم أوضاع إعداد التقارير.
يرتبط كل نوع من أجهزة الاستشعار بوضع إعداد تقارير واحد فقط.
تتوفّر أربعة أوضاع لإعداد التقارير.
مستمر
يتمّ إنشاء الأحداث بمعدّل ثابت يحدّده المَعلمة
sampling_period_ns
التي يتمّ تمريرها إلى الدالة batch
. تشمل أمثلة أدوات الاستشعار التي تستخدم وضع إعداد التقارير المستمر أدوات قياس التسارع
والجيروسكوبات.
عند التغيير
لا يتمّ إنشاء الأحداث إلا إذا تغيّرت القيم المقاسة.
يؤدي تفعيل أداة الاستشعار على مستوى HAL (باستخدام activate(..., enable=1)
) إلى بدء حدث أيضًا،
ما يعني أنّه يجب أن يعرض HAL حدثًا على الفور عند تفعيل أداة استشعار عند التغيُّر. تشمل أمثلة أجهزة الاستشعار التي تستخدم وضع إعداد التقارير عند التغيير كلاً من
أنواع عداد الخطوات وأجهزة استشعار التقارب وأجهزة استشعار معدل ضربات القلب.
تُستخدَم المَعلمة
sampling_period_ns
التي تم تمريرها إلى الدالة batch
لضبط
الحد الأدنى للوقت بين الأحداث المتتالية، ما يعني أنّه لا يجب
إنشاء حدث إلى أن يتم مرور sampling_period_ns
نانوسانية منذ
الحدث الأخير، حتى إذا تغيّرت القيمة منذ ذلك الحين. إذا تغيّرت القيمة،
يجب إنشاء حدث بعد مرور sampling_period_ns
منذ الحدث الأخير.
على سبيل المثال، لنفترض ما يلي:
- ننظِّم عداد الخطوات باستخدام
sampling_period_ns = 10 * 10^9
(10 ثوانٍ).
- نمشي لمدة 55 ثانية، ثم نقف لمدة دقيقة واحدة.
- يتم إنشاء الأحداث كل 10 ثوانٍ تقريبًا خلال المدّة
الأولى (بما في ذلك في الوقت
t=0
بسبب بدء
تشغيل المستشعر، وt=60
ثانية)، بإجمالي سبعة
أحداث. لا يتمّ إنشاء أيّ حدث في الدقيقة الثانية لأنّ قيمة
عدد الخطوات لم تتغيّر بعد t=60
ثانية.
طلب بمثال واحد
عند رصد حدث، يوقف المستشعر نفسه ثم يرسل
حدثًا واحدًا من خلال HAL. من المهمّ ترتيب الخطوات لتجنّب حالات السباق.
(يجب إيقاف أداة الاستشعار قبل الإبلاغ عن الحدث من خلال
HAL). ولا يتم إرسال أي حدث آخر إلى أن تتم إعادة تفعيل أداة الاستشعار.
والحركة
الملحوظة هي مثال على هذا النوع من أجهزة الاستشعار.
يُشار أحيانًا إلى أجهزة الاستشعار التي تعمل لمرة واحدة باسم أجهزة استشعار التنشيط.
يتم تجاهل المَعلمتَين sampling_period_ns
وmax_report_latency_ns
اللتين تم تمريرهما إلى الدالة batch
. لا يمكن تخزين الأحداث
من الأحداث لمرة واحدة في قوائم الأجهزة التي تستخدم أسلوب "الأول يخرج أولاً"، ويجب الإبلاغ عن الأحداث
فور إنشائها.
الأحداث الخاصة
اطّلِع على أوصاف نوع الاستشعار الفردية لمعرفة تفاصيل حول وقت إنشاء الأحداث.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Reporting modes\n\nSensors can generate events in different ways called reporting modes;\neach sensor type has one and only one reporting mode associated with it.\nFour reporting modes exist.\n\nContinuous\n----------\n\nEvents are generated at a constant rate defined by the\n[sampling_period_ns](/docs/core/interaction/sensors/batching#sampling_period_ns)\nparameter passed to the `batch` function. Example sensors\nusing the continuous reporting mode are\n[accelerometers](/docs/core/interaction/sensors/sensor-types#accelerometer)\nand [gyroscopes](/docs/core/interaction/sensors/sensor-types#gyroscope).\n\nOn-change\n---------\n\nEvents are generated only if the measured values have changed.\nActivating the sensor at the HAL level (calling\n`activate(..., enable=1)` on it) also triggers an event,\nmeaning the HAL must return an event immediately when an on-change sensor\nis activated. Example sensors using the on-change reporting mode are the\nstep counter, proximity, and heart rate sensor types.\n\nThe\n[sampling_period_ns](/docs/core/interaction/sensors/batching#sampling_period_ns)\nparameter passed to the `batch` function is used to set the\nminimum time between consecutive events, meaning an event shouldn't be\ngenerated until `sampling_period_ns` nanoseconds elapsed since\nthe last event, even if the value changed since then. If the value changed,\nan event must be generated as soon as `sampling_period_ns` has\nelapsed since the last event.\n\nFor example, suppose:\n\n- We activate the step counter with `sampling_period_ns = 10 * 10^9` (10 seconds).\n- We walk for 55 seconds, then stand still for one minute.\n- The events are generated about every 10 seconds during the first minute (including at time `t=0` because of the activation of the sensor, and `t=60` seconds), for a total of seven events. No event is generated in the second minute because the value of the step count didn't change after `t=60` seconds.\n\nOne-shot\n--------\n\nUpon detection of an event, the sensor deactivates itself and then sends\na single event through the HAL. Order matters to avoid race conditions.\n(The sensor must be deactivated before the event is reported through the\nHAL). No other event is sent until the sensor is reactivated.\n[Significant\nmotion](/docs/core/interaction/sensors/sensor-types#significant_motion) is an example of this kind of sensor.\n\nOne-shot sensors are sometimes referred to as trigger sensors.\n\nThe `sampling_period_ns` and `max_report_latency_ns`\nparameters passed to the `batch` function are ignored. Events\nfrom one-shot events cannot be stored in hardware FIFOs; the events must\nbe reported as soon as they are generated.\n\nSpecial\n-------\n\nSee the individual [sensor type\ndescriptions](/docs/core/interaction/sensors/sensor-types) for details on when the events are generated."]]