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

في 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 ثانية).

عرض الإعدادات المفضّلة للمهلة في إعدادات التلفزيون

لإظهار الإعدادات المفضّلة للمهلة، حدِّث العنصر التالي في 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. في حال استخدام AOSP TvSettings:
    • يمكنك إيقاف الميزة في الإعدادات من خلال تجاوز 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. تحقق من إطفاء الشاشة بعد انتهاء المهلة المحددة.