Пользователь нажимает «вниз» на пульте — фокус прыгает в конец списка, минуя кнопку «Избранное». Знакомая ситуация? Это классическая ошибка Focus Engine в Android TV приложениях. Мы проектируем мультимедийные приложения, в которых навигация предсказуема, плеер адаптируется под экран, а контент попадает в рекомендации Google TV. Разработка ведётся под ключ — от прототипа до публикации в Google Play. За 5 лет мы реализовали 12 OTT-проектов, накопленный опыт гарантирует качество и соответствие требованиям Google.
Как Android TV отличается от Google TV?
Google TV — надстройка над Android TV с другим лаунчером и требованиями к контенту. Приложение для Android TV может некорректно отображаться на Google TV из-за различий в обработке рекомендаций и deep link. Учитываем это на этапе проектирования, чтобы избежать проблем после релиза.
Как настроить D-pad навигацию в сложных макетах?
Главное отличие от мобильной разработки — пользователь управляет D-pad пульта. Фокус перемещается через Android Focus Engine, но вложенные горизонтальные RecyclerView внутри вертикального (Netflix-паттерн) ломают логику: при нажатии «вниз» фокус может перескочить в конец экрана. Решение — кастомный LinearLayoutManager с переопределённым onInterceptFocusSearch(). Без этого пользователь не добирается до нужного ряда.
Библиотека Leanback (androidx.leanback) предоставляет BrowseSupportFragment и RowsSupportFragment с нативной поддержкой D-pad, но она считается устаревшей. Jetpack Compose для TV (androidx.tv:tv-compose) предлагает TvLazyRow и TvLazyColumn с декларативным управлением фокусом. Для новых проектов выбираем Compose TV, для legacy — Leanback.
| Характеристика | Leanback | Compose TV |
|---|---|---|
| Архитектура | Фрагменты, View | Декларативная Compose |
| Навигация | Автоматическая, ограниченная | Кастомная через FocusRequester |
| Производительность | Выше на старых устройствах | Лучше на новых (API 24+) |
| Скорость разработки | Ниже из-за шаблонов | Выше, меньше кода |
| Поддержка Google TV | Ограниченная | Полная |
Как интегрировать ExoPlayer с адаптивным качеством?
androidx.media3:media3-exoplayer — стандарт для Android TV. Критично правильно настроить TrackSelector: выбор видео трека должен учитывать разрешение дисплея, а не просто брать максимальное — 4К на 1080p экране зря тратит пропускную способность. DRM Widevine L1 доступен на сертифицированных устройствах (SHIELD TV, Chromecast с Google TV). Проверяем уровень через MediaDrm.isCryptoSchemeSupported(WIDEVINE_UUID) и запрос securityLevel. Media3 документация рекомендует такой подход.
Интеграция с рекомендациями Google TV
Google TV отображает персонализированные рекомендации из приложений через API WatchNextPrograms. Требуется ContentProvider для заполнения прогресса просмотра, обновления статуса и удаления завершённых программ. Fire TV использует другой механизм — App-to-App Communication через Intent для deep link в контент.
Как проходит разработка: пошагово
- Анализ требований к контенту, монетизации и целевой платформе.
- Проектирование навигации и focus-менеджмента.
- Интеграция ExoPlayer с кастомными настройками треков и DRM.
- Реализация рекомендаций Google TV (WatchNext Programs).
- Тестирование на 5+ устройствах (NVIDIA Shield, Chromecast с Google TV, Xiaomi Mi Box, TCL TV, Sony Bravia).
- Подготовка графики для лаунчера и иконок.
- Сборка и публикация в Google Play с соблюдением Android TV developer guide.
- Техническая поддержка после релиза (1 месяц).
Сертификация и публикация в 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, нет зависимостей от тача, корректно обрабатываются KEYCODE_BACK и KEYCODE_DPAD_*.
Что входит в работу
- Исходный код с комментариями и документация по сборке.
- Конфигурация CI/CD (GitHub Actions, Fastlane) для автоматической публикации в TestFlight и Google Play.
- Доступы к консолям разработчика (App Store Connect, Google Play Console).
- Тестовый отчёт по 5 устройствам с разными версиями ОС.
- Обучение команды заказчика по работе с админкой контента.
- Пост-релизная поддержка в течение 1 месяца (исправление критических багов).
Типичные ошибки при разработке
- Игнорирование Focus Engine — пользователь не может добраться до кнопок.
- Отсутствие обработки KEYCODE_BACK — приложение не закрывается.
- Неправильная конфигурация TrackSelector — буферизация 4K на 1080p экране.
- Пропуск метаданных для Google TV — нет рекомендаций.
- Забытая зависимость android.hardware.touchscreen:false — приложение не видно.
Сроки и стоимость
| Тип приложения | Сроки |
|---|---|
| Информационное на Leanback | от 5 до 9 недель |
| VOD с DRM, рекомендациями, офлайном | от 12 до 20 недель |
Стоимость рассчитывается индивидуально после анализа контента и монетизации. Бесплатно оценим ваш проект. Свяжитесь с нами, чтобы обсудить детали. Получите консультацию по вашему проекту.







