Описание интерфейса приложения для Android
Клиентская часть представляет собой мобильное приложение для андроид, которое взаимодействует с сервером.
При первом запуске приложения ему присваиваться уникальный идентификатор, который оно хранит в памяти телефона. При первой авторизации отправляется логин и пароль пользователя + УИД. Приложение регистрируется по уид на сервере. При каждом обмене данными в header запроса должен быть вставлен УИД приложения. + access токен авторизации.
После авторизации (ввода логина и пароля) уникальный идентификатор (УИД) передается на сервер и таким образом приложение идентифицируется на сервере.
При запуске приложение должно проверить наличие трека с фоновой музыкой. Если такой трек есть, запустить его на постоянное воспроизведение. Трек играет бесконечно пока работает приложение.
Пользователь выбирает маршрут. Маршруты создаются на сервере и при авторизации сервер отдает маршруты которые должны быть на устройстве.
Устройство было авторизовано. При начале работы нужно обновить информацию о маршрутах. Проверить все ли файлы маршрутов есть в файловой системе.
Сотрудник корабля запускает маршрут нажатием кнопки Начать маршрут. В случае если текущее местоположение входит в точку маршрута - запускаем на воспроизведение трек, связанный с точкой маршрута. Если маршрут на паузе или остановлен, ничего не делаем, только фоновая музыка.
Приложение должно слать данные на сервер о своем текущем состоянии и свое местоположение, каждый раз когда происходят изменения в Location service
Описание интерфейса
Интерфейс состоит из 5 страниц:
-
SplashScreen
-
Инициализация приложения
-
Запрос прав:
-
Доступ к файлам
-
Доступ к геопозиции
-
Доступ к локации
-
Включить локацию
-
Инициализация API Карт
-
-
Проверка наличия файлов в файловой системе связанных с загруженными маршрутами. Это файлы с треками.
-
Отправить на сервер информацию о запуске и начале работы.
-
Получить от сервера свои настройки.
-
-
Страница авторизации
-
Главная страница. На странице пользователь приложения может взаимодействовать с приложением.
-
Действия
-
Выбрать маршрут
-
Начать маршрут
-
Пауза
-
Остановить маршрут
-
Регулировка громкости фоновой музыки
-
Регулировка громкости контента (голоса) (см. Описание слайдера)
-
-
Информация
-
Номер и название текущего маршрута
-
Уведомление что маршрут не выбран
-
Текущее название трека, который воспроизводится
-
Количество треков в маршруте
-
Наличие фонового трека
-
Уведомление если какие то файлы маршрута не найдены в файловой системе ( количество таких треков)
-
Уровень сигнала GPS
-
-
-
Карта
-
Точки выбранного маршрута на карте
-
Текущее местоположение
-
Если маршрут запущен - рисовать маршрут следования.
-
-
About
-
Информация о том что это за приложение
-
Авторские права CrystalSound
-
Версия сборки
-
Информация о владельце
-
С кем связаться в случае если телефон потерян или украден =)
-
UUID устройства
-
Описание слайдера
Предлагаю использовать слайдер со шакалами в библиотеке xlider для флаттер, или стандартный как в примере. Смысл в том, чтобы разделить слайдер на зоны по 10% от 0-100 и выставлять громкость таким образом, двигая слайдер по этим шакалам.
Регулировка громкости системы не особо подходит и громкость звука в системе должна быть на максимуме.
Библиотеки которые воспроизводят звук из файла, позволяют устанавливать громкость воспроизведения каждого файла по отдельности.
На данный момент пользователи устанавливают громкость звука вручную (100% голос, 80% фон, например)