Posts Tagged ‘現在位置’

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

2015年5月17日

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

GPSの位置情報を取得する (Android)

2012年10月27日

AndroidでGPSの位置情報を取得してみます。

位置情報は、主にGPSと携帯基地局の情報から取得できます。

手順としては、まずLocationManagerを取得し

LocationManager lm =

(LocationManager) getSystemService(Context.LOCATION_SERVICE);

最後に取得した情報を取得するには LocationManagerのgetLastKnownLocation()を使用します。

そして、最新の情報を取得するには、LocationManagerのrequestLocationUpdates() を呼び出します。このとき、Location Provider(GPSまたは携帯基地局)を指定します。また、位置を取得した後の動作として、 LocationListenerを定義して通知を受ける方法と、Intentを指定する方法があります。

位置情報が更新されるとLocation Listener の onLocationChanged(Location location) が呼び出されます。ここで引数として与えられる Location が位置情報です。

通知を受け取らないようにする(位置情報の取得を停止する)には removeUpdates()を呼び出します。

参考資料