Как адаптировать мультимедийное приложение для Android TV

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

Создание приложений для телевизоров

Приложения для телевизоров имеют ту же структуру, что и приложения для телефонов и планшетов. Это означает, что вы можете создавать новые приложения для телевизоров на основе того, что вы уже знаете о создании приложений для Android, или расширять существующие приложения для работы на телевизорах.

Однако модель взаимодействия с пользователем на телевизоре существенно отличается от модели взаимодействия на телефоне или планшете. Чтобы ваше приложение было успешным на телевизорах, необходимо разработать новые макеты, которые будут понятны с расстояния 3 метров, и обеспечить навигацию, которая работает только с помощью крестовины и кнопки выбора.

Дополнительную информацию о том, как работать с аппаратными контроллерами телевизоров, создавать макеты и настраивать навигацию, вы найдете в статье Создание приложений для телевизоров.

Используйте Media3 ExoPlayer

Jetpack Media3 предоставляет интерфейс Player, который определяет основные функции, такие как возможность воспроизведения, паузы, поиска и отображения информации о треке. ExoPlayer – это реализация этого интерфейса по умолчанию в Media3.

По сравнению с MediaPlayer API в Android, ExoPlayer предлагает дополнительные удобства, такие как поддержка нескольких протоколов потоковой передачи, стандартные средства визуализации аудио и видео, а также компоненты, которые обрабатывают буферизацию медиаконтента.

ExoPlayer можно настраивать и расширять, а также обновлять через Google Play. Подробнее о Media3 ExoPlayer…

Используйте Media3 MediaSession

Сеансы мультимедиа предоставляют системе универсальный способ взаимодействия с аудио- или видеопроигрывателем вашего приложения. Одна из основных характеристик, которая отличает Media3 от предыдущих медиа-API, заключается в том, что больше нет необходимости в коннекторах между компонентами.

Новый класс MediaSession принимает любой класс, реализующий интерфейс Player. ExoPlayer и MediaController – это классы, которые реализуют этот интерфейс. Это упрощает взаимодействие между компонентами. Подробнее об интерфейсе проигрывателя…

Подробнее о том, как создать базовый медиапроигрыватель с помощью ExoPlayer…

Чтобы сделать приложение для мультимедиа максимально удобным для конечных пользователей, необходимо реализовать MediaSession. Для этого инициализируйте Player и передайте его в MediaSession.Builder, как показано ниже.

Kotlin

val player = ExoPlayer.Builder(context).build()
val mediaSession = MediaSession.Builder(context, player).build()

Java

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

Специальные возможности на телевизорах

Хотя вспомогательные технологии могут помочь пользователям со слабым зрением, важно поддерживать специальные возможности при поиске контента в ТВ-приложениях.

Например, уделите особое внимание навигации и правильной маркировке элементов, а также убедитесь, что ТВ-приложения совместимы со специальными возможностями, такими как TalkBack. Эти шаги могут значительно улучшить опыт для пользователей с нарушениями зрения.

Первый шаг к улучшению доступности – это осведомленность. Дополнительную информацию о масштабировании текста, раскладках клавиатуры и аудиосопровождении можно найти в ресурсах по специальным возможностям.

Рекомендации по повышению вовлеченности в Google TV

Все приложения, созданные для Android TV, работают на устройствах с Google TV. Чтобы обеспечить максимальное удобство для пользователей Google TV, рекомендуем следовать приведенным ниже советам.

Вам нужно использовать MediaSession, чтобы обеспечить универсальный способ взаимодействия с аудио- или видеопроигрывателем. Подробнее о том, как это сделать, рассказывается в статье Как использовать Media3 MediaSession.

Прежде всего, ваше приложение должно поддерживать Google Cast. С его помощью можно расширить возможности приложений для Android, iOS и приложений Chrome, чтобы транслировать аудио и видео на устройства Android TV, Chromecast и устройства с Ассистентом. Дополнительную информацию можно найти в документации по Google Cast.

Вы также можете помочь пользователям:

  • Помогите пользователям находить контент на разных платформах. Для этого добавьте фид действий с медиаконтентом или интегрируйте раздел "Смотреть дальше".

  • Используйте голосовое управление и повышайте вовлеченность пользователей. Для этого поддерживайте связывание аккаунтов и синхронизацию прав, предлагайте голосовое управление трансляцией и включите Cast Connect.

  • Упростите оплату, интегрировав Google Play Платежи и предоставив пользователям удобные подписки.

Создание фреймворка ТВ-входа

Просмотр телепередач в прямом эфире и другого непрерывного контента на основе каналов – важная часть работы с телевизором. Пользователи привыкли выбирать и смотреть телепередачи, переключая каналы. Фреймворк TV Input Framework создает каналы для публикации видео- или музыкального контента в телепрограмме.

Фреймворк TV Input Framework предоставляет единый метод получения и воспроизведения видеоконтента из аппаратных источников, таких как порты HDMI и встроенные тюнеры, и программных источников, таких как видео, транслируемое через интернет. Подробнее о том, как создавать сервисы ввода для ТВ…