Skip to content

yamichi77/fused-location-test-app

Repository files navigation

Fused Location Test App

Android の Fused Location Provider API を使用した GPS ロガーアプリケーション

概要

このアプリケーションは、Android 端末の位置情報を取得し、データベースに記録する GPS ロガーです。アプリケーション内で精度や取得間隔の変更ができ、Fused Location Provider API のテストを行えます。

主な機能

位置情報取得

  • Fused Location Provider API を使用した高精度な位置情報取得
  • バックグラウンドサービスによる継続的な位置情報記録
  • 精度(accuracy)の記録

地図表示

  • Google Maps API を使用した地図表示
  • 記録された位置情報の軌跡表示
  • 色分けされた複数の軌跡表示

データ管理

  • Room データベースによる位置情報の永続化
  • ラベル機能による軌跡の分類
  • 日時、緯度、経度、精度の記録

通知機能

  • フォアグラウンドサービスの通知表示
  • 位置情報取得状況の通知

技術スタック

開発環境

  • 言語: Kotlin
  • 最小 SDK: API 35 (Android 12+)
  • ターゲット SDK: API 35
  • ビルドツール: Android Gradle Plugin 8.8.0

主要ライブラリ

  • 位置情報: Google Play Services Location 21.3.0
  • 地図: Google Play Services Maps 19.1.0
  • データベース: Room 2.6.1
  • UI:
    • Material Design Components 1.12.0
    • Navigation Component 2.8.7
    • View Binding
  • 非同期処理: Kotlin Coroutines

アーキテクチャ

  • パターン: MVVM (Model-View-ViewModel)
  • データベース: Room (SQLite)
  • サービス: フォアグラウンドサービス

プロジェクト構成

app/src/main/java/com/yamichi77/fusedlocationtestapp/
├── MainActivity.kt                 # メインアクティビティ
├── constants/                      # 定数クラス
├── data/                          # データ層
│   ├── AppDatabase.kt             # Room データベース
│   ├── DatabaseModule.kt          # データベースモジュール
│   ├── dao/                       # Data Access Object
│   └── entity/                    # エンティティクラス
│       ├── TMoveLog.kt           # 移動ログエンティティ
│       └── TLabel.kt             # ラベルエンティティ
├── service/
│   └── GPSLoggerService.kt       # GPS記録サービス
└── ui/                           # UI層
    ├── home/                     # ホーム画面
    └── map/                      # 地図画面
        ├── MapFragment.kt
        └── MapViewModel.kt

セットアップ

1. 必要な権限

アプリは以下の権限を要求します:

  • ACCESS_FINE_LOCATION - 精密な位置情報
  • ACCESS_COARSE_LOCATION - おおよその位置情報
  • FOREGROUND_SERVICE - フォアグラウンドサービス
  • FOREGROUND_SERVICE_LOCATION - 位置情報フォアグラウンドサービス
  • POST_NOTIFICATIONS - 通知表示

2. Google Maps API キーの設定

  1. Google Cloud Consoleでプロジェクトを作成
  2. Maps SDK for Android API を有効化
  3. API キーを作成し、Android アプリの制限を設定
  4. プロジェクトのルートディレクトリに local.properties ファイルを作成
  5. 以下の内容を追加:
MAPS_API_KEY=YOUR_API_KEY_HERE

重要: local.properties ファイルは Git で管理されていません。各開発者が個別に設定する必要があります。

3. ビルドと実行

  • Android Studio から実行してください。

使用方法

  1. アプリを起動

    • 初回起動時に位置情報とプッシュ通知の権限を許可
  2. GPS 記録の開始

    • メイン画面でサービス開始ボタンをタップ
    • バックグラウンドで位置情報の記録が開始
  3. 地図での確認

    • ナビゲーションドロワーから「Map」を選択
    • 記録された軌跡が地図上に表示
  4. 記録の停止

    • メイン画面でサービス停止ボタンをタップ

データベーススキーマ

t_move_log (移動ログ)

カラム名 説明
seq_time String (PK) 記録日時 (yyyyMMddHHmmss)
label_id Int ラベル ID
latitude Double 緯度
longitude Double 経度
accuracy Float 精度 (メートル)

t_label (ラベル)

カラム名 説明
id Int (PK) ラベル ID
name String ラベル名

注意事項

プライバシーとセキュリティ

  • 位置情報は端末内のローカルデータベースに保存されます
  • 外部サーバーへのデータ送信は行いません
  • Google Maps API キーは適切な制限を設定してください

バッテリー使用量

  • GPS 記録は継続的にバッテリーを消費します
  • 必要に応じて記録を停止してください

対応 OS

  • Android 12 (API 31) 以上が必要
  • 最新の Google Play Services が必要

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。

About

AndroidのFused Locationに関するテストアプリのリポジトリ

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages