وضع التعليق

حالات الطاقة في منظومة على رقاقة (SoC)

حالات الطاقة في المنظومة على رقاقة (SoC) هي: التشغيل ووضع السكون والتعليق. "مفعّل": عندما يكون معالج SoCقيد التشغيل "الخمول" هو وضع متوسط الطاقة يتم فيه تشغيل شريحة المعالجة المركزية (SoC) ولكنه لا يؤدي أي مهام. "تعليق" هو وضع للطاقة المنخفضة لا يتم فيه تشغيل شريحة المعالجة المركزية. وعادةً ما يكون استهلاك الطاقة في هذا الوضع أقل بـ 100 مرة مقارنةً بالوضع "قيد التشغيل".

أجهزة الاستشعار التي لا تؤدي إلى تشغيل الكاميرا

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

بعد خروج وحدة المعالجة المركزية من وضع التعليق، يتم تسجيل جميع الأحداث من "قائمة الانتظار للأولوية القصوى" ويعود العمل كالمعتاد.

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

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

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

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

كيف يمكن تحديد أدوات الاستشعار التي تُنشئ إشعارات وتلك التي لا تُنشئ إشعارات؟

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

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

ما لم يتم تحديد خلاف ذلك في تعريف نوع أداة الاستشعار، ننصح ب استخدام أداة استشعار واحدة للتنشيط وأداة استشعار واحدة غير مخصّصة للتنشيط لكل نوع من أنواع أدوات الاستشعار المدرَجة في أنواع أدوات الاستشعار. في كل تعريف لنوع المستشعر ، يمكنك الاطّلاع على المستشعر (المستشعر الذي يوقّع الجهاز أو لا يوقّعه) الذي سيعرضه SensorManager.getDefaultSensor(sensorType). وهو أداة الاستشعار التي ستستخدمها معظم التطبيقات.