2014-08-29 2 views
0

Я использую android 4.4.2, и я пытаюсь получить координаты местоположения устройства без успеха.Android 4.4.2 - Получить координаты местоположения устройства

Это код, я использую:

На манифеста:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

О классе:

private double[] getLastBestLocation() { 
      LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
      List<String> providers = lm.getProviders(true); 

      /* Loop over the array backwards, and if you get an accurate location, then break out the loop*/ 
      Location l = null; 

      for (int i=providers.size()-1; i>=0; i--) { 
        l = lm.getLastKnownLocation(providers.get(i)); 
        if (l != null) break; 
      } 

      double[] gps = new double[2]; 
      if (l != null) { 
        gps[0] = l.getLatitude(); 
        gps[1] = l.getLongitude(); 
      } 
      return gps; 
    } 

Я пробовал разные ответы, предоставленные на SO , в частности:

How do I get the current GPS location programmatically in Android?
How to get Android GPS location

Пожалуйста, не отмечайте этот вопрос дублируется, так как другие ответы не решить мою проблему.

ответ

0

Этот код использует как GPS, так и сеть для нахождения местоположения.

locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE); 

// getting GPS status 
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

if (isGPSEnabled) { 
    if (location == null) { 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES, this, null); 
     if (locationManager != null) { 
      location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     if (location != null) { 
      latitude = location.getLatitude(); 
      longitude = location.getLongitude(); 

      return location; 
      } 
     } 
    } 
} 
// getting network status 
isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

if (isNetworkEnabled) { 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this, null); 
    Log.v("Network", "Network is enabled"); 
    if (locationManager != null) { 
     location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     if (location != null) {       
      latitude = location.getLatitude(); 
      longitude = location.getLongitude(); 
      Log.v("LocationTracker", "Location : "+latitude+", "+longitude); 
     } 
     else 
     { 
       Log.v("LocationTracker", "Location is null"); 
     } 
    } 
    else 
    { 
     Log.v("LocationTracker","Location manager is null"); 
    } 
} 
Смежные вопросы