Android 11'de dikkatsiz uyku, FLAG_KEEP_SCREEN_ON
içeren pencereler görünür durumdayken veya FULL_WAKE_LOCK
, SCREEN_BRIGHT_WAKE_LOCK
ya da SCREEN_DIM_WAKE_LOCK
düzeyinde uyanık kalma kilitleri tutulsa bile kullanıcının etkin olmaması durumunda ekranın kapanacağı bir zaman aşımı süresinin ayarlanmasına olanak tanıyan bir güç tasarrufu özelliğidir.
PARTIAL_WAKE_LOCK
düzeyinde wakelock'lar bu özellikten etkilenmez.
Zaman aşımı süresi dolmadan kısa süre önce, kullanıcıyı cihazla etkileşimde bulunmazsa cihazın uyku moduna geçeceği konusunda uyaran 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şimde bulunma
- Fiziksel bir düğmeye basılması
- Harici bir aksesuardan (ör. bağlı klavye, Bluetooth uzaktan kumanda, kızılötesi uzaktan kumanda) gelen etkinlikleri girin
- 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ştirildiğinde, kullanıcı belirli bir süre boyunca işlem yapmazsa cihazda ekranda bir uyarı gösterilir. 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
içinde aşağıdaki öğeyi güncelleyin:
config_attentiveTimeout
- Ekran uyanık kalma kilitleri kullanılsa bile, kullanıcının işlem yapmadığı varsayılan süreyi milisaniye cinsinden belirtir.
- Derleme sırasında ayarlanır.
- Değer
0
ileconfig_minimumScreenOffTimeout
arasındaysa cihazın uyanıştan kısa bir süre sonra ekranını kapatmasını önlemek için zaman aşımıconfig_minimumScreenOffTimeout
olarak ayarlanır. - Varsayılan:
-1
. Bu değer, bu özelliği devre dışı bırakı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 ayarlanan varsayılan dikkatsiz uyku zaman aşımını geçersiz kılar. - Çalışma zamanında ayarlanabilir.
Uyarının gösterileceği süreyi yapılandırma
Süreyi yapılandırmak için frameworks/base/core/res/res/values/config.xml
dosyasında aşağıdaki öğeyi güncelleyin:
config_attentiveWarningDuration
- Kullanıcı uzun süre etkin olmadığında ekran kapanmadan önce kullanıcıya uyarı mesajı gösterilecek süre.
- 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 saniye).
TvSettings'te zaman aşımı tercihlerini gösterme
Zaman aşımı tercihlerini göstermek için packages/apps/TvSettings/Settings/res/values/config.xml
'te aşağıdaki öğeyi güncelleyin:
config_show_standby_timeout
- Medya oynatma sırasında ekranın kapatılmasına izin veren bir tercih öğesinin gösterilip gösterilmeyeceği.
- Varsayılan:
false
.
Uyarı kullanıcı arayüzü kaynakları
- Uyarı iletişim kutusunun düzeni
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
adresinde tanımlanır. - İletişim için aşağıdaki dizeler
frameworks/base/packages/SystemUI/res/values/strings.xml
veframeworks/base/packages/SystemUI/res-product/values/strings.xml
dosyalarında tanımlanmıştır. inattentive_sleep_warning_title
inattentive_sleep_warning_message
Derleme zamanı yapılandırmaları ve kaynakları, kaynak yer paylaşımları tarafından değiştirilebilir.
Uygulama
Aşağıdakileri 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
değerini geçersiz kılarak özelliği ayarlardan devre dışı bırakın.Settings.Secure.ATTENTIVE_TIMEOUT
değerini ayarlayan kendi ayarlarınızı uygulayın.
Doğrulama
Özelliğin CTS testleri cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java
adresindedir.
Ö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ğin ayarlarda nasıl gösterileceğine dair bir örnek sağlar.
Manuel test örneği
Cihazın sağlık HAL'i cihazda pil olduğunu bildirirse (
battery_present
=true
)stay_on_while_plugged_in
geliştirici ayarının kapalı olduğundan emin olun. Bu, özelliğin ekranı kapatmasını engelleyebilir.
adb shell settings put global stay_on_while_plugged_in 0
- Dikkatsiz kullanım nedeniyle uyku moduna geçme 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ırın).
- Birkaç saniye sonra uyku uyarısı iletişim kutusunun gösterildiğini doğrulayın.
- Ayarlanan zaman aşımı süresi dolduktan sonra ekranın kapandığını doğrulayın.