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

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

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

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

التخصيص

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

تكوين المهلة

لتكوين المهلة، قم بتحديث العنصر التالي في frameworks/base/core/res/res/values/config.xml :

  • config_attentiveTimeout
    • يحدد الوقت الافتراضي بالمللي ثانية من عدم نشاط المستخدم الذي يتم بعده إيقاف تشغيل الشاشة (حتى لو كانت ميزة Wakelocks للشاشة في مكانها الصحيح).
    • تعيين في وقت البناء.
    • إذا كانت القيمة بين 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. تأكد من إيقاف تشغيل الشاشة بعد انتهاء المهلة المحددة.