TV Bekleme

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 ile config_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ı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ı 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
    • 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österme

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 ve frameworks/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.

  1. Varsayılan config_attentiveTimeout değerini geçersiz kılın.
  2. AOSP TvSettings kullanılıyorsa:
    • config_show_standby_timeout komutunu 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

  1. Cihazın sağlık durumu HAL'si, cihazda bir pil bulunduğunu bildiriyorsa ( battery_present true ) bu, özelliğin ekranı kapatmasını engelleyebileceğinden, stay_on_while_plugged_in geliştirici ayarının kapalı olduğundan emin olun.
    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 fazla olacak şekilde ayarlayın.
    adb shell settings put secure attentive_timeout 32000
  3. Bir videoyu oynatmaya başlayın (ekran uyandırma kilidi elde etmek için).
  4. Birkaç saniye sonra uyku uyarısı iletişim kutusunun göründüğünü doğrulayın.
  5. Ayarlanan zaman aşımı süresi dolduktan sonra ekranın kapandığını doğrulayın.