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 calcula la distancia entre dos ubicaciones
- Mantenga el mapa centrado, independientemente de dónde pinche el zoom en android
- ¿Quién está activando onLocationChanged en LocationManager en Android?
- Cómo simular la conducción de una ruta en el dispositivo real
- Maps api v2 android Mi ubicación no funciona en 2.3.3
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?
- No se puede encontrar la ubicación actual dentro del fragmento
- Cómo deshabilitar Android LocationListener cuando se cierra la aplicación
- encontrar la farmacia más cercana en google maps
- Creación de un objeto de ubicación de Android
- Google Maps API V2 Zoom a la ubicación actual
- Hacer que el proveedor de ubicación fusionado LocationClient sea más fácil de usar
- Solicitud del gestor de localizaciónLocalizaciónUpdates llamados una sola vez
- Cómo configurar "Tipos" en Google Place PlacePicker en Android?
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);