Android 11'de dikkatsiz uyku, FLAG_KEEP_SCREEN_ON
içeren pencereler görünür olsa veya FULL_WAKE_LOCK
, SCREEN_BRIGHT_WAKE_LOCK
veya SCREEN_DIM_WAKE_LOCK
düzeyindeki uyanık kalma kilitleri tutulsa bile, kullanıcının işlem yapmaması zaman aşımının ayarlanmasına ve bu süre sonunda ekranın kapanmasına olanak tanıyan bir güç tasarrufu özelliğidir. PARTIAL_WAKE_LOCK
düzeyine sahip uyandırma kilitleri bu özellikten etkilenmez. Zaman aşımı süresi dolmadan kısa bir süre önce, kullanıcıyı, cihazla etkileşime girmediği takdirde 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
çağrısını tetikleyen her şeyi ifade eder ( USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
bayrağı olmadan):
- Dokunmatik ekranla etkileşim kurma
- Fiziksel bir düğmeye basmak
- Olayları harici bir aksesuardan girin (örneğin bağlı klavye, Bluetooth uzaktan kumanda, IR uzaktan kumanda)
- Ses etkileşimi
- Tek Dokunuşla Oynatma gibi belirli HDMI CEC mesajlarını alma
- Yeni bir yayın oturumu başlatma
Özelleştirme
Özellik etkinleştirilirse, kullanıcı belirli bir süre işlem yapmadığında cihaz ekranda bir uyarı görüntüler. 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
- Kullanıcının işlem yapmaması durumunda ekranın kapanması için gereken varsayılan süreyi milisaniye cinsinden belirtir (ekran uyandırma kilitleri mevcut olsa bile).
- Oluşturma zamanında ayarlayın.
- Değer
0
ileconfig_minimumScreenOffTimeout
arasındaysa cihazın uyandıktan 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 özelliği devre dışı bırakır.
Varsayılan zaman aşımını geçersiz kıl
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ı görünmeden önceki süreyi yapılandırın
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ının uzun süre işlem yapmaması durumunda ekran kapanmadan önce kullanıcıya bir uyarı mesajının ne kadar süreyle gösterileceği.
- Değer, ayarlanan dikkatsizlik uyku zaman aşımı değerinin oldukça altında olmalıdır, aksi takdirde uyarı iletişim kutusu sürekli olarak görüntülenir ve kapatılamaz.
- Varsayılan:
30000
(30s).
TvSettings'te zaman aşımı tercihlerini göster
Zaman aşımı tercihlerini göstermek için packages/apps/TvSettings/Settings/res/values/config.xml
dosyasında aşağıdaki öğeyi güncelleyin:
-
config_show_standby_timeout
- Medya oynatımı 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üne ilişkin kaynaklar
- Uyarı iletişim kutusunun düzeni
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
dosyasında 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ımlanmıştır. -
inattentive_sleep_warning_title
-
inattentive_sleep_warning_message
Derleme zamanı yapılandırmaları ve kaynakları, kaynak katmanları ile 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ılıyorsa: -
config_show_standby_timeout
geçersiz kılarak ayarlarda özelliği devre dışı bırakın. -
Settings.Secure.ATTENTIVE_TIMEOUT
ayarını yapan kendi ayarlarınızı uygulayın.
Doğrulama
Özelliğe ilişkin CTS testleri cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java
adresinde bulunmaktadır.
Ö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 kullanıma sunulacağına ilişkin bir örnek sağlar.
Manuel test senaryosu örneği
Cihazın sağlık durumu HAL'si, cihazda bir pil bulunduğunu bildiriyorsa (
battery_present
true
)stay_on_while_plugged_in
geliştirici ayarının kapalı olduğundan emin olun; bu durum, özelliğin ekranı kapatmasını engelleyebilir.
adb shell settings put global stay_on_while_plugged_in 0
- Dikkatsiz uyku zaman aşımını, uyarı iletişim kutusu süresinden birkaç saniye daha fazla olacak şekilde ayarlayın.
adb shell settings put secure attentive_timeout 32000
- Bir videoyu oynatmaya başlayın (ekran uyandırma kilidi elde etmek için).
- Birkaç saniye sonra uyku uyarısı iletişim kutusunun göründüğünü doğrulayın.
- Ayarlanan zaman aşımı süresi dolduktan sonra ekranın kapandığını doğrulayın.