spChief/child-tracker-android

★ 0Forks 0KotlinGitHub ↗Compare

README

Child Tracker

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

Функциональность

  • ✅ Отслеживание местоположения в реальном времени
  • ✅ Работа в фоновом режиме через Foreground Service
  • ✅ Локальное хранение данных в Room Database
  • ✅ Автоматическая отправка данных на сервер при наличии связи
  • ✅ Очередь для отправки данных при отсутствии связи
  • ✅ Автозапуск приложения после перезагрузки устройства
  • ✅ Простой и интуитивный интерфейс

Архитектура

Приложение построено с использованием современных Android технологий:

  • Jetpack Compose - для UI
  • Hilt - для внедрения зависимостей
  • Room - для локального хранения данных
  • Retrofit - для сетевых запросов
  • WorkManager - для фоновой синхронизации
  • Google Play Services Location - для получения местоположения
  • MVVM - архитектурный паттерн

Структура проекта

app/src/main/java/com/spchief87/childtracker/
├── data/
│   ├── api/           # API интерфейсы и конфигурация
│   ├── database/      # Room Database и DAO
│   ├── model/         # Модели данных
│   └── repository/    # Repository для управления данными
├── di/                # Модули Hilt для внедрения зависимостей
├── receiver/          # BroadcastReceiver для автозапуска
├── service/           # Foreground Service для отслеживания
├── ui/
│   ├── theme/         # Тема приложения
│   └── viewmodel/     # ViewModel для UI
├── worker/            # WorkManager для синхронизации
├── ChildTrackerApplication.kt
└── MainActivity.kt

Настройка сервера

Для работы с сервером необходимо:

  1. Обновить URL в ApiModule.kt:
private const val BASE_URL = "https://your-server.com/api/"
  1. Сервер должен поддерживать следующие эндпоинты:

    • POST /location - для отправки одного местоположения
    • POST /locations/batch - для отправки пакета местоположений
  2. Формат данных, отправляемых на сервер:

{
  "deviceId": "уникальный_идентификатор_устройства",
  "latitude": 55.7558,
  "longitude": 37.6176,
  "accuracy": 10.0,
  "altitude": 150.5,
  "speed": 5.2,
  "bearing": 45.0,
  "timestamp": 1640995200000,
  "provider": "gps"
}

Разрешения

Приложение запрашивает следующие разрешения:

  • ACCESS_FINE_LOCATION - точное местоположение
  • ACCESS_COARSE_LOCATION - приблизительное местоположение
  • ACCESS_BACKGROUND_LOCATION - местоположение в фоне (Android 10+)
  • INTERNET - доступ к интернету
  • ACCESS_NETWORK_STATE - проверка состояния сети
  • RECEIVE_BOOT_COMPLETED - автозапуск после перезагрузки
  • FOREGROUND_SERVICE - работа в фоне
  • FOREGROUND_SERVICE_LOCATION - отслеживание местоположения в фоне

Использование

  1. Запустите приложение
  2. Предоставьте необходимые разрешения
  3. Нажмите "Начать отслеживание"
  4. Приложение будет отслеживать местоположение и сохранять данные локально
  5. При наличии интернета данные автоматически отправляются на сервер
  6. При отсутствии связи данные сохраняются в очереди и отправляются позже

Особенности

  • Данные сохраняются локально даже при отсутствии связи
  • Автоматическая очистка старых отправленных записей (через 7 дней)
  • Периодическая синхронизация каждые 15 минут
  • Уведомление в статус-баре при активном отслеживании
  • Автозапуск после перезагрузки устройства (если отслеживание было включено)
  • Уникальный идентификатор устройства для каждого запроса
  • Возможность просмотра deviceId в интерфейсе приложения

Следующие шаги

Для полной функциональности рекомендуется:

  1. Добавить аутентификацию пользователя
  2. Реализовать шифрование данных
  3. Добавить настройки точности и частоты отслеживания
  4. Реализовать просмотр истории местоположений
  5. Добавить уведомления о важных событиях

Contributors

spChief

Issues