GetLastKnownLocation devuelve null
He leído algunas preguntas sobre esto, pero no encontré la respuesta que necesitaba.
Por lo tanto, el caso es que tengo mi mapa establecido, y quiero agarrar mi ubicación actual gps. He comprobado que mis variables no son NULL pero aún así mi resultado de:
- Android escribe EXIF Latitude y Longitud GPS en JPEG falló
- Criterios de LocationManager de Android
- Activar servicios de ubicación sin navegar a la página de configuración
- Cómo obtener la ubicación del usuario Android
- Descubra la velocidad del usuario en android Utilizando GPS
getLastKnownLocation(provider, false);
Me da null sin embargo, así que aquí es donde necesito ayuda. He añadido permisos para la ubicación COARSE + FINE. Pero normalmente tengo todo tipo de datos de red deshabilitados para mi teléfono, porque no estoy muy contento con los gastos de flujo de datos impredecibles en mi cuenta de teléfono. Así que sólo tengo WiFi habilitado y conectado para esta prueba.
¿Hay algo más que debo habilitar para que esto sea posible? Yo creo que WiFi debería ser suficiente?
- Cómo implementar onConnectionFailed () y onDisconnected () para un servicio de ubicación
- La ubicación devuelve 0.0 con WIFI / 3G / 4G en Lollipop 5.0.2
- Android - LocationManager vs FusedLocation
- encontrar la farmacia más cercana en google maps
- Intervalo de actualización en requestLocationUpdates
- Servicios de Google Play para Android. Localización cliente no actualización ubicación si wifi deshabilitado
- Obtener la lista de lugares que rodean la ubicación actual del usuario
- Cómo obtener el lugar actual mediante Google Place API
Utilice este método para obtener la última ubicación conocida:
LocationManager mLocationManager; Location myLocation = getLastKnownLocation(); private Location getLastKnownLocation() { mLocationManager = (LocationManager)getApplicationContext().getSystemService(LOCATION_SERVICE); List<String> providers = mLocationManager.getProviders(true); Location bestLocation = null; for (String provider : providers) { Location l = mLocationManager.getLastKnownLocation(provider); if (l == null) { continue; } if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy()) { // Found best last known location: %s", l); bestLocation = l; } } return bestLocation; }
Está intentando obtener la ubicación en caché del proveedor de red. Tienes que esperar unos minutos hasta que consigas una solución válida. Dado que el caché del proveedor de red está vacío, obviamente obtienes un valor nulo.
Añadir este código
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; }
Antes de la función:
locationManagerObject.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new LocationListener())
, así como la función: locationManagerObject.getLastKnownLocation(LocationManager.GPS_PROVIDER)
Reemplazar la línea con
Location location = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);