Android 11'de dikkatsiz uyku, güç tasarrufu sağlayan bir özelliktir. Bu özellik sayesinde, FLAG_KEEP_SCREEN_ON
içeren pencereler görünür olsa veya FULL_WAKE_LOCK
, SCREEN_BRIGHT_WAKE_LOCK
ya da SCREEN_DIM_WAKE_LOCK
seviyesinde uyanık kalma kilitleri tutulsa bile ekranın kapanacağı bir kullanıcı etkinliği zaman aşımı süresi ayarlanabilir.
PARTIAL_WAKE_LOCK
düzeyindeki uyandırma kilitleri bu özellikten etkilenmez.
Zaman aşımı süresi dolmadan kısa bir süre önce, kullanıcıya cihazla etkileşimde bulunmazsa cihazın uyku moduna geçeceğini belirten bir mesaj gösterilebilir.
Bu bağlamda kullanıcı etkinliği, aşağıdakiler dahil ancak bunlarla sınırlı olmamak üzere PowerManager#userActivity
(USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
işareti olmadan) çağrısını tetikleyen her şeyi ifade eder:
- Dokunmatik ekranla etkileşim
- Fiziksel bir düğmeye basma
- Harici bir aksesuardan gelen giriş etkinlikleri (ör. bağlı klavye, Bluetooth uzaktan kumanda, IR uzaktan kumanda)
- Sesli etkileşim
- One Touch Play gibi belirli HDMI CEC mesajlarını alma
- Yeni bir yayınlama oturumu başlatma
Özelleştirme
Bu özellik etkinleştirilirse cihaz, kullanıcı etkinliğinin belirli bir süre boyunca olmaması durumunda ekranda uyarı gösterir. Herhangi bir işlem yapılmazsa ekran kapanır. Bu yapılandırma seçeneklerini kullanarak özelliği özelleştirebilirsiniz.
Zaman aşımını yapılandırma
Zaman aşımını yapılandırmak için frameworks/base/core/res/res/values/config.xml
dosyasında aşağıdaki öğeyi güncelleyin:
config_attentiveTimeout
- Ekran kapatılmadan önce kullanıcı etkinliği olmadan geçecek varsayılan süreyi milisaniye cinsinden belirtir (ekran uyandırma kilitleri etkin olsa bile).
- Derleme zamanında ayarlanır.
- Değer
0
ileconfig_minimumScreenOffTimeout
arasındaysa cihazın uyandıktan kısa süre sonra ekranını kapatmasını önlemek için zaman aşımıconfig_minimumScreenOffTimeout
olarak ayarlanır. - Varsayılan:
-1
(bu özellik devre dışı bırakılır).
Varsayılan zaman aşımını geçersiz kılma
Varsayılan zaman aşımı ayarını geçersiz kılmak için aşağıdaki öğeyi güncelleyin.
Settings.Secure.ATTENTIVE_TIMEOUT
- Ayarlanırsa
config_attentiveTimeout
tarafından belirlenen varsayılan dikkatsiz uyku zaman aşımını geçersiz kılar. - Çalışma zamanında ayarlanabilir.
Uyarı görünmeden önceki süreyi yapılandırma
Süreyi yapılandırmak için frameworks/base/core/res/res/values/config.xml
içinde aşağıdaki öğeyi güncelleyin:
config_attentiveWarningDuration
- Kullanıcı uzun süre etkinlik yapmadığında ekran kapanmadan önce kullanıcıya ne kadar süre uyarı mesajı gösterileceği.
- Değer, ayarlanan dikkatsiz uyku zaman aşımının çok altında olmalıdır. Aksi takdirde, uyarı iletişim kutusu sürekli olarak gösterilir ve kapatılamaz.
- Varsayılan:
30000
(30 sn).
Zaman aşımı tercihlerini TvSettings'te gösterme
Zaman aşımı tercihlerini göstermek için packages/apps/TvSettings/Settings/res/values/config.xml
içindeki aşağıdaki öğeyi güncelleyin:
config_show_standby_timeout
- Medya oynatma sırasında ekranın kapatılmasına izin verme tercihi öğesinin gösterilip gösterilmeyeceğini belirler.
- Varsayılan:
false
.
Uyarı kullanıcı arayüzüyle ilgili kaynaklar
- Uyarı iletişim kutusunun düzeni
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
adresinde tanımlanmıştır. - İletişim kutusu için aşağıdaki dizeler
frameworks/base/packages/SystemUI/res/values/strings.xml
veframeworks/base/packages/SystemUI/res-product/values/strings.xml
içinde tanımlanır. inattentive_sleep_warning_title
inattentive_sleep_warning_message
Derleme zamanı yapılandırmaları ve kaynakları, kaynak katmanlarıyla değiştirilebilir.
Uygulama
Aşağıdaki yöntemlerden birini kullanarak özelliği etkinleştirin.
- Varsayılan
config_attentiveTimeout
değerini geçersiz kılın. - AOSP
TvSettings
kullanıyorsanız: config_show_standby_timeout
seçeneğini geçersiz kılarak özelliği ayarlardan devre dışı bırakın.Settings.Secure.ATTENTIVE_TIMEOUT
belirleyen kendi ayarlarınızı uygulayın.
Doğrulama
Özelliğin CTS testleri cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java
adresinde bulunur.
Örnekler ve kaynak
frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java
varsayılan uyarı kullanıcı arayüzü uygulamasını içerir.packages/apps/TvSettings
, özelliği ayarlarda nasıl göstereceğinize dair bir örnek sunar.
Manuel test senaryosu örneği
Cihazın sağlık HAL'ı, cihazda pil olduğunu bildiriyorsa (
battery_present
,true
ise)stay_on_while_plugged_in
geliştirici ayarının
kapalı olduğundan emin olun. Aksi takdirde bu ayar, özelliğin ekranı kapatmasını engelleyebilir.adb shell settings put global stay_on_while_plugged_in 0
battery_present
- Dikkatsiz uyku zaman aşımını, uyarı iletişim kutusu süresinden birkaç saniye daha uzun olacak şekilde ayarlayın.
adb shell settings put secure attentive_timeout 32000
- Bir videoyu oynatmaya başlayın (ekran uyandırma kilidi almak için).
- Uyku uyarısı iletişim kutusunun birkaç saniye sonra göründüğünü doğrulayın.
- Belirlenen zaman aşımı süresi dolduktan sonra ekranın kapandığını doğrulayın.