GetLastKnownLocation () devuelve siempre la misma ubicación
Estoy tring para obtener la ubicación de la gps / netwrok por el mejor proveedor, pero siempre es volver a la misma ubicación, también puedo ver que en el mapa de google hay una señal a mi ubicación correcta. Por favor alguien puede decirme lo que estoy haciendo mal?
Mi actividad es:
- Samsung Nota 2 no puede llegar onLocationChanged ()
- NullpointerException al llamar a getSystemService (Context.LOCATION_SERVICE) y onLocationChanged no se llama
- Diálogo de progreso de Android show mientras espera la ubicación
- PendingIntents y Google Play Services - cómo hacer la limpieza
- ¿Puede DataBinding interferir con la localización de una actividad?
public class MainMenu2 extends Activity implements LocationListener, OnClickListener
En mi onCreate tengo:
if(isGooglePlay()){ setContentView(R.layout.menu_2); setUpMapIfNeeded(); }
Método isGooglePlay:
private boolean isGooglePlay() { // looks if googlemaps is available int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); if(status == ConnectionResult.SUCCESS){ return true; } else{ ((Dialog) GooglePlayServicesUtil.getErrorDialog(status, this, 10)).show(); //Toast.makeText(this, "Google Play is not available", Toast.LENGTH_SHORT).show(); return(false); } }//isGooglePlay
Método setUpMapIfNeeded:
private void setUpMapIfNeeded() { // Do a null check to confirm that we have not already instantiated the map. if (mMap == null) { mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.menu_map)) .getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { // The Map is verified. It is now safe to manipulate the map. mMap.setMyLocationEnabled(true); locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(ACCURACY_FINE); provider = locationManager.getBestProvider(criteria, true); if (provider == null){ onProviderDisabled(provider); } locationManager.requestLocationUpdates(provider, 100, 1, this); loc = locationManager.getLastKnownLocation(provider); //---here the privider is "gps" but always the same location---// if (loc != null){ onLocationChanged(loc); } mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); // set Map Type } } }//setUpMap
Y métodos de anulación:
@Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub LatLng latlng = new LatLng(location.getLatitude(),location.getLongitude()); mMap.moveCamera(CameraUpdateFactory.newLatLng(latlng)); mMap.animateCamera(CameraUpdateFactory.zoomTo(10)); double pLong = location.getLongitude(); double pLat = location.getLatitude(); Latstr = String.valueOf(pLong); Lngstr = String.valueOf(pLat); latitude = pLat; longitude = pLong; } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub Toast.makeText(this, "Please turn ON the GPS", Toast.LENGTH_SHORT).show(); } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override protected void onPause() { super.onPause(); locationManager.removeUpdates(this); } @Override protected void onResume() { super.onResume(); myLatLng = new LatLng(latitude,longitude); CameraUpdate update = CameraUpdateFactory.newLatLngZoom(myLatLng, 15); mMap.animateCamera(update); mMap.addMarker(new MarkerOptions().position(new LatLng(latitude,longitude )).title("Find me here!")); }
También traté de buscar aquí para similer problema, pero no tengo nada ..
- Comparando dos ubicaciones usando sus longitudes y latitud
- ¿Es posible obtener una notificación cuando se habilita / deshabilita cualquier proveedor de ubicación y determina qué acción se ha producido?
- ¿Necesito solicitar actualizaciones de ubicación al utilizar Geofences de ubicación fusionada?
- Android: LocationManager ajusta dinámicamente los umbrales minTime / minDistance
- Selección de la API de Google Places sólo determinados tipos de lugares
- ¿Cómo conseguir la ubicación gruesa usando Wifi o GSM o GPS, lo que esté disponible?
- Servicios de ubicación de Google contra servicios de ubicación de Android
- requestLocationUpdates () en un hilo independiente
Hay un error con LocationProvider en algunas plataformas como Samsung, Android personalizado construir. Es necesario llamar a este código (que en realidad no hace nada), lo que activa la caché de fondo del teléfono para actualizar su ubicación actual.
Si no me crees, cambia tu posición GPS a una ubicación diferente a unos 200 metros de distancia, carga tu aplicación, no te das cuenta del cambio de ubicación GPS. Ahora, solo tienes que cargar la aplicación de Maps en tu teléfono y de repente tu aplicación mostrará la ubicación actual.
Para hacer esto activar programaticamente estas líneas justo antes de su llamada getLastKnownLocation
.
HomeScreen.getLocationManager().requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(final Location location) { } });
Editar
O
Utilice el LocationClient de la nueva api en lugar de LocationProvider.
- Dibujar mapas de bits de recursos sobre otro
- Cambiar la barra de acción color del título Theme.AppCompat.Light.DarkActionBar android