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