Задача
Разработать Android-приложение «Сигнал для моноколеса», которое позволяет пешеходам слышать приближающегося водителя моноколеса. Управление осуществляется через Bluetooth-кнопку-брелок со съемного пульта (качелька громкости), закрепленную на перчатке. Приложение должно воспроизводить выбранный пользователем звуковой файл один раз при каждом нажатии +/- громкости.
Проблема: заводское приложение для колеса имеет встроенный сигнал, но держать смартфон в руке во время езды неудобно и небезопасно. Новое приложение должно работать в фоне с заблокированным экраном, а его громкость и аудиовыход автоматически перенаправляются на внешнюю Bluetooth-колонку (встроеннуюв моноколесо или портативную колонку).
Функциональные требования
- Интерфейс: одна экранная страница с двумя кнопками:
- Кнопка «Выбрать аудиофайл» — открывает системный файловый менеджер для выбора любого аудиофайла из памяти устройства.
- Кнопка «Выход» — полностью закрывает приложение и деактивирует его реакцию на Bluetooth-кнопку.
- Постоянство выбора: один раз выбранный файл запоминается (SharedPreferences или аналог) и сохраняется даже после перезапуска приложения.
- Фоновый режим: после выбора файла и сворачивания/блокировки экрана приложение продолжает слушать события громкости от Bluetooth-кнопки (селфи-пульта).
- Управление через Bluetooth: когда пользователь нажимает качельку громкости на пульте (любое изменение громкости вверх или вниз), приложение однократно воспроизводит записанный ранее аудиофайл.
- Выход и остановка сервиса: при нажатии «Выход» приложение завершает работу фонового сервиса, прекращает прослушивание нажатий громкости и не реагирует на пульт.
Технические детали
- Поддержка вывода звука на любое Bluetooth-устройство, подключенное к смартфону (колонка моноколеса, портативная колонка, беспроводные наушники и т.д.).
- Приложение не должно требовать root-прав.
- Минимальная версия Android: 8.0 (API 26) или выше.
- Запуск приложения - вручную перед поездкой, предпочтительно авто-реакция на подключение к определенному Bluetooth-устройству.
- Опционально: отображение в строке состояния уведомления с подтверждением фоновой работы и информации о выбранном сигнале.