新卒グループ開発演習で位置情報を用いたAndroidアプリを開発しました。
以下は位置情報の取得に関する備忘録です。
実装要件
- 精度の高いGPSを優先的に利用して位置を取得
- GPSが利用できない場合は、基地局情報を用いて位置を取得
- 基地局情報も利用可能でない場合は位置情報に関する設定画面を開き、ユーザーに位置情報を使うことを促す
実装ポイント
Permissionの設定
- Android6.0からは、位置情報を用いるにはPermissionの設定が必要 ※そもそもPermissionとは
設定する位置情報関連のPermissionは2種類
- Fine : GPSデバイスを使った精度が高い位置情報を取得する
- Corse: ネットワークを使って、GPSが使えない屋内やビルの谷間などで大まかな位置情報を取得する
- AndroidManifestには以下のように書き加える
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
リスナーの登録
onLocationChanged
- 位置情報が変化すると、onLocationChangedがコールバックされる
- getLatitude()とgetLongitude()を使って緯度経度を取得
onProviderEnabled
- ロケーションプロバイダが利用可能になるとコールバックされる
onProviderDisabled
- ロケーションプロバイダが利用不可能になるとコールバックされる
onstatusChanged
- ロケーションステータスが変わるとコールバックされる
LocationManagerのインスタンス生成
isProviderEnabled
- 引数にとったロケーションプロバイダが利用可能かどうか調べる
requestLocationUpdates
- LocationManagerからrequestLocationUpdatesを使って位置情報をアップデートするメソッド
- 位置情報を使わなくなったら、removeUpdates を使って位置情報の更新をやめる必要がある
まとめると、このようになった
福成毅
2年目のiOSエンジニアです!