Android TV için erişilebilirlikle ilgili en iyi uygulamalar

Bu kılavuzda, Android TV'de erişilebilirlikle ilgili en iyi uygulamalar ve hem yerel hem de yerel olmayan uygulamalar için öneriler yer almaktadır.

Erişilebilirlik, TV uygulamam için neden önemlidir?

Görme bozuklukları, TV izleyicileri arasında yaygın bir durumdur. DSÖ, dünya genelinde 2,2 milyar insanın görme bozukluğu olduğunu tahmin ediyor.ABD'de ise yaklaşık 32 milyon yetişkin ciddi görme kaybı yaşıyor (2018 Ulusal Sağlık Görüşmesi Anketi). Avrupa'da EBU, 30 milyon kişinin bu durumdan etkilendiğini tahmin ediyor.

Görme engelli kullanıcılar, gören kullanıcılar kadar medyadan keyif alabilir. Comcast'in 2017 tarihli bir anketine göre, katılımcıların% 96'sı TV izliyor (%81'i günde bir saatten fazla). Ancak kullanıcıların% 65'i içerik bulmayla ilgili sorunlar yaşadığını bildiriyor. Ayrıca, Birleşik Krallık'ta yapılan bir ankete katılan engelli kişilerin% 80'i akış sorunları yaşadığını bildirdi.

Yardımcı teknolojiler yardımcı olur ancak TV uygulamaları, içerik keşfinde erişilebilirliği desteklemelidir. Navigasyon rehberliğine ve öğe etiketlerine özellikle dikkat edin. Görme bozukluğu olan kullanıcıların deneyimini önemli ölçüde iyileştirmek için TalkBack gibi özelliklerle uyumluluğu sağlayın.

Erişilebilirliği iyileştirmenin ilk adımı farkındalıktır. Bu kılavuz, sizin ve ekibinizin TV uygulamanızdaki erişilebilirlik sorunlarını tespit etmenize yardımcı olabilir.

Android erişilebilirlik kaynakları

Android'de erişilebilirlik hakkında daha fazla bilgi edinmek için erişilebilirlik geliştirme kaynaklarımıza göz atın.

Metin ölçekleme

Android TV uygulamaları, farklı piksel yoğunluklarını destekleyerek kullanıcının metin ölçeklendirme tercihine uymalıdır.

Şunlara özellikle dikkat edin:

  • Kullanıcı arayüzü bileşenlerindeki boyutlar için wrap_content kullanın.
  • Düzenlerin, metin ölçeğine bağlı olarak boyutları değiştiğinde bileşenleri yeniden düzenlediğinden emin olun.
  • Bileşenlerin, daha büyük metin ölçeklerinde ekrana sığmaya devam ettiğinden emin olun.
  • Esnek olmayan bileşenler için sp metin boyutu birimlerini kullanmayın.
  • Özel görünümlerde ayarlama için FONT_SCALE değerini kontrol edin:

    // Checking font scale with Context
    val scale = resources.configuration.fontScale
    Log.d(TAG, "Text scale is: " + scale)
    

Metin ölçeği aşağıdaki komutla değiştirilebilir:

adb shell settings put system font_scale 1.2f

Android 12 ve sonraki sürümlerde kullanıcılar, cihaz ayarlarından metin ölçeklendirmesini değiştirebilir.

Klavye düzenleri

Android 13 (API düzeyi 33) ve sonraki sürümlerde, beklenen tuş konumlarının tuş kodlarını aramak için getKeyCodeForKeyLocation() kullanabilirsiniz. Kullanıcı bazı önemli konumları yeniden eşlediyse veya standart düzene sahip olmayan bir klavye kullanıyorsa bu işlem gerekli olabilir.

Sesli açıklama

Android 13 (API düzeyi 33) ve sonraki sürümlerde, sistem genelinde yeni bir erişilebilirlik tercihi sayesinde kullanıcılar tüm uygulamalarda sesli açıklamaları etkinleştirebilir. Android TV uygulamaları, isAudioDescriptionRequested() ile sorgulayarak kullanıcının tercihini kontrol edebilir.

Kotlin

private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (am.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

Java

private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

Android TV uygulamaları, kullanıcının tercihi değiştiğinde bunu AccessibilityManager öğesine bir dinleyici ekleyerek izleyebilir:

Kotlin

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

Java

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}