Разработка Android TV приложения
Android TV и Google TV — не одно и то же. Google TV (Fire TV тоже отдельная история) — это надстройка над Android TV с другой главной страницей и другими требованиями к контенту. Приложение, которое проходит ревью для Android TV, может вести себя странно на Google TV из-за различий в лаунчере. Это нужно учитывать на этапе проектирования.
D-pad навигация и focus management
Главное отличие от мобильной разработки — пользователь управляет D-pad пультом. Никакого тачскрина. Фокус перемещается по View через Android Focus Engine, и это работает предсказуемо только если верстка не слишком сложная.
Проблема с RecyclerView: при вложенных горизонтальных RecyclerView внутри вертикального (типичный Netflix-паттерн) фокус часто теряется при переходе между строками. Помогает кастомный LinearLayoutManager с переопределённым onInterceptFocusSearch(). Без этого пользователь жмёт «вниз» — а фокус прыгает не в следующую строку, а куда-то в конец экрана.
Leanback Library. androidx.leanback:leanback — стандартный набор компонентов для Android TV: BrowseSupportFragment, RowsSupportFragment, PlaybackSupportFragment. Они реализуют стандартный TV UX из коробки: горизонтальные ряды с заголовками, детальный экран контента, плеер с транспортными контролами. Leanback понимает D-pad нативно.
Но Leanback — старый. Jetpack Compose для TV (androidx.tv:tv-compose) активно развивается с 2023 года. TvLazyRow, TvLazyColumn, Carousel — декларативные компоненты с встроенным focus management. На новых проектах предпочитаем Compose TV, для поддержки legacy — Leanback.
Видеоплеер
ExoPlayer (теперь androidx.media3:media3-exoplayer) — стандарт для Android TV. Поддерживает DASH, HLS, SmoothStreaming, DRM через DefaultDrmSessionManager (Widevine L1 на сертифицированных устройствах). Для TV критично правильно настроить TrackSelector: выбор видео трека должен учитывать разрешение дисплея, а не просто выбирать максимальное — 4К поток на 1080p экране зря тратит пропускную способность.
DRM Widevine L1 требует сертифицированного устройства. SHIELD TV, Chromecast с Google TV — L1. Большинство дешёвых Android TV приставок — L3. Это влияет на максимальное разрешение защищённого контента (L3 ограничивает до 540p). Проверяем уровень через MediaDrm.isCryptoSchemeSupported(WIDEVINE_UUID) + запрос свойства securityLevel.
Интеграция с Google TV / лентой рекомендаций
Google TV показывает персонализированные рекомендации на главном экране из подключённых приложений. Для участия нужно имплементировать TvContractCompat.Programs или новый API WatchNextPrograms через ContentProvider. Это отдельная работа: заполнение WatchNextPrograms при каждом воспроизведении, обновление прогресса просмотра, удаление завершённых программ.
Fire TV использует другой механизм — App-to-App Communication через Intent для deep links в контент.
Ревью и сертификация
Приложение для Android TV публикуется в Google Play с <uses-feature android:name="android.software.leanback"/> и <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>. Последнее обязательно — без него Play Store не покажет приложение на TV-устройствах.
Google проверяет: навигация доступна с D-pad без тачскрина, нет UI элементов требующих касания, приложение корректно обрабатывает KEYCODE_BACK и KEYCODE_DPAD_*.
Сроки
Информационное или медиа-приложение на Leanback: 5–9 недель. Полноценное VOD-приложение с DRM, рекомендациями и офлайн-загрузкой: 12–20 недель. Стоимость рассчитывается индивидуально после анализа требований к контенту и монетизации.







