Android: Obtener una posición GPS rápidamente
Necesito encontrar una localización del GPS dentro de mi app que no necesita ser exacta (apenas alrededor de 1km de la exactitud) pero la necesito muy rápidamente ! (1s – 5s)
Registro a este oyente:
- Cómo obtener coordenadas de una dirección en android
- ¿Cómo utilizar mejor los datos GPS?
- Seguimiento GPS eficiente en energía
- Cómo superar la adquisición de señales GPS
- ¿Cómo obtener la ubicación actual de GPS (latitud-longitud) con la API de Google en la aplicación de Android?
mlocListener = new MyLocationListener(); mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
Pero eso lleva demasiado tiempo para encontrar una solución! ¿Alguien sabe un método con el que puedo encontrar la ubicación más rápido (básicamente sólo necesita la ciudad actual del dispositivo está en). ¡Gracias!
- ¿Cómo obtener la latitud y longitud actuales sin utilizar el método getLastKnownLocation en Android?
- Q. Ubicación GPS de Android
- Detectar o impedir si el usuario utiliza una ubicación falsa
- El emulador de Android no puede reconocer que el GPS está habilitado
- Convertir latitud y longitud en esri arcGIS MapPoint
- ¿Cómo puedo comprobar si el GPS está habilitado antes de intentarlo?
- Correcciones DGPS en Android
- Ubicación por dirección IP en interiores
Para ello, puede definir sus criterios utilizando Criterios.
public void setCriteria() { Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_MEDIUM); provider = locationManager.getBestProvider(criteria, true); }
Para más información, consulte este enlace .
A continuación, utilice el proveedor para obtener su ubicación.
Espero que esto ayude …
Puesto que usted no necesita la localización getLastKnownLocation
muy fina y usted la necesita rápidamente, usted debe utilizar getLastKnownLocation
. Algo como esto:
LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE); Criteria crit = new Criteria(); crit.setAccuracy(Criteria.ACCURACY_COARSE); String provider = lm.getBestProvider(crit, true); Location loc = lm.getLastKnownLocation(provider);
Edit: Android dev blog tiene un buen post aquí en hacer esto. Este fragmento del blog itera sobre todos los proveedores de ubicación para obtener la última ubicación conocida. Esto parece ser lo que usted necesita
List<String> matchingProviders = locationManager.getAllProviders(); for (String provider: matchingProviders) { Location location = locationManager.getLastKnownLocation(provider); if (location != null) { float accuracy = location.getAccuracy(); long time = location.getTime(); if ((time > minTime && accuracy < bestAccuracy)) { bestResult = location; bestAccuracy = accuracy; bestTime = time; } else if (time < minTime && bestAccuracy == Float.MAX_VALUE && time > bestTime){ bestResult = location; bestTime = time; } } }