android地理的位置情報の取得
2605 ワード
モバイルアプリケーションはGPSやネットワークで現在位置情報を取得することができ、一般的にGPSで地理位置を取得すると精度が高いことが多いが、通信条件の悪い場所では取得できない可能性があり、ネットワーク情報で地理位置を取得する精度はGPSより低いが、ネットワークがスムーズであれば地理位置情報を取得できることが保証される
地理情報を取得するには、まずAndroidManifest.xmlに地理情報を取得する権限を加え、(ACCESS_FINE_LOCATIONはアプリケーションがネットワーク情報から地理位置を取得することを許可し、ACCESS_COARSE_LOCATIONはアプリケーションがGPSから地理位置を取得することを許可する)
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"
地理的位置情報を取得する方法はandroidにカプセル化されている.locationパッケージでは、よく使われる方法は2つあります.getLastLocationとrequestLocationUpdatesで、前者は前回位置決めした地理的位置を取得し、後者は地理的位置の変化を傍受します.
getLastLocation:
LocationManager locManger = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if(!manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
/* */
}
// GPS
Location loc = locManger.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//
Location loc = locManger.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
requestLocationUpdates:
LocationManager manager = (LocationManager) getApp().getSystemService(Context.LOCATION_SERVICE);
if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { // LocationManager.GPS_PROVIDER
manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { // GPS_PROVIDER
@Override
public void onLocationChanged(Location location) {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public void onProviderEnabled(String s) {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public void onProviderDisabled(String s) {
//To change body of implemented methods use File | Settings | File Templates.
}
});
}