TV bekleme modu

Android 11'de dikkatsiz uyku, güç tasarrufu sağlayan bir özelliktir. Bu özellik, kullanıcı etkinliği zaman aşımı süresi ayarlanmasına olanak tanır. Bu sürenin sonunda, 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 düzeyinde uyanık kalma kilitleri tutulsa bile ekran kapanır. PARTIAL_WAKE_LOCK seviyesindeki uyanık kalma kilitleri bu özellikten etkilenmez. Zaman aşımı süresi dolmadan kısa süre önce, kullanıcıya cihazla etkileşimde bulunmazsa cihazın uyku moduna geçeceği konusunda uyarı veren 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, kızılötesi uzaktan kumanda)
  • Ses etkileşimi
  • 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ın 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 süresinde ayarlanır.
    • Değer 0 ile config_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 dosyasında aşağıdaki öğeyi güncelleyin:

  • config_attentiveWarningDuration
    • Uzun süreli kullanıcı etkinliği olmaması durumunda ekran kapanmadan önce kullanıcıya ne kadar süreyle uyarı mesajı gösterileceği.
    • Değer, ayarlanan dikkatsiz uyku zaman aşımı değerinin çok altında olmalıdır. Aksi takdirde uyarı iletişim kutusu sürekli 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ği.
    • 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 ve frameworks/base/packages/SystemUI/res-product/values/strings.xml içinde tanımlanır.
    • inattentive_sleep_warning_title
    • inattentive_sleep_warning_message

Derleme süresi yapılandırmaları ve kaynakları, kaynak katmanlarıyla değiştirilebilir.

Uygulama

Aşağıdaki yöntemlerden birini kullanarak özelliği etkinleştirin.

  1. Varsayılan config_attentiveTimeout değerini geçersiz kılın.
  2. 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

  1. 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 durum, özelliğin ekranı kapatmasını engelleyebilir.
    adb shell settings put global stay_on_while_plugged_in 0

  2. 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
  3. Bir videoyu oynatmaya başlayın (ekran uyandırma kilidi almak için).
  4. Uyku uyarısı iletişim kutusunun birkaç saniye sonra göründüğünü doğrulayın.
  5. Belirlenen zaman aşımı süresi dolduktan sonra ekranın kapandığını doğrulayın.