في نظام التشغيل 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
يمكن تغيير إعدادات وقت الإنشاء والموارد من خلال تراكبات الموارد.
التنفيذ
فعِّل الميزة باستخدام ما يلي.
- ألغِ القيمة التلقائية
config_attentiveTimeout
. - في حال استخدام
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
مثالاً على كيفية عرض الميزة في الإعدادات.
مثال على حالة اختبار يدوية
تأكَّد من إيقاف
stay_on_while_plugged_in
إعدادات المطوّرين إذا كان برنامج HAL الخاص بصحة الجهاز يبلغ عن توفّر بطارية في الجهاز (battery_present
هوtrue
)، لأنّ ذلك قد يمنع إيقاف الشاشة.
adb shell settings put global stay_on_while_plugged_in 0
- اضبط مهلة إيقاف مؤقت للنوم غير المنتبه لتكون أطول ببضع ثوانٍ من مدة مربّع حوار التحذير.
adb shell settings put secure attentive_timeout 32000
- ابدأ تشغيل فيديو (للحصول على قفل تنبيه الشاشة).
- تأكَّد من ظهور مربّع حوار تحذير النوم بعد بضع ثوانٍ.
- تأكَّد من إيقاف تشغيل الشاشة بعد انتهاء المهلة المحدّدة.