cómo obtener longitud y latitud en android

Quiero encontrar la longitud y la latitud de mi ubicación actual, pero sigo obtener NULL .

double lat = loc.getLatitude(); //Cause the result is null, so can't know longitude and latitude double lng = loc.getLongitude(); LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); String provider = LocationManager.GPS_PROVIDER; Location location = locationManager.getLastKnownLocation(provider); //result is null! 

Este es el código para obtener el estado GPS. Funciona bien:

 public void onGpsStatusChanged(int event) { // get the GPS statue LocationManager locationManager = (LocationManager) GpsActivity.this.getSystemService(Context.LOCATION_SERVICE); GpsStatus status = locationManager.getGpsStatus(null); String satelliteInfo = updateGpsStatus(event, status); myTextView.setText(satelliteInfo);//work fine ,searched satellite:16 } }; private String updateGpsStatus(int event, GpsStatus status) { StringBuilder sb2 = new StringBuilder(""); if (status == null) { sb2.append("searched satellite number" +0); } else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) { int maxSatellites = status.getMaxSatellites(); Iterator<GpsSatellite> it = status.getSatellites().iterator(); numSatelliteList.clear(); int count = 0; while (it.hasNext() && count <= maxSatellites) { GpsSatellite s = it.next(); numSatelliteList.add(s); count++; } sb2.append("searched satellite number:" + numSatelliteList.size()); } return sb2.toString(); } 

getLastKnownLocation() sólo devuelve una corrección GPS reciente, si está disponible. Es necesario implementar un LocationListener y utilizar LocationManager#requestLocationUpdates() para buscar una nueva ubicación.


Implementación básica:

 public class Example extends Activity implements LocationListener { LocationManager mLocationManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if(location != null) { // Do something with the recent location fix // otherwise wait for the update below } else { mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); } } @Override public void onLocationChanged(Location location) { if (location != null) { Log.v("Location Changed", location.getLatitude() + " and " + location.getLongitude()); } } // etc.. } 
  • FINE_LOCATION tiene menos precisión que COARSE_LOCATION
  • Precisión de ubicación de Google Analytics para Android
  • ¿Es Fused Location Provider buena opción?
  • Prácticas recomendadas para informar de la ubicación del usuario continuamente
  • ¿Necesito solicitar actualizaciones de ubicación al utilizar Geofences de ubicación fusionada?
  • ¿Hay ventajas de usar FusedLocationProviderApi sobre LocationManager?
  • Uso de GoogleApiClient + LocationServices sin actualizar
  • Servicio GeoCoder no disponible
  • ¿Por qué FusedLocationApi.getLastLocation null
  • LocationManager's getBestProvider devolver null
  • ¿Cómo obtener la ubicación con Wifi en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.