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.
                }
            });
        }