Bu rehber, Android TV'de erişilebilirlikle ilgili en iyi uygulamaları sağlamak ve .
Erişilebilirlik, TV uygulamam için neden önemlidir?
Televizyon izleyen nüfus arasında görme bozuklukları yaygındır. Dünya Sağlık Örgütü'ne (DSÖ) göre, dünya genelinde yaklaşık 2,2 milyar insan görme bozukluğuna sahip. ABD'de, 18 yaş ve üstü 32 milyon Amerikalı, önemli görme kaybı, 2018 Ulusal Sağlık Röportaj Anketi'ne göre. Avrupa Körler Birliği'ne (EBU) göre, Avrupa'da 30 milyon kör ve kısmen görme engelli insan olduğu tahmin ediliyor.
Daha da önemlisi, görme bozukluğu olan kullanıcılar medya içeriğinden keyif alıyor. tam gören akranları kadar iyi. Comcast tarafından yaptırılan 2017 anketi kör veya az gören kullanıcıların% 96'sının düzenli olarak video izlediğini %81'i günde bir saatten fazla içerik izliyor. Ancak %65'i, TV'de hangi programların olduğunu ararken sorun yaşadığını da belirtti. 2020'de yapılan bir ankette, Birleşik Krallık, Engellilerin% 80'i videolarla ilgili erişilebilirlik sorunları yaşadığını belirtti isteğe bağlı akış hizmetleri.
Yardımcı teknolojiler az gören kullanıcılara yardımcı olabilse de TV uygulamalarının içerik keşfetme yolculuklarında erişilebilirliğin desteklenmesi açısından önemlidir. Örneğin, navigasyonu kullanırken yol gösterici bilgiler vermeye ve öğeleri düzgün şekilde etiketlemeli ve TV uygulamalarının erişilebilirlikle iyi çalışmasını sağlamalısınız. başka özellikler de var. Bu adımlar, görme engelli kullanıcıların deneyimini önemli ölçüde iyileştirebilir.
Erişilebilirliği iyileştirmenin ilk adımı farkındalıktır. Bu kılavuz, size ve ekibinize TV uygulamanızdaki erişilebilirlik sorunlarını tespit etme konusunda 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 bakın.
Metin ölçekleme
Android TV uygulamaları farklı piksel yoğunluklarını destekleyerek kullanıcının metin ölçeklendirme tercihine saygı göstermelidir.
Aşağıdakilere özellikle dikkat edin:
- Kullanıcı arayüzü bileşenlerindeki boyutlar için
wrap_content
kullanın. - Metin ölçeğine bağlı olarak boyutları değiştikçe bileşenlerin yeniden düzenlendiğinden emin olun.
- Büyük metin ölçeklerinde bileşenlerin ekrana sığdığından emin olun.
- Esnek olmayan bileşenler için sp metin boyutu birimleri 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
getKeyCodeForKeyLocation()
-
öğrenmek için anahtar kodlarını
beklenen önemli konumlar.
Kullanıcı bazı önemli konumların haritasını yeniden oluşturduysa veya tipik bir 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
kullanıcıların tüm uygulamalarda sesli açıklamaları etkinleştirmesine olanak tanır. Android TV uygulamaları şunları yapabilir:
kullanıcının tercihini kontrol etmek için
isAudioDescriptionRequested()
.
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 }
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ı, AccessibilityManager
kaynağına bir dinleyici ekleyerek kullanıcının tercihinin ne zaman değiştiğini izleyebilir:
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) }
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); }