FusedLocationApiで現在位置を取得(Android)

GoogleMap.OnMyLocationChangeListener なるものを使おうと思ったのですが、APIのドキュメントを見ると 、このInterfaceは”Deprecated” なので FusedLocationApi を使うように、と書いてあり、素直に従うことにします。

FusedLocationApi を利用するために、まずGoogleApiClientを作成します。

mClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mClient.connect();

この例では、呼び出し元クラスにGoogleApiClient.ConnectionCallbacksとGoogleApiClient.OnConnectionFailedListenerを実装し、Connectionの成否をコールバックで受け取るようにしています。GoogleApiClientのConnectが成功したら、FusedLocationApi.requestLocationUpdates() をコールします。Updateされた情報を受け取るために、呼び出し元クラスにLocationListener も実装しておきます。

//GoogleApiClient.ConnectionCallbacks
public void onConnected (Bundle connectionHint)
{
LocationServices.FusedLocationApi.requestLocationUpdates(mClient, LocationRequest.create(), this);
}

位置情報が更新されるとLocationListener.onLocationChanged() が呼び出されるので、そこで位置情報を取得します。下の例では、この位置情報を元にGoogleMapの表示位置を移動させています。

//LocationListener
public void onLocationChanged (Location location)
{
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ll, 13));

}

参照リンク
Receiving Location Updates
Making Your App Location-Aware

タグ: , , , ,

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください