如何通过GPS获取用户的位置,如果网络不可用

时间:2015-03-16 02:13:06

标签: android gps location

我是android开发的新手,因此对获取用户位置感兴趣!!!!!

您可能知道我们可以通过两种类型访问用户位置:

GPS (ACCESS_FINE_LOCATON) 基于网络 (ACCESS_COARSE_LOCATION)

我的问题是:

  

我希望通过GPS获取用户的位置(latittude&经度)。 但是,如果用户已关闭GPS关闭/ GPS不支持,那么我想通过网络或基于网络的位置获取用户的位置

希望你理解我的问题.... 接受任何帮助

3 个答案:

答案 0 :(得分:1)

当您使用FusedLocationProviderApigetting the last known location training中使用的receiving location updates training时,如果GPS不可用,它将自动回退到网络位置。

答案 1 :(得分:1)

希望获得GPS代码可以帮助你。

    if (Common.getIsGPSEnabled()) {
        final LocationManager locationManager = (LocationManager) c.getSystemService(Context.LOCATION_SERVICE);
        LocationListener locationListener;
        locationListener = new LocationListener() {
            public void onLocationChanged(Location location) {  
                myLocation = locationManager.getLastKnownLocation(locationProvider);  
                Toast.makeText(c, "location changed, My location is removed to"
                + myLocation.getLatitude()+","+myLocation.getLongitude(), Toast.LENGTH_LONG).show(); 
                Latitude = myLocation.getLatitude(); 
                Longitude = myLocation.getLongitude();
            }

            public void onStatusChanged(String provider, int status, Bundle extras) {}

            public void onProviderEnabled(String provider) {}

            public void onProviderDisabled(String provider) {}
          };
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        locationManager.requestLocationUpdates(locationProvider, (long)0, (float)0, locationListener); 
        myLocation = locationManager.getLastKnownLocation(locationProvider);
        if(myLocation != null)
        { 
               ///
        }
    }

答案 2 :(得分:1)

请尝试以下代码:

 LocationManager mlocManager; 
        mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
                    mlocListener = new MyLocationListener(); 
        //if condition to check if GPS is available 
if (mlocManager                   .isProviderEnabled(LocationManager.GPS_PROVIDER)) {                         mlocManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, 
                                mlocListener, null); 
                    } 
       else if (mlocManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 
                        mlocManager.requestSingleUpdate( 
                                LocationManager.NETWORK_PROVIDER, mlocListener, null); 
                    } 


        //this is the class to get the location. 
            public class MyLocationListener implements LocationListener { 

                @Override 
                public void onLocationChanged(Location location) { 
                    // TODO Auto-generated method stub 
                    try { 
    //you may store these values where ever required.  
                        Double latitude =  location.getLatitude();      
                        Double longitude =  location.getLongitude(); 
                    } catch (Exception e) {
                        e.printStackTrace();

                    } 

                } 

                @Override 
                public void onStatusChanged(String provider, int status, Bundle extras) {
                    // TODO Auto-generated method stub 

                } 

                @Override 
                public void onProviderEnabled(String provider) {
                    // TODO Auto-generated method stub 

                } 

                @Override 
                public void onProviderDisabled(String provider) {
                    // TODO Auto-generated method stub 

                } 

            }