TV bekleme modu

Android 11'de dikkatsiz uyku, FLAG_KEEP_SCREEN_ON ile başlayan 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ı sona ermeden kısa bir süre önce, kullanıcıyı cihazla etkileşime geçmezse cihazın uykuya 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 basma
  • Harici bir aksesuardan (ör. bağlı klavye, Bluetooth uzaktan kumanda, kızılötesi uzaktan kumanda) giriş etkinlikleri
  • Sesli etkileşim
  • One Touch Play gibi belirli HDMI CEC mesajları 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. Hiç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'te aşağıdaki öğeyi güncelleyin:

  • config_attentiveTimeout
    • Kullanıcının etkin olmaması durumunda ekranın kapanacağı varsayılan süreyi milisaniye cinsinden belirtir (ekran uyandırıcı kilitleri etkin olsa bile).
    • Derleme sırasında ayarlanır.
    • Değer 0 ile config_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 belirlenen 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 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üyle ilgili 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 ve frameworks/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 yer paylaşımlarıyla değiştirilebilir.

Uygulama

Aşağıdakileri 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 özelliğini geçersiz kılarak ayarlar bölümünde bu özelliği 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

  1. 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

  2. Dikkatsiz kullanım nedeniyle uyku moduna geçme zaman aşımını, uyarı iletişim kutusunun 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ırın).
  4. Birkaç saniye sonra uyku uyarısı iletişim kutusunun gösterildiğini doğrulayın.
  5. Ayarlanan zaman aşımı süresi dolduktan sonra ekranın kapandığını doğrulayın.