Расширьте свое медиа-приложение на Android TV

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» .