Описание интерфейса приложения для Android

Клиентская часть представляет собой мобильное приложение для андроид, которое взаимодействует с сервером.

При первом запуске приложения ему присваиваться уникальный идентификатор, который оно хранит в памяти телефона. При первой авторизации отправляется логин и пароль пользователя + УИД. Приложение регистрируется по уид на сервере. При каждом обмене данными в header запроса должен быть вставлен УИД приложения. + access токен авторизации.

После авторизации (ввода логина и пароля) уникальный идентификатор (УИД) передается на сервер и таким образом приложение идентифицируется на сервере.

При запуске приложение должно проверить наличие трека с фоновой музыкой. Если такой трек есть, запустить его на постоянное воспроизведение. Трек играет бесконечно пока работает приложение.

Пользователь выбирает маршрут. Маршруты создаются на сервере и при авторизации сервер отдает маршруты которые должны быть на устройстве.

Устройство было авторизовано. При начале работы нужно обновить информацию о маршрутах. Проверить все ли файлы маршрутов есть в файловой системе.

Сотрудник корабля запускает маршрут нажатием кнопки Начать маршрут. В случае если текущее местоположение входит в точку маршрута - запускаем на воспроизведение трек, связанный с точкой маршрута. Если маршрут на паузе или остановлен, ничего не делаем, только фоновая музыка.

Приложение должно слать данные на сервер о своем текущем состоянии и свое местоположение, каждый раз когда происходят изменения в Location service

Описание интерфейса

Интерфейс состоит из 5 страниц:

  1. SplashScreen

    1. Инициализация приложения

    2. Запрос прав:

      1. Доступ к файлам

      2. Доступ к геопозиции

      3. Доступ к локации

      4. Включить локацию

      5. Инициализация API Карт

    3. Проверка наличия файлов в файловой системе связанных с загруженными маршрутами. Это файлы с треками.

    4. Отправить на сервер информацию о запуске и начале работы.

    5. Получить от сервера свои настройки.

  2. Страница авторизации

  3. Главная страница. На странице пользователь приложения может взаимодействовать с приложением.

    1. Действия

      1. Выбрать маршрут

      2. Начать маршрут

      3. Пауза

      4. Остановить маршрут

      5. Регулировка громкости фоновой музыки

      6. Регулировка громкости контента (голоса) (см. Описание слайдера)

    2. Информация

      1. Номер и название текущего маршрута

      2. Уведомление что маршрут не выбран

      3. Текущее название трека, который воспроизводится

      4. Количество треков в маршруте

      5. Наличие фонового трека

      6. Уведомление если какие то файлы маршрута не найдены в файловой системе ( количество таких треков)

      7. Уровень сигнала GPS

  4. Карта

    1. Точки выбранного маршрута на карте

    2. Текущее местоположение

    3. Если маршрут запущен - рисовать маршрут следования.

  5. About

    1. Информация о том что это за приложение

    2. Авторские права CrystalSound

    3. Версия сборки

    4. Информация о владельце

    5. С кем связаться в случае если телефон потерян или украден =)

    6. UUID устройства

Описание слайдера

Предлагаю использовать слайдер со шакалами в библиотеке xlider для флаттер, или стандартный как в примере. Смысл в том, чтобы разделить слайдер на зоны по 10% от 0-100 и выставлять громкость таким образом, двигая слайдер по этим шакалам.

Регулировка громкости системы не особо подходит и громкость звука в системе должна быть на максимуме.

Библиотеки которые воспроизводят звук из файла, позволяют устанавливать громкость воспроизведения каждого файла по отдельности.

На данный момент пользователи устанавливают громкость звука вручную (100% голос, 80% фон, например)

sound slider