Користувач натискає «вниз» на пульті — фокус стрибає в кінець списку, пропускаючи кнопку «Улюблене». Знайома ситуація? Це класична помилка 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: вибір відео треку має враховувати роздільність дисплея, а не просто брати максимальне — 4K на 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 тижнів |
Вартість розраховується індивідуально після аналізу контенту та монетизації. Безкоштовно оцінимо ваш проєкт. Зв'яжіться з нами, щоб обговорити деталі. Отримайте консультацію по вашому проєкту.







