وضع الاستعداد في التلفزيون

في نظام التشغيل Android 11، وضع السكون غير المراقب هو ميزة لتوفير الطاقة تسمح بضبط مهلة عدم نشاط المستخدم ليتم بعدها إطفاء الشاشة، حتى إذا كانت النوافذ التي تتضمّن FLAG_KEEP_SCREEN_ON مرئية أو إذا كانت عمليات قفل التنشيط من المستوى FULL_WAKE_LOCK أو SCREEN_BRIGHT_WAKE_LOCK أو SCREEN_DIM_WAKE_LOCK نشطة. لا تتأثر عمليات التنشيط التي تحمل المستوى PARTIAL_WAKE_LOCK بهذه الميزة. قبل انتهاء مهلة النشاط بوقت قصير، يمكن عرض رسالة تحذّر المستخدم من أنّ الجهاز سينتقل إلى وضع السكون إذا لم يتفاعل معه.

في هذا السياق، يشير نشاط المستخدِم إلى أي إجراء يؤدي إلى طلب PowerManager#userActivity (بدون العلامة USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS)، بما في ذلك على سبيل المثال لا الحصر:

  • التفاعل مع الشاشة التي تعمل باللمس
  • الضغط على زر فعلي
  • أحداث الإدخال من ملحق خارجي (مثل لوحة مفاتيح متصلة أو جهاز تحكّم عن بُعد يعمل بالبلوتوث أو جهاز تحكّم عن بُعد يعمل بالأشعة تحت الحمراء)
  • التفاعل الصوتي
  • تلقّي رسائل HDMI CEC معيّنة، مثل One Touch Play
  • بدء جلسة إرسال جديدة

التخصيص

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

ضبط المهلة

لضبط المهلة، عدِّل العنصر التالي في frameworks/base/core/res/res/values/config.xml:

  • config_attentiveTimeout
    • تحدِّد هذه السمة المهلة التلقائية بالملي ثانية التي تنقضي بدون أن يُدخل المستخدم أي بيانات، ليتم بعدها إطفاء الشاشة (حتى إذا كانت عمليات قفل التنشيط قيد الاستخدام).
    • يتم ضبطها في وقت الإنشاء.
    • إذا كانت القيمة بين 0 وconfig_minimumScreenOffTimeout، يتم ضبط المهلة على config_minimumScreenOffTimeout لمنع الجهاز من إطفاء الشاشة بعد فترة قصيرة من تنشيطها.
    • القيمة التلقائية: -1، ما يؤدي إلى إيقاف هذه الميزة.

تجاوز المهلة التلقائية

لإلغاء إعداد المهلة التلقائي، عدِّل العنصر التالي.

  • Settings.Secure.ATTENTIVE_TIMEOUT
    • في حال ضبط هذه السياسة، سيتم تجاهل مهلة عدم النشاط التلقائية التي تم ضبطها من خلال config_attentiveTimeout.
    • يمكن ضبطها في وقت التشغيل.

ضبط المدة قبل ظهور التحذير

لضبط المدة، عدِّل العنصر التالي في frameworks/base/core/res/res/values/config.xml:

  • config_attentiveWarningDuration
    • تحدّد هذه السمة المدة التي ستظهر خلالها رسالة تحذير للمستخدم قبل إطفاء الشاشة بعد فترة طويلة من عدم النشاط.
    • يجب أن تكون القيمة أقل بكثير من مهلة عدم الانتباه المحدّدة، وإلا سيظهر مربع الحوار التحذيري باستمرار ولن يمكن إغلاقه.
    • القيمة التلقائية: 30000 (30 ثانية).

عرض الإعدادات المفضّلة للمهلة في TvSettings

لعرض إعدادات المهلة المفضّلة، عدِّل العنصر التالي في packages/apps/TvSettings/Settings/res/values/config.xml:

  • config_show_standby_timeout
    • تحديد ما إذا كان سيتم عرض عنصر إعداد للسماح بإيقاف الشاشة أثناء تشغيل الوسائط
    • القيمة التلقائية: false

مراجع حول واجهة مستخدم التحذير

  • يتم تحديد تنسيق مربّع الحوار التحذيري في frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml.
  • يتم تحديد السلاسل التالية لمربّع الحوار في frameworks/base/packages/SystemUI/res/values/strings.xml و frameworks/base/packages/SystemUI/res-product/values/strings.xml.
    • inattentive_sleep_warning_title
    • inattentive_sleep_warning_message

يمكن تغيير إعدادات وقت الإنشاء والموارد من خلال تراكبات الموارد.

التنفيذ

فعِّل الميزة باستخدام ما يلي.

  1. ألغِ القيمة التلقائية config_attentiveTimeout.
  2. في حال استخدام TvSettings AOSP:
    • إيقاف الميزة في الإعدادات من خلال تجاهل config_show_standby_timeout
    • تنفيذ إعداداتك الخاصة التي تضبط Settings.Secure.ATTENTIVE_TIMEOUT

التحقُّق

تتوفّر اختبارات CTS الخاصة بالميزة على الرابط cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java.

أمثلة ومصدر

  • يحتوي frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java على التنفيذ التلقائي لواجهة مستخدم التحذير.
  • تقدّم packages/apps/TvSettings مثالاً على كيفية عرض الميزة في الإعدادات.

مثال على حالة اختبار يدوية

  1. تأكَّد من إيقاف stay_on_while_plugged_inإعدادات المطوّرين إذا كان برنامج HAL الخاص بصحة الجهاز يبلغ عن توفّر بطارية في الجهاز (battery_present هو true)، لأنّ ذلك قد يمنع إيقاف الشاشة.
    adb shell settings put global stay_on_while_plugged_in 0

  2. اضبط مهلة إيقاف مؤقت للنوم غير المنتبه لتكون أطول ببضع ثوانٍ من مدة مربّع حوار التحذير.
    adb shell settings put secure attentive_timeout 32000
  3. ابدأ تشغيل فيديو (للحصول على قفل تنبيه الشاشة).
  4. تأكَّد من ظهور مربّع حوار تحذير النوم بعد بضع ثوانٍ.
  5. تأكَّد من إيقاف تشغيل الشاشة بعد انتهاء المهلة المحدّدة.