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