Androidアプリケーションの開発 【03:GPS位置情報取得アプリ】

GPSを利用した簡単な位置情報取得アプリの作成

GPSを起動して簡単に位置情報を取得するアプリを作成してみます。
Androidエミュレーターでのみ動作確認を前提に以下の条件で作成します。

  • 詳細な権限(パーミッション)チェック処理は省略する。
  • 位置情報のバックグランドでの記録保持は無し。

パーミッションの設定

位置情報関連の権限は、FineとCoarseの2種類です。
AndroidManifestに以下の設定をします。

  • Fine : GPSデバイスを使った精度が高い位置情報を取得します。
  • Corse : ネットワークを使って、GPSが使えない屋内やビルの谷間などで大まかな位置情報を取得します。

パーミッションのチェック

Fine か Corseのいずれかのパーミッションが得られているかチェックします。
パーミッションのチェックが許可されない例外は、あまり考えないで実装します。

パーミッションチェックのリクエスト結果を受け取ります。

LocationManagerのインスタンス生成

位置情報を管理している LocationMnager のインスタンスを生成します。

リスナーの登録

Activityに LocationListener を登録します。

位置情報のアップデート

LocationManagerからrequestLocationUpdatesを使って位置情報をアップデートするメソッドを呼び出します。

  • String provider:GPSを使う場合は LocationManager.GPS_PROVIDER、ネットワークの場合は           LocationManager.NETWORK_PROVIDE を設定します。
  • long minTime:最小時間間隔[msec]、消費電力に大きく関係します。
  • float minDistance:最小距離間隔[m]、アップデートでの最小距離です。
  • LocationListener listener:登録したリスナーです。

位置情報の通知

位置情報が通知されるごとにonLocationChangedにてgetLatitude()getLongitude()を使って緯度経度を取得します。

まとめると以下のようになります。

MainActivity.java

AndroidManifest.xml

レイアウトは、緯度・経度を表示するだけです。
activity_main.xml

アプリケーションの実行

エミュレータを起動して、アプリを実行します。
パーミッションの確認ダイアログが表示されるので許可します。

エミュレータの右下にあるMore「…」をクリックしてExtended controlsを開きます。
「Location」のタグから「latitude」「longitude」に数値を設定して「SEND」をクリックすると、アプリに緯度経度が表示されます。