Задача

Разработать Android-приложение «Сигнал для моноколеса», которое позволяет пешеходам слышать приближающегося водителя моноколеса. Управление осуществляется через Bluetooth-кнопку-брелок со съемного пульта (качелька громкости), закрепленную на перчатке. Приложение должно воспроизводить выбранный пользователем звуковой файл один раз при каждом нажатии +/- громкости.

Проблема: заводское приложение для колеса имеет встроенный сигнал, но держать смартфон в руке во время езды неудобно и небезопасно. Новое приложение должно работать в фоне с заблокированным экраном, а его громкость и аудиовыход автоматически перенаправляются на внешнюю Bluetooth-колонку (встроеннуюв моноколесо или портативную колонку).

Функциональные требования

  • Интерфейс: одна экранная страница с двумя кнопками:
    • Кнопка «Выбрать аудиофайл» — открывает системный файловый менеджер для выбора любого аудиофайла из памяти устройства.
    • Кнопка «Выход» — полностью закрывает приложение и деактивирует его реакцию на Bluetooth-кнопку.
  • Постоянство выбора: один раз выбранный файл запоминается (SharedPreferences или аналог) и сохраняется даже после перезапуска приложения.
  • Фоновый режим: после выбора файла и сворачивания/блокировки экрана приложение продолжает слушать события громкости от Bluetooth-кнопки (селфи-пульта).
  • Управление через Bluetooth: когда пользователь нажимает качельку громкости на пульте (любое изменение громкости вверх или вниз), приложение однократно воспроизводит записанный ранее аудиофайл.
  • Выход и остановка сервиса: при нажатии «Выход» приложение завершает работу фонового сервиса, прекращает прослушивание нажатий громкости и не реагирует на пульт.

Технические детали

  • Поддержка вывода звука на любое Bluetooth-устройство, подключенное к смартфону (колонка моноколеса, портативная колонка, беспроводные наушники и т.д.).
  • Приложение не должно требовать root-прав.
  • Минимальная версия Android: 8.0 (API 26) или выше.
  • Запуск приложения - вручную перед поездкой, предпочтительно авто-реакция на подключение к определенному Bluetooth-устройству.
  • Опционально: отображение в строке состояния уведомления с подтверждением фоновой работы и информации о выбранном сигнале.