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
アプリは以下の権限を要求します:
ACCESS_FINE_LOCATION
- 精密な位置情報ACCESS_COARSE_LOCATION
- おおよその位置情報FOREGROUND_SERVICE
- フォアグラウンドサービスFOREGROUND_SERVICE_LOCATION
- 位置情報フォアグラウンドサービスPOST_NOTIFICATIONS
- 通知表示
- Google Cloud Consoleでプロジェクトを作成
- Maps SDK for Android API を有効化
- API キーを作成し、Android アプリの制限を設定
- プロジェクトのルートディレクトリに
local.properties
ファイルを作成 - 以下の内容を追加:
MAPS_API_KEY=YOUR_API_KEY_HERE
重要: local.properties
ファイルは Git で管理されていません。各開発者が個別に設定する必要があります。
- Android Studio から実行してください。
-
アプリを起動
- 初回起動時に位置情報とプッシュ通知の権限を許可
-
GPS 記録の開始
- メイン画面でサービス開始ボタンをタップ
- バックグラウンドで位置情報の記録が開始
-
地図での確認
- ナビゲーションドロワーから「Map」を選択
- 記録された軌跡が地図上に表示
-
記録の停止
- メイン画面でサービス停止ボタンをタップ
カラム名 | 型 | 説明 |
---|---|---|
seq_time | String (PK) | 記録日時 (yyyyMMddHHmmss) |
label_id | Int | ラベル ID |
latitude | Double | 緯度 |
longitude | Double | 経度 |
accuracy | Float | 精度 (メートル) |
カラム名 | 型 | 説明 |
---|---|---|
id | Int (PK) | ラベル ID |
name | String | ラベル名 |
- 位置情報は端末内のローカルデータベースに保存されます
- 外部サーバーへのデータ送信は行いません
- Google Maps API キーは適切な制限を設定してください
- GPS 記録は継続的にバッテリーを消費します
- 必要に応じて記録を停止してください
- Android 12 (API 31) 以上が必要
- 最新の Google Play Services が必要
このプロジェクトは MIT ライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。