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

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

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

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

Что особенно важно, пользователи с нарушениями зрения получают столько же удовольствия от просмотра медиаконтента, сколько и их зрячие сверстники. Опрос 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);
}