В этом руководстве представлены лучшие практики обеспечения доступности на 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); }