現在地を取得する LocationClient
- Android
-
2014-09-30
この記事は最終更新日から1年以上経過しています。
GoogleMapに限らず、位置情報を利用することは多いと思います。
LocationClientクラスを利用して位置情報を取得することができます。
GooglePlay開発者サービス(GooglePlayServices)を利用しますので、
プロジェクトにライブラリを組み込む必要があります。
導入方法は以下に書いていますのでご覧ください。
[Google Maps Android API v2]
今回、必要なインポートの抜粋。
import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks; import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.location.LocationClient; import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest;
Activityを継承したメインクラスにコールバックのクラスを実装します。
public class MainActivity extends Activity
implements
ConnectionCallbacks,
OnConnectionFailedListener,
LocationListener {
LocationRequestの設定をします。
private static final LocationRequest REQUEST = LocationRequest.create()
.setInterval(5000) // 5 seconds
.setFastestInterval(16) // 16ms = 60fps
//.setNumUpdates(3)
.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
| setInterval (long millis) | ミリ秒単位で位置情報更新の間隔を設定します。 |
| setFastestInterval (long millis) | ミリ秒単位で位置情報更新の正確な間隔を設定します。 |
| setNumUpdates (int numUpdates) | 位置情報の更新数を設定します。 |
| setPriority (int priority) | 位置情報取得要求の優先順位を設定します。 |
| PRIORITY_BALANCED_POWER_ACCURACY | 誤差約100m以内の精度 |
| PRIORITY_HIGH_ACCURACY | できる限り正確な位置 |
| PRIORITY_LOW_POWER | 誤差約10km以内の精度。電力消費を抑えられる。 |
| PRIORITY_NO_POWER | 消費電力なしで可能な限り最高の精度 |
onResumeにてLocationClientのインスタンスを生成し、接続します。
@Override
protected void onResume() {
super.onResume();
setUpLocationClientIfNeeded();
mLocationClient.connect();
}
onPauseで切断します。
@Override
public void onPause() {
super.onPause();
if (mLocationClient != null) {
mLocationClient.disconnect();
}
}
LocationClientのインスタンスを生成するメソッド
private void setUpLocationClientIfNeeded() {
if (mLocationClient == null) {
mLocationClient = new LocationClient(
this,
this, // ConnectionCallbacks
this); // OnConnectionFailedListener
}
}
GooglePlayサービスとの接続に失敗した時のイベント
@Override
public void onConnectionFailed(ConnectionResult arg0) {
Toast.makeText(this, "onConnectionFailed", Toast.LENGTH_SHORT).show();
}
GooglePlayサービスと接続時イベント
@Override
public void onConnected(Bundle arg0) {
Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
mLocationClient.requestLocationUpdates(
REQUEST,
this); // LocationListener
}
GooglePlayサービスとの切断時イベント
@Override
public void onDisconnected() {
Toast.makeText(this, "onDisconnected", Toast.LENGTH_SHORT).show();
}
位置情報が更新された時のイベント
@Override
public void onLocationChanged(Location location) {
Toast.makeText(this,
"緯度:" + location.getLatitude() + "\r\n" +
"経度:" + location.getLongitude(),
Toast.LENGTH_LONG).show();
}
ちなみに、LocationClientは既にdeprecatedとなっていますので、
今後は別のクラスで作成するようになってくるでしょう。
この記事がお役に立ちましたらシェアお願いします
10,428 views




