Рекомендации по обеспечению специальных возможностей для Android TV

В этом руководстве представлены лучшие практики обеспечения доступности на Android TV, а также рекомендации для собственных и сторонних приложений.

Почему для моего ТВ-приложения важна доступность?

Нарушения зрения не редкость среди населения, смотрящего телевизор. По оценкам Всемирной организации здравоохранения (ВОЗ), около 2,2 миллиарда человек во всем мире имеют нарушения зрения. В США 32 миллиона американцев в возрасте 18 лет и старше испытали значительную потерю зрения, согласно Национальному опросу о состоянии здоровья 2018 года . В Европе, по оценкам, насчитывается 30 миллионов слепых и слабовидящих людей, по данным Европейского союза слепых (EBU).

Самое главное, что пользователи с нарушениями зрения наслаждаются медиаконтентом так же, как и их полностью зрячие сверстники. Опрос 2017 года , проведенный по заказу Comcast, показал, что 96% пользователей, которые незрячие или имеют слабое зрение, регулярно смотрят телевизор, причем 81% смотрят его более часа в день. Однако 65% также сообщили о проблемах с поиском того, что показывают по телевизору. А в опросе 2020 года в Великобритании 80% людей с ограниченными возможностями заявили, что у них возникли проблемы с доступом к сервисам потоковой передачи видео по запросу.

Хотя вспомогательные технологии могут и помогают пользователям с плохим зрением, важно поддерживать доступность в поиске контента для ТВ-приложений. Например, уделите особое внимание предоставлению навигационных указаний и правильной маркировке элементов, а также убедитесь, что ТВ-приложения хорошо работают с функциями доступности, такими как TalkBack. Эти шаги могут значительно улучшить опыт для пользователей с нарушениями зрения.

Первый шаг к улучшению доступности — это осведомленность. Это руководство может помочь вам и вашей команде обнаружить проблемы доступности в вашем ТВ-приложении.

Ресурсы по доступности Android

Чтобы узнать больше о специальных возможностях на Android, ознакомьтесь с нашими ресурсами по разработке специальных возможностей .

Масштабирование текста

Приложения Android TV должны учитывать предпочтения пользователя относительно масштабирования текста, поддерживая различную плотность пикселей .

Особое внимание следует уделять:

  • Используйте wrap_content для размеров в компонентах пользовательского интерфейса.
  • Убедитесь, что макеты переставляют компоненты по мере изменения их размеров в зависимости от масштаба текста.
  • Убедитесь, что компоненты по-прежнему помещаются на экране при больших масштабах текста.
  • Не используйте единицы размера текста sp для компонентов, которые не являются гибкими.
  • Проверьте значение FONT_SCALE для корректировки в пользовательских представлениях:

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

Масштаб текста можно изменить с помощью следующей команды:

adb shell settings put system font_scale 1.2f

На устройствах Android 12 и выше пользователи могут изменять масштаб текста в настройках устройства.

Раскладки клавиатуры

В Android 13 (API уровня 33) и выше вы можете использовать getKeyCodeForKeyLocation() для поиска кодов клавиш для ожидаемых местоположений клавиш. Это может быть необходимо, если пользователь переназначил некоторые местоположения клавиш или если он использует клавиатуру, которая не имеет типичной раскладки.

Аудио описание

В Android 13 (уровень API 33) и выше новая системная настройка доступности позволяет пользователям включать аудиоописания во всех приложениях. Приложения Android TV могут проверять настройки пользователя, запрашивая их с помощью 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 могут отслеживать изменение предпочтений пользователя, добавляя прослушиватель в AccessibilityManager :

Котлин

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);
}