TV bekleme modu

Android 11'de, dikkatsiz uyku özelliği güç tasarrufu sağlayan bir özelliktir. kullanıcı etkin olmama zaman aşımının ayarlanmasına olanak tanır. FLAG_KEEP_SCREEN_ON içeren pencerelerse seviyelerde görünür veya uyanık kalma kilitleri FULL_WAKE_LOCK, SCREEN_BRIGHT_WAKE_LOCK veya SCREEN_DIM_WAKE_LOCK elde edilir. PARTIAL_WAKE_LOCK düzeyinde wakelock'lar bu özellikten etkilenmez. Zaman aşımı süresi dolmadan kısa bir süre önce, kullanıcıya cihazla etkileşime geçmezse cihazın uykuya geçeceği konusunda uyarıda bulunan bir mesaj gösterilebilir.

Bu bağlamda kullanıcı etkinliği, bir kullanıcının PowerManager#userActivity (USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS olmadan) flag) aşağıdakileri içerir, ancak bunlarla sınırlı değildir:

  • Dokunmatik ekranla etkileşimde bulunma
  • Fiziksel bir düğmeye basılması
  • Harici bir aksesuardan gelen etkinlikleri (örneğin, bağlı klavye, Bluetooth uzaktan kumandası, IR uzaktan kumandası)
  • 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. Herhangi bir işlem yapılmazsa ekran kapanır. Özelliği özelleştirebilirsiniz. bu yapılandırma seçeneklerini kullanabilirsiniz.

Zaman aşımını yapılandırma

Zaman aşımını yapılandırmak için aşağıdaki öğeyi şurada güncelleyin: frameworks/base/core/res/res/values/config.xml:

  • config_attentiveTimeout
    • Kullanıcının işlem yapmadığı varsayılan süreyi milisaniye olarak belirtir. Ardından, ekran kapanacaktır (ekran uyanık kalma kilitleri takılı olsa bile).
    • Derleme zamanında ayarla.
    • 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ı görüntülenmeden önceki süreyi yapılandır

Süreyi yapılandırmak için aşağıdaki öğeyi şurada güncelleyin: frameworks/base/core/res/res/values/config.xml:

  • config_attentiveWarningDuration
    • Şu süreden sonra ekran kapanmadan önce kullanıcıya bir uyarı mesajının gösterileceği süre: uzun süre etkin olmaması.
    • 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 sn).

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ğini belirtir.
    • Varsayılan: false.

Uyarı kullanıcı arayüzü kaynakları

  • Uyarı iletişim kutusunun düzeni şurada tanımlanır: frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
  • İletişim kutusuna ilişkin aşağıdaki dizeler şurada tanımlanmıştır: frameworks/base/packages/SystemUI/res/values/strings.xml ve frameworks/base/packages/SystemUI/res-product/values/strings.xml.
    • 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 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

Özellik için CTS testleri aşağıda verilmiştir: cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java

Ö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 durumu örneği

  1. stay_on_while_plugged_in Cihazın sağlık HAL'si, cihazda bir pil (battery_present, true) pil tüketimini ekranın kapatılmasını engeller.
    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 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ırın).
  4. Uyku uyarısı iletişim kutusunun birkaç saniye sonra gösterildiğini doğrulayın.
  5. Ayarlanan zaman aşımı süresi dolduktan sonra ekranın kapandığını doğrulayın.