Веб админ панель и решение для показа рекламы/медиа на Android TV.
## 1. Введение
Необходимо разработать решение для показа рекламы/медиа на Android TV. Приложение должно воспроизводить видео и изображения, обновлять контент удалённо, работать в киоск‑режиме, и поддерживать базовую панель управления контентом через веб.
## 2. Основные функции
### 2.1. Плеер (Android TV)
1. Воспроизведение медиа:
Воспроизведение видео (MP4, H.264, AAC), HLS, DASH*.
Воспроизведение картинок (JPG, PNG)*.
2. Плейлист:
Получение списка медиа из JSON* (периодическое обновление).
* Смена плейлиста через API или вручную через админ‑панель.
* Очередь воспроизведения медиа с возможностью пропуска повреждённых файлов.
3. Приоритет показа роликов:
Возможность выбора приоритета показа* для роликов в процентах.
* Если роликов в плейлисте 4 и меньше, воспроизведение идёт по очереди.
Если больше 4, можно выбрать, например, чтобы один из роликов показывался каждый 4-й раз*, а остальные — по очереди.
4. Автозапуск:
Приложение должно автоматически запускаться* при включении устройства (киоск‑режим).
* Без возможности выйти из приложения без PIN кода.
5. Повтор медиа:
Все элементы в плейлисте должны воспроизводиться в цикле* (режим повторения).
6. Офлайн-режим:
Если нет интернета, плеер должен воспроизводить контент из локального кэша*.
7. Контроль качества воспроизведения:
* Минимальная задержка воспроизведения после запуска ≤ 5 секунд.
8. Скринсейвер (изменённый функционал):
Если кто-то по ошибке вышел из приложения, оно должно автоматически возвращаться в кiosk режим* и продолжать воспроизведение контента.
При выходе из приложения (нажатие Home* или Back), приложение должно *сразу возвращаться в рабочий режим*, воспроизводя текущий плейлист.
* Это нужно для того, чтобы при случайном выходе из приложения, оно не оставалось в фоне и не прекращало воспроизведение.
* Приложение не должно зависать или останавливаться, а всегда продолжать показывать ролики.
### 2.2. Панель управления контентом (веб)
9. Авторизация:
* Веб-панель с авторизацией через email и пароль.
10. Загрузка контента:
Возможность загрузки видео* и картинок.
* Проверка формата и размера файлов перед загрузкой.
11. Формирование плейлиста:
* Возможность добавлять/удалять медиа в плейлист.
Возможность установки порядка воспроизведения*.
Настройка весов* для каждого элемента плейлиста, чтобы регулировать частоту воспроизведения (например, 30% для одного ролика, 70% для другого).
12. Публикация плейлиста:
* Публикация сформированного плейлиста на устройство через API.
* Должна быть возможность изменить плейлист удалённо, без взаимодействия с устройствами.
13. Поддержка расписаний:
В настройках можно задать временные окна* для показа определённых роликов (например, показ только в утренние часы).
### 2.3. Логирование и мониторинг
14. Логи:
* Приложение должно логировать важные события (например, успешное начало воспроизведения, ошибки загрузки, смена плейлиста).
15. Телеметрия:
Приложение должно отправлять события* (например, play_start, play_end, error) на сервер для аналитики.
### 2.4. Поддержка разных устройств
16. Множество устройств:
* Возможность управлять несколькими экранами из одной панели.
* Отображение статуса каждого устройства (онлайн/офлайн, версия плеера).
---
## 3. Технологии
1. Плеер: Android TV, *Kotlin* или Java для разработки плеера.
2. API: REST API для получения и публикации плейлистов.
3. Веб‑панель: React или аналогичный фреймворк для админки.
4. Хранилище: S3 для хранения медиафайлов, CDN для их раздачи.
5. Мониторинг: Логирование через *Logcat, метрики через **Google Analytics* или аналог.
---
## 4. Тестирование
16. Тесты:
* Юнит‑тесты для плеера и API.
* Интеграционные тесты для синхронизации с веб‑панелью.
* Тесты на стабильность воспроизведения и обработку ошибок.
17. Критерии приёмки:
* Приложение воспроизводит контент без задержек и сбоев.
* Панель управления позволяет легко управлять контентом и публиковать его на устройства.
* Рестарт приложения: возможность перезапустить приложение через админ‑панель.
* Индикатор онлайн‑состояния: отображение состояния онлайн/оффлайн каждого устройства в реальном времени.
* Статистика показа: отслеживание количества показов каждого ролика.
---
## 5. Дополнительно
18. Оптимизация:
Приложение должно быть оптимизировано для работы на Android TV Box* и Chromecast.