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

Основные функции
- Поиск локаций: Найдите интересные места вокруг вас, основываясь на вашем запросе.
- Тайна и интрига: Неизвестно куда именно вы идёте, пока не доберётесь до цели.
- Компас: Интуитивная навигация с помощью стрелки компаса.
- Расстояние до цели: Отслеживайте, как близко вы находитесь к своей цели.
- Исследование новых мест: Откройте для себя новые маршруты и места, которые вы могли бы никогда не найти самостоятельно.
Как это работает?
-
Введите запрос Пользователь вводит текстовый запрос с описанием того, что он хочет найти (например, "уютное кафе" или "красивый парк"), и указывает радиус поиска относительно своего текущего местоположения.
-
Поиск локаций На основе вашего запроса и текущего местоположения приложение ищет подходящие места вокруг вас.
-
Список целей На экране отображается список найденных локаций. Вы видите только расстояние до каждой из них, но не их названия или адреса.
-
Выбор цели Выбирайте любую локацию, основываясь на расстоянии до неё.
-
Компас и навигация После выбора цели открывается экран с компасом. Используя датчик компаса вашего телефона, приложение направляет стрелку в сторону выбранной цели. Также отображается расстояние до неё. Ваша задача — добраться до цели, полагаясь только на направление и свою интуицию!
Для кого это приложение?
- Любители приключений: Для тех, кто хочет добавить элемент игры в свои прогулки.
- Фотографы: Отличный способ найти новые интересные места для съёмки.
- Путешественники: Исследуйте новые города и районы, полагаясь на удачу и интуицию.
- Все, кто хочет разнообразия: Избегайте привычных маршрутов и откройте для себя что-то новое.
Установка
- Скачайте APK-файл - Compass.apk
- Установите приложение на ваше Android-устройство.
- Откройте приложение и начните своё приключение!
Демонстрация работы приложения в презентации по ссылке
Технические детали реализации
Архитектура приложения
Приложение построено по принципу 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-ключ, который хранится в файле . Этот файл не включен в репозиторий для обеспечения безопасности.
Шаги для настройки API-ключа:
- Создайте файл
в корневой директории проекта, если его нет.local.properties - Добавьте API-ключ в файл
в следующем формате. Заменитеlocal.propertiesна ваш действительный ключ от 2ГИС (инструкция по получению ключа)ВАШ_API_КЛЮЧ
api.key=ВАШ_API_КЛЮЧ
Как это работает в проекте
API-ключ автоматически считывается из файла и добавляется в во время сборки проекта. Это позволяет использовать ключ в коде без его явного хранения в репозитории.
Описание пользовательского интерфейса (UI) и навигации
Приложение состоит из нескольких экранов, связанных между собой через навигацию
Визуализация навигации

Описание экранов
1. Главный экран MenuScreen

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

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

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

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