Рекомендации по обеспечению специальных возможностей для 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);
}