Android Localización de errores
-
01-10-2019 - |
Pregunta
he señalado a mi problema de unas pocas líneas de código
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 5.0f, this);
lat = location.getLatitude();
lng = location.getLongitude();
//lat = new Double(40.431682);
//lng = new Double(-74.2021819);
pLocation = new GeoPoint((int)(lat * 1000000), (int)(lng * 1000000));
Mi onLocationChanged Si se preguntan
public void onLocationChanged(Location location) {
if (location != null) {
lat = location.getLatitude();
lng = location.getLongitude();
pLocation = new GeoPoint((int)(lat * 1000000), (int)(lng * 1000000));
}
}
Mi aplicación se bloquea si trato de conseguir el LastKnownLocation
Pero funciona bien si me alimento que es una ubicación manualmente
No tengo idea de cuál es actualmente mal
Solución
En primer lugar, cada vez que reciba un choque, el uso adb logcat
, DDMS, o la perspectiva DDMS en Eclipse Java para obtener el Seguimiento de la pila asociada con el accidente. En este caso, sospecho que usted encontrará que usted tiene un NullPointerException
al intentar utilizar el objeto location
.
No se puede utilizar getLastKnownLocation()
hasta bien después de llamar requestLocationUpdates()
, sobre todo para el GPS. Se puede tomar decenas de segundos para que el GPS empezar a proporcionar correcciones.
Por favor, alterar su código para eliminar el uso de getLastKnownLocation()
y sólo tiene que utilizar la lógica necesidad de la ubicación ya está en su método onLocationChanged()
. Como mínimo, la mirada de un objeto null
location
y no tratar de usarlo.
Otros consejos
Mi solución era básicamente sólo lugar utilización gruesa.
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
String bestProvider = lm.getBestProvider(criteria, true);
Location loc = lm.getLastKnownLocation(bestProvider);
lat = loc.getLatitude();
lng = loc.getLongitude();
Esto puede suceder porque la ubicación precisa (GPS) no está habilitado en su dispositivo. O el permiso ACCESS_FINE_LOCATION no se especifica en el manifiesto.
apuesto a que si se depura verá excepción nula. Por lo tanto, se debe a que usted está tratando de latitud y longitud del extracto de ubicación que no se fije todavía. Surround esta extracción con si (loc! = Null) {} y se puso a progressDialog usuario espera allí