الحدّ من التأثير الحراري

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

طبقة تجريد الأجهزة الحرارية

يستخدم الإصدار 9 من نظام التشغيل Android والإصدارات الأقدم واجهة استقصاء محدّدة في الإصدار 1.0 من Thermal HAL للحصول على قراءات درجة الحرارة. وقد سمحت طبقة HAL هذه لإطار عمل Android والعملاء الموثوق بهم الآخرين، مثل طبقة HAL الخاصة بالشركة المصنّعة للجهاز، بقراءة درجة الحرارة الحالية وحدود الإيقاف المؤقت والإيقاف التي تحدّدها سياسة المنتج لكل مستشعر من خلال واجهة برمجة التطبيقات نفسها.

قدَّم نظام التشغيل Android 10 نظامًا حراريًا في إطار عمل Android وإصدارًا جديدًا من طبقة تجريد الأجهزة (HAL)، وهو Thermal HAL 2.0، الذي يجرّد الواجهة إلى أجهزة النظام الفرعي الحراري. تتضمّن واجهة الأجهزة أجهزة استشعار درجة الحرارة ومقاومات حرارية للجلد والبطارية ووحدة معالجة الرسومات ووحدة المعالجة المركزية ومنفذ USB. درجة حرارة سطح الجهاز هي أهم نظام يجب تتبُّعه للحفاظ على درجة حرارة سطح الجهاز ضمن الحدود الحرارية المحدّدة.

بالإضافة إلى ذلك، يوفّر الإصدار 2.0 من Thermal HAL لعدة عملاء قراءات من أجهزة استشعار الحرارة ومستويات خطورة مرتبطة بها للإشارة إلى الإجهاد الحراري. يوضح الشكل التالي رسالتَي تحذير من واجهة مستخدم نظام Android. يتم عرض هذه الرسائل عندما تصل واجهة معاودة الاتصال IThermalEventListener الخاصة بمستشعري USB_PORT وSKIN على التوالي إلى مستوى الخطورة THERMAL_STATUS_EMERGENCY.

تحذيرات بشأن ارتفاع درجة الحرارة

الشكل 1. تحذيرات بشأن ارتفاع درجة الحرارة

يتم استرداد درجات الحرارة الحالية لأنواع أجهزة استشعار الحرارة المختلفة من خلال IThermal HAL. يعرض كل استدعاء للدالة قيمة حالة SUCCESS أو FAILURE. إذا تم عرض SUCCESS، ستستمر العملية. في حال تم عرض FAILURE، يتم إرسال رسالة خطأ إلى status.debugMessage، ويجب أن تكون الرسالة قابلة للقراءة من قِبل الإنسان.

.

بالإضافة إلى كونها واجهة استقصاء تعرض درجات الحرارة الحالية، يمكنك استخدام وظيفة معاودة الاتصال IThermalChangedCallback (HIDL، الإصدارات من 10 إلى 13 من نظام التشغيل Android) أو IThermalChangedCallback (AIDL، الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث) مع واجهة معاودة الاتصال من برامج Thermal HAL، مثل خدمة Thermal في إطار العمل. على سبيل المثال، RegisterIThermalChangedCallback وUnregisterIThermalChangedCallback لتسجيل أو إلغاء تسجيل الأحداث التي تم تغيير مستوى خطورتها. إذا تغيّرت درجة الحرارة القصوى لجهاز استشعار معيّن، يرسل notifyThrottling رد اتصال بشأن حدث خفض السرعة بسبب الحرارة إلى برامج معالجة أحداث الحرارة.

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

لمزيد من المعلومات، يُرجى الاطّلاع على التنفيذ المرجعي.

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

الخدمة الحرارية

في الإصدار 10 من نظام التشغيل Android والإصدارات الأحدث، تقدّم خدمة إدارة درجة الحرارة في إطار العمل عملية مراقبة مستمرة باستخدام إشارات التخفيف المختلفة من Thermal HAL 2.0، كما تقدّم ملاحظات حول شدة التقييد إلى عملائها. وتشمل هذه البرامج المكونات الداخلية وتطبيقات Android. تستخدم الخدمة واجهتَي رد اتصال لبرنامج ربط، هما IThermalEventListener وIThermalStatusListener، يتم عرضهما كعمليات رد اتصال. يُستخدم النوع الأول من قِبل المنصات الداخلية ومصنّعي الأجهزة، بينما يُستخدم النوع الثاني لتطبيقات Android.

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

مخطط سير عملية الحدّ من ارتفاع درجة الحرارة في الإصدار 10 من نظام التشغيل Android والإصدارات الأحدث

الشكل 2. مخطط سير عملية الحدّ من ارتفاع درجة الحرارة في الإصدار 10 من نظام التشغيل Android والإصدارات الأحدث

إرشادات الشركة المصنّعة للجهاز

للإبلاغ عن بيانات جهاز استشعار درجة الحرارة وحالة الحدّ من سرعة المعالجة في الإصدارات من 10 إلى 13 من نظام التشغيل Android، على الشركات المصنّعة للأجهزة تنفيذ جانب HIDL من الإصدار 2.0 من Thermal HAL (IThermal.hal).

لإتاحة إمكانية الإبلاغ عن بيانات أداة استشعار درجة حرارة الجهاز وحالة الحدّ من سرعة المعالجة في Android 14، على الشركات المصنّعة للأجهزة تنفيذ جانب AIDL من الإصدار 2.0 من Thermal HAL (IThermal.aidl).

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

للاطّلاع على مزيد من المعلومات حول مستويات الحد في إطار العمل وكيفية ارتباطها بإجراءات التخفيف، يُرجى الاطّلاع على استخدام رموز الحالة الحرارية.

استخدام واجهات برمجة التطبيقات الحرارية

يمكن للتطبيقات إضافة أدوات معالجة وإزالتها، والوصول إلى معلومات حالة درجة الحرارة من خلال فئة PowerManager. توفّر واجهة IThermal جميع الوظائف اللازمة، بما في ذلك عرض قيم حالة درجة الحرارة. يتم تضمين واجهة IThermal binder في واجهة OnThermalStatusChangedListener التي يمكن للتطبيقات استخدامها عند تسجيل أدوات معالجة حالة الحرارة أو إزالتها.

تتضمّن واجهات برمجة التطبيقات الحرارية في Android طريقتَي معاودة الاتصال والاستقصاء لتلقّي التطبيقات إشعارات بمستويات الخطورة الحرارية من خلال رموز الحالة المحدّدة في الفئة PowerManager. الطرق هي:

استخدام رموز حالة درجة الحرارة

تتم ترجمة رموز حالة درجة الحرارة إلى مستويات تقييد محددة يمكنك استخدامها لجمع البيانات وتصميم تجربة مستخدم مثالية. على سبيل المثال، قد تتلقّى التطبيقات الحالة 0x00000000 (THERMAL_STATUS_NONE)، والتي قد تتغيّر لاحقًا إلى 0x00000001 (THERMAL_STATUS_LIGHT). ويؤدي تحديد الحالة 0x00000000 على أنّها t0، ثم قياس الوقت المنقضي من الحالة THERMAL_STATUS_NONE إلى الحالة THERMAL_STATUS_LIGHT على أنّه t1 إلى تمكين الشركات المصنّعة للأجهزة من تصميم واختبار استراتيجيات التخفيف لحالات استخدام معيّنة. يوضّح الجدول التالي الطرق المقترَحة لاستخدام رموز الحالة الحرارية:

رمز الحالة الحرارية الوصف والاستخدام المقترَح
THERMAL_STATUS_NONE (0x00000000) بدون تقييد استخدِم هذه الحالة لتنفيذ إجراءات وقائية، مثل رصد بداية الفترة الزمنية (من t0 إلى t1) من THERMAL_STATUS_NONE (0) إلى THERMAL_STATUS_LIGHT (1).
THERMAL_STATUS_LIGHT (0x00000001) التقييد الخفيف، لا تتأثر تجربة المستخدم. استخدِم إجراءات تخفيف لطيفة في هذه المرحلة. على سبيل المثال، يمكنك تخطّي زيادة السرعة أو استخدام الترددات غير الفعّالة، ولكن فقط على النوى الكبيرة.
THERMAL_STATUS_MODERATE (0x00000002) التقييد المعتدل، لا تتأثر تجربة المستخدم بشكل كبير. تؤثّر إجراءات الحدّ من ارتفاع درجة الحرارة في الأنشطة التي يتم تنفيذها في المقدّمة، لذا يجب أن تقلّل التطبيقات من استهلاك الطاقة على الفور.
THERMAL_STATUS_SEVERE (0x00000003) التقييد الشديد؛ تتأثر تجربة المستخدم بشكل كبير. في هذه المرحلة، يجب أن يحدّ تخفيف الحرارة في الجهاز من سعة النظام. قد تتسبّب هذه الحالة في آثار جانبية، مثل تشوّش العرض وتذبذب الصوت.
THERMAL_STATUS_CRITICAL (0x00000004) اتّخذت المنصة جميع الإجراءات اللازمة لتقليل استهلاك الطاقة. وضع برنامج الحدّ من ارتفاع درجة حرارة الجهاز جميع المكوّنات للعمل بأدنى سعة لها.
THERMAL_STATUS_EMERGENCY (0x00000005) يتم إيقاف المكوّنات الرئيسية في النظام الأساسي بسبب الظروف الحرارية، وتكون وظائف الجهاز محدودة. يمثّل رمز الحالة هذا آخر تحذير قبل إيقاف الجهاز. في هذه الحالة، يتم إيقاف بعض الوظائف تمامًا، مثل المودم وبيانات شبكة الجوّال.
THERMAL_STATUS_SHUTDOWN (0x00000006) إيقاف التشغيل فورًا ونظرًا لخطورة هذه المرحلة، قد لا تتمكّن التطبيقات من تلقّي هذا الإشعار.

يجب أن تجتاز الشركات المصنّعة للأجهزة اختبار VTS الخاص بطبقة HAL الحرارية، ويمكنها استخدام emul_temp من واجهة kernel sysfs لمحاكاة التغييرات في درجة الحرارة.