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

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

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

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

Самое важное, что пользователи с нарушениями зрения получают от просмотра медиаконтента такое же удовольствие, как и их зрячие сверстники. Опрос, проведенный компанией Comcast в 2017 году , показал, что 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
}

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

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