Android предлагает богатый пользовательский интерфейс, оптимизированный для приложений, работающих на устройствах с большим экраном, таких как телевизоры высокой чёткости. Вы можете расширить аудиторию своего приложения, разработав его для Android TV. Этот документ содержит рекомендации по эффективному использованию этого.
Создавайте ТВ-приложения
Приложения для телевизоров используют ту же структуру, что и приложения для телефонов и планшетов. Такой подход позволяет создавать новые приложения для телевизоров, используя уже имеющиеся знания о разработке приложений для Android, или расширять возможности существующих приложений для работы на телевизорах.
Однако модель взаимодействия пользователя с телевизором существенно отличается от модели взаимодействия с телефонами и планшетами. Чтобы ваше приложение успешно работало на телевизорах, необходимо разработать новые макеты, понятные с расстояния 3 метров, и обеспечить навигацию, работающую только с помощью навигационной панели и кнопки выбора.
Дополнительную информацию о том, как работать с контроллерами оборудования телевизора, создавать макеты телевизора и создавать навигацию по телевизору, см. в разделе Создание телевизионных приложений .
Используйте Media3 ExoPlayer
Jetpack Media3 предоставляет интерфейс плеера, который определяет базовые функции, такие как воспроизведение, пауза, поиск и отображение информации о треке. ExoPlayer — это реализация этого интерфейса в Media3 по умолчанию.
По сравнению с API MediaPlayer от Android он добавляет дополнительные удобства, такие как поддержка нескольких потоковых протоколов, встроенные средства визуализации аудио и видео, а также компоненты, которые обрабатывают буферизацию мультимедиа.
Вы можете настраивать и расширять возможности ExoPlayer, а также обновлять его через обновления приложения Play Store. Подробнее см. в разделе Media3 ExoPlayer .
Использовать Media3 MediaSession
Медиа-сессии предоставляют системе универсальный способ взаимодействия с аудио- или видеоплеером вашего приложения. Одно из основных отличий Media3 от предыдущих медиа-API заключается в том, что больше не требуются коннекторы между компонентами.
Новый класс MediaSession
принимает любой класс, реализующий интерфейс Player. ExoPlayer и MediaController — классы, реализующие этот интерфейс. Это значительно упрощает взаимодействие между компонентами. Подробнее см. в разделе Интерфейс Player .
Дополнительную информацию о создании приложения для воспроизведения мультимедиа см. в статье Создание простого медиаплеера с помощью ExoPlayer .
Чтобы создать наилучший опыт для конечных пользователей вашего медиаприложения, необходимо реализовать MediaSession
. Для этого инициализируйте Player
и передайте его в MediaSession.Builder
следующим образом:
Котлин
val player = ExoPlayer.Builder(context).build() val mediaSession = MediaSession.Builder(context, player).build()
Ява
ExoPlayer player = new ExoPlayer.Builder(context).build(); MediaSession mediaSession = new MediaSession.Builder(context, player).build();
Автоматическая обработка состояний
Библиотека Media3 автоматически обновляет сеанс воспроизведения медиаконтента, используя состояние проигрывателя. Таким образом, вам не нужно вручную выполнять сопоставление между проигрывателем и сеансом. Это помогает гарантировать, что ваши пользователи всегда будут видеть актуальную информацию о воспроизводимом медиаконтенте, в том числе в карточке «Сейчас воспроизводится» .
Управление воспроизведением и его реклама
В Media3 проигрывателем по умолчанию является класс ExoPlayer, реализующий интерфейс Player. Подключение медиасессии к проигрывателю позволяет приложению рекламировать воспроизведение медиаконтента извне и получать команды на воспроизведение из внешних источников. Медиасессия делегирует эти команды проигрывателю медиаприложения.
Медиасеанс — ключ к управлению воспроизведением. Он позволяет направлять команды из внешних источников на проигрыватель, который и воспроизводит медиаконтент. Внешние клиенты могут использовать медиаконтроллер для передачи команд воспроизведения вашему медиаприложению. Эти команды принимаются вашим медиасеансом, который в конечном итоге делегирует команды медиаплееру.
Дополнительные сведения о воспроизведении, например о настройке поведения команды воспроизведения, см. в разделе Управление воспроизведением и его анонсирование с помощью MediaSession .
Избегайте сбоев в работе вашего приложения
Использование MediaSession
позволяет избежать ненужных сбоев, таких как:
Неожиданное и продолжительное воспроизведение при выключении телевизора или переключении входов. Это также приводит к высокому энергопотреблению оборудования телевизора. С помощью
MediaSession
ваше приложение может сообщить платформе о воспроизведении медиаконтента, а платформа может сообщить приложению, что воспроизведение можно остановить.Воспроизведение музыки неожиданно останавливается при выходе из приложения или выключении телевизора. Использование API
MediaSession
позволяет продолжить воспроизведение в фоновом режиме.Ограниченное взаимодействие с контентом , которое мешает пользователям управлять воспроизведением. Например, возврат в приложение, если оно воспроизводит музыку в фоновом режиме, или поддержка голосовых команд. С
MediaSession
в вашем приложении пользователи могут использовать голосовые команды для поиска и пропуска песен или эпизодов.
Дополнительные соображения
При распространении вашего медиаприложения на Android для ТВ вам необходимо учитывать вопросы доступности, способы повышения вовлеченности, предоставления пользователям возможности находить контент, а также создания игр и сервисов ввода для ТВ.
доступность телевидения
Хотя вспомогательные технологии могут помочь и помогают пользователям со слабым зрением, важно поддерживать доступность при поиске контента для телевизионных приложений.
Например, уделите особое внимание навигационным подсказкам и правильной маркировке элементов, а также обеспечьте корректную работу телевизионных приложений с функциями доступности, такими как TalkBack. Эти шаги могут значительно улучшить работу пользователей с нарушениями зрения.
Первый шаг к улучшению доступности — повышение осведомлённости. Подробнее о масштабировании текста, раскладках клавиатуры и аудиоописаниях см. в разделе «Ресурсы по доступности» .
Лучшие практики по повышению вовлеченности на Google TV
Все приложения, разработанные для Android TV, работают на устройствах с Google TV. Для обеспечения наилучшего пользовательского опыта использования Google TV мы рекомендуем вам следовать следующим рекомендациям.
Для обеспечения универсального способа взаимодействия с аудио- или видеоплеером необходимо использовать MediaSession
. Подробнее о реализации см. в разделе «Использование Media3 MediaSession» .
В качестве базового решения ваше приложение должно поддерживать Google Cast. Это позволяет расширить возможности приложений для Android, iOS и Chrome, обеспечивая потоковую передачу аудио и видео на телевизоры Android TV, а также устройства Chromecast и устройства с Ассистентом. Подробнее см. в документации Google Cast .
Вы также можете помочь пользователям:
Находите контент на разных платформах , предлагая ленту действий в медиа или интегрируя Watch Next.
Воспользуйтесь преимуществами голоса и взаимодействия, поддерживая привязку учетных записей и синхронизацию прав, предлагая голосовое управление и включив Cast Connect.
Платить стало проще благодаря интеграции биллинга Google Play и предоставлению удобных подписок.
Создание инфраструктуры ввода ТВ
Просмотр телепередач в прямом эфире и другого непрерывного контента, транслируемого по каналам, — важная часть телевизионного опыта. Пользователи привыкли выбирать и смотреть передачи, переключаясь между каналами. Платформа TV Input Framework создаёт каналы для публикации идейного или музыкального контента в программе телепередач.
TV Input Framework предоставляет унифицированный метод для приёма и воспроизведения живого видеоконтента с аппаратных источников, таких как порты HDMI и встроенные тюнеры, а также с программных источников, таких как потоковое видео через интернет. Подробнее см. в разделе «Создание служб TV Input» .