Compass

0
месяц назад
месяц назад
месяц назад
месяц назад
месяц назад
месяц назад
README.md

Компас для прогулок

Это интерактивное Android-приложение, которое превращает ваши пешие прогулки в увлекательный квест. Вдохновленное легендарным компасом из фильмов о Джеке Воробье, приложение помогает вам находить новые места вокруг вас, не раскрывая их названий или адресов. Вы узнаете только направление и расстояние до цели, а дальше — полагайтесь на свою интуицию и смекалку!

Шутка

Основные функции

  • Поиск локаций: Найдите интересные места вокруг вас, основываясь на вашем запросе.
  • Тайна и интрига: Неизвестно куда именно вы идёте, пока не доберётесь до цели.
  • Компас: Интуитивная навигация с помощью стрелки компаса.
  • Расстояние до цели: Отслеживайте, как близко вы находитесь к своей цели.
  • Исследование новых мест: Откройте для себя новые маршруты и места, которые вы могли бы никогда не найти самостоятельно.

Как это работает?

  1. Введите запрос Пользователь вводит текстовый запрос с описанием того, что он хочет найти (например, "уютное кафе" или "красивый парк"), и указывает радиус поиска относительно своего текущего местоположения.

  2. Поиск локаций На основе вашего запроса и текущего местоположения приложение ищет подходящие места вокруг вас.

  3. Список целей На экране отображается список найденных локаций. Вы видите только расстояние до каждой из них, но не их названия или адреса.

  4. Выбор цели Выбирайте любую локацию, основываясь на расстоянии до неё.

  5. Компас и навигация После выбора цели открывается экран с компасом. Используя датчик компаса вашего телефона, приложение направляет стрелку в сторону выбранной цели. Также отображается расстояние до неё. Ваша задача — добраться до цели, полагаясь только на направление и свою интуицию!

Для кого это приложение?

  • Любители приключений: Для тех, кто хочет добавить элемент игры в свои прогулки.
  • Фотографы: Отличный способ найти новые интересные места для съёмки.
  • Путешественники: Исследуйте новые города и районы, полагаясь на удачу и интуицию.
  • Все, кто хочет разнообразия: Избегайте привычных маршрутов и откройте для себя что-то новое.

Установка

  1. Скачайте APK-файл - Compass.apk
  2. Установите приложение на ваше Android-устройство.
  3. Откройте приложение и начните своё приключение!

Демонстрация работы приложения в презентации по ссылке

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

Архитектура приложения

Приложение построено по принципу MVVM (Model-View-ViewModel) с использованием Jetpack Compose для UI и Hilt для Dependency Injection. Основные слои приложения:

  • Data Layer: Работа с данными, включая локальную базу данных (Room) и удаленные API (Retrofit).
  • Domain Layer: Бизнес-логика приложения, включая управление компасом и местоположением.
  • Presentation Layer: UI-логика, включая экраны и навигацию.

Используемые технологии

  • Kotlin: Основной язык программирования
  • Jetpack Compose: UI-фреймворк для Android
  • Jetpack Navigation: Для навигации в приложении
  • Room: Локальная база данных для хранения истории поиска
  • Retrofit: Для работы с удаленными API
  • Dagger Hilt: Для Dependency Injection
  • 2ГИС Places API: Для поиска подходящих локаций (документация)

Настройка API-ключа для 2ГИС

Для работы с API карт 2ГИС требуется API-ключ, который хранится в файле

local.properties
. Этот файл не включен в репозиторий для обеспечения безопасности.

Шаги для настройки API-ключа:

  1. Создайте файл
    local.properties
    в корневой директории проекта, если его нет.
  2. Добавьте API-ключ в файл
    local.properties
    в следующем формате. Замените
    ВАШ_API_КЛЮЧ
    на ваш действительный ключ от 2ГИС (инструкция по получению ключа)
api.key=ВАШ_API_КЛЮЧ

Как это работает в проекте

API-ключ автоматически считывается из файла

local.properties
и добавляется в
BuildConfig
во время сборки проекта. Это позволяет использовать ключ в коде без его явного хранения в репозитории.

Описание пользовательского интерфейса (UI) и навигации

Приложение состоит из нескольких экранов, связанных между собой через навигацию

Визуализация навигации

Визуализация навигации

Описание экранов

1. Главный экран
MenuScreen

Главный экран

  • Содержание:
    • Кнопка "Найти новую цель" — переход на экран поиска локаций.
    • Кнопка "История целей" — переход на экран истории поиска.
  • Логика:
    • При первом запуске приложение запрашивает разрешение на доступ к местоположению.
    • Если разрешение предоставлено, пользователь может перейти к поиску новой цели или просмотреть историю.
    • Если разрешение не предоставлено, приложение показывает уведомление об ошибке.

2. Экран выбора цели
TargetFinderScreen

Выбор цели

  • Содержание:
    • Поле для ввода текстового запроса (например, "кафе").
    • Поле для ввода радиуса поиска (в километрах).
    • Кнопка "Найти объекты" — запуск поиска локаций.
    • Список найденных локаций с указанием расстояния до каждой из них.
    • Кнопка “Назад” — возврат на предыдущий экран.
  • Логика:
    • Пользователь вводит запрос и радиус, затем нажимает кнопку "Найти объекты".
    • Приложение выполняет запрос к API 2ГИС и отображает результаты.
    • Пользователь может выбрать локацию из списка, чтобы перейти на экран компаса.
    • При возникновении ошибок выполнения запроса пользователь получает уведомление об ошибке.

3. Экран компаса
CompassScreen

Компас

  • Содержание:
    • Изображение компаса со стрелкой, указывающей направление на выбранную цель.
    • Текст с расстоянием до цели.
    • Кнопка "Включить/Отключить обновление геолокации" — включение/выключение обновления местоположения.
    • Кнопка "Назад" — возврат на предыдущий экран.
  • Логика:
    • Компас использует данные акселерометра и магнитометра для определения направления.
    • Стрелка компаса поворачивается в сторону выбранной цели.
    • Расстояние до цели обновляется в реальном времени.

4. Экран истории
HistoryScreen

История

  • Содержание:
    • Список ранее выбранных локаций с указанием запроса, даты и времени выбора.
    • Кнопка "Показать информацию о локации" для каждой локации — отображение адреса и названия цели.
    • Кнопка "Удалить локацию из истории" для каждой локации — удаление локации из истории.
    • Кнопка "Назад" — возврат на главный экран.
  • Логика:
    • Пользователь может просматривать историю выбранных локаций.
    • При клике по локации из истории приложение переходит на экран компаса, указывая направление на выбранную цель.
    • Долгим нажатием можно просматривать информацию о локации.
    • Локации можно удалять из истории.