longitude - get location google android
locationManager.getLastKnownLocation() return null (5)
Cuando usa el GPS como proveedor, obtiene su resultado en 1 a 2 millas por lo que debe verificarlo polémicamente cuando se detiene la ubicación y Network Provider le proporciona la ubicación inmediata cuando lo solicita. Por lo tanto, no obtienes Latitud de ubicación inmediata en el proveedor de GPS.
El GPS toma 1 a 2 solo la primera vez y después le dará la ubicación en la llamada ...
No entiendo por qué locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
devolver la ubicación nula. Le di todo el permiso, pero su reutning null
.
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
En referencia a la documentación , devuelve nulo, si el dispositivo no tiene conocimiento de la última ubicación conocida. Probablemente el GPS no pueda ubicarte. Tarda aproximadamente un minuto o más, de todos modos. Intente salir, bajo el cielo despejado, lejos de edificios altos, y espere hasta que el GPS pueda ubicarlo.
Tenía exactamente el mismo problema. Fue porque mi dispositivo no estaba almacenando una última ubicación conocida. Simplemente fui a Google Maps e identifiqué mi ubicación con GPS, luego se devolvió un valor para getLastKnownLocation ()
Utilicé este método para obtener la ubicación, creo que te ayudará
private void startReceivingLocationUpdates() {
if (mLocationManager == null) {
mLocationManager = (android.location.LocationManager)
mContext.getSystemService(Context.LOCATION_SERVICE);
}
if (mLocationManager != null) {
try {
mLocationManager.requestLocationUpdates(
android.location.LocationManager.NETWORK_PROVIDER,
1000,
0F,
mLocationListeners[1]);
}
catch (SecurityException ex)
{
Log.i(TAG, "fail to request location update, ignore", ex);
}
catch (IllegalArgumentException ex)
{
Log.d(TAG, "provider does not exist " + ex.getMessage());
}
try {
mLocationManager.requestLocationUpdates(
android.location.LocationManager.GPS_PROVIDER,
1000,
0F,
mLocationListeners[0]);
if (mListener != null) mListener.showGpsOnScreenIndicator(false);
}
catch (SecurityException ex) {
Log.i(TAG, "fail to request location update, ignore", ex); }
catch (IllegalArgumentException ex) {
Log.d(TAG, "provider does not exist " + ex.getMessage()); }
Log.d(TAG, "startReceivingLocationUpdates");
}
}
Puede solicitar actualizaciones de ubicación como esta
mLocationManager.requestLocationUpdates(myProvider, 0, 0, locationChangeListener);
luego en la primera devolución de llamada en locationChangeListener.onLocationChanged
establece tus coordenadas. No olvides llamar a mLocationManager.removeUpdates(locationChangeListener)