strategies - locationlistener android
NETWORK_PROVIDER no proporciona ubicaciones actualizadas (5)
LocationManager locationManager = (LocationManager)getApp().getSystemService(Context.LOCATION_SERVICE); //getApp() returns my Application object
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 1, 1, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1, 1, this);
Ese es el código que estoy usando para escuchar. Con GPS habilitado, todo funciona bien. Sin embargo, si desactivo el GPS y confío en la ubicación de la red, me da resultados obsoletos, en este caso, desde hace dos días. No puedo conseguir que se actualice. Llamar a getLastKnownLocation devuelve los mismos resultados obsoletos.
Las actualizaciones de Google Maps están bien, así que sé que no es un problema de configuración de hardware / sistema.
Busqué en Google y encontré algunas personas con problemas similares, pero sin respuestas. He intentado dirigir mi proyecto al nivel de API 8 (2.2) así como a 15 (4.0.3). Mismos resultados Mi teléfono está ejecutando ICS.
También he intentado eliminar la solicitud de GPS_PROVIDER, así como incluir solicitudes de todo en getAllProviders (). El mismo trato.
¿Alguna idea de por qué NETWORK_PROVIDER no se está actualizando? Cualquier ayuda sería muy apreciada.
(PS No, normalmente no uso "1, 1" como mis parámetros de tiempo / distancia; solo lo cambié mientras lo depuraba).
EDITAR: Olvidé mencionar que sí, isProviderEnabled () devuelve true.
1) primero verifique si ha otorgado el permiso que se sugiere anteriormente. 2) debe asegurarse de que Internet está funcionando en su teléfono. 3) Por favor encuentre el siguiente código.
public void getLocationByNetworkProvider()
{
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 10, new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onLocationChanged(Location location) {
location.getLatitude(); location.getLongitude();
}
});
}`
Actualmente sospecho que se debe a que no se usa removeUpdates(listener)
en el cierre de la aplicación o en la actividad para destruir. Me he asegurado de implementar eso y espero que lo arregle. No puedo pensar en otra cosa.
--edit-- Esto no lo solucionó desafortunadamente.
Finalmente encontré una manera de resolver este problema (vea mi pregunta aquí ).
En mi caso en el S3 Galaxy Mini hubo síntomas similares (no hay actualizaciones de ubicación hasta que se reinicie ...) como los descritos anteriormente. La ubicación en la mayoría de los casos dejó de actualizarse cuando el dispositivo alcanzó condiciones de bajo consumo de energía, pero a veces simplemente sucedió incluso cuando el teléfono estaba completamente cargado. Obviamente, este es un problema en algún lugar del LocationManager
. Logré omitir LocationManager
utilizando la nueva API de Google Play Services para ubicaciones (clase LocationClient
).
Esta es probablemente la razón por la que las actualizaciones de ubicación aún funcionaban con Google Maps, porque Google Maps estaba usando la API de Google Play Services incluso antes de que se hiciera pública.
Le recomiendo que siga este enlace que muestra cómo utilizar la API de Play Services para obtener ubicaciones en lugar de utilizar LocationManager
si encuentra este problema.
Estoy ejecutando actualizaciones de ubicación con Play Services y ya no tuve ningún problema como este: sigo recibiendo actualizaciones regulares de ubicación en cualquier momento.
Tenga en cuenta que esto requerirá que el usuario tenga instalado Google Play en su dispositivo, por lo que Kindles y similares quedarán fuera de la imagen. También requiere un mínimo de Android 2.2.
Si está trabajando en un nuevo teléfono, debe verificar si ha aceptado todos los acuerdos en la aplicación de Google Maps. De lo contrario, no recibirá ninguna actualización de NETWORK_PROVIDER.
se puede usar así para actualizar la ubicación. Locationlistener funcionará para la ubicación ...
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.widget.TextView;
import android.util.Log;
public class MainActivity extends Activity implements LocationListener{
protected LocationManager locationManager;
protected LocationListener locationListener;
protected Context context;
TextView txtLat;
String lat;
String provider;
protected String latitude,longitude;
protected boolean gps_enabled,network_enabled;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtLat = (TextView) findViewById(R.id.textview1);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
txtLat = (TextView) findViewById(R.id.textview1);
txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
}
@Override
public void onProviderDisabled(String provider) {
Log.d("Latitude","disable");
}
@Override
public void onProviderEnabled(String provider) {
Log.d("Latitude","enable");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("Latitude","status");
}
}