## 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.

6 часов назад
Бенджамин
 
50 лет
15 лет в сервисе
Был
6 часов назад
12 отзывов

Заявки фрилансеров

Вадим
 
37 лет
17 лет в сервисе
Был
3 часа назад
11 отзывов
3 часа назад