NETWORK_PROVIDER no proporciona ubicaciones actualizadas

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 actualizarlo. Llamar a getLastKnownLocation devuelve los mismos resultados obsoletos.

Google Maps se actualiza perfectamente, 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. Intenté orientar mi proyecto al nivel de API 8 (2.2) y 15 (4.0.3). Mismos resultados Mi teléfono está ejecutando ICS.

También intenté eliminar la solicitud de GPS_PROVIDER, así como también incluir solicitudes para todo en getAllProviders (). El mismo trato.

¿Alguna idea de por qué NETWORK_PROVIDER no se está actualizando? Cualquier ayuda sería muy apreciada.

(PD No, normalmente no utilizo “1, 1” como mis parámetros de tiempo / distancia; simplemente lo cambié mientras lo depuraba).

EDITAR: Olvidé mencionar que sí, isProviderEnabled () devuelve verdadero.

    Finalmente encontré una forma de resolver este problema (vea mi pregunta aquí ).

    En mi caso en S3 Galaxy Mini hubo síntomas similares (sin actualizaciones de ubicación hasta el reinicio …) como los descritos anteriormente. La ubicación en la mayoría de los casos dejó de actualizarse cuando el dispositivo alcanzaba condiciones de baja energía, pero a veces simplemente sucedía incluso cuando el teléfono estaba completamente cargado. Obviamente, este es un problema en algún lugar del LocationManager . Me las arreglé para evitar LocationManager al usar la nueva API de Google Play Services para las ubicaciones (clase LocationClient ).

    Esta es probablemente la razón por la cual las actualizaciones de ubicación todavía estaban funcionando con Google Maps, porque Google Maps usaba la API de servicios de Google Play incluso antes de que se hiciera pública.

    Te recomiendo que sigas este enlace que muestra cómo usar la API de Play Services para obtener ubicaciones en lugar de utilizar LocationManager si encuentras este problema.

    Estoy ejecutando actualizaciones de ubicación con Play Services y ya no hay ningún problema como este: sigo recibiendo actualizaciones de ubicación regulares en cualquier momento.

    Tenga en cuenta que esto requerirá que el usuario tenga instalado Google Play en su dispositivo, por lo que Kindles y demás estarán fuera de la imagen. También requiere un mínimo de Android 2.2.

    Actualmente sospecho que es causado por no usar removeUpdates(listener) en el cierre de la aplicación o en la actividad ondestroy. Me he asegurado de implementar eso y espero que lo solucione. No puedo pensar en nada más.

    –edit– Esto no lo arregló, lamentablemente.

    1) primero, verifica si has otorgado el permiso sugerido anteriormente. 2) debes asegurarte de que Internet funciona en tu teléfono. 3) encuentre el código a continuación.

     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(); } }); }` 

    Si está trabajando en un teléfono nuevo, debe verificar si ha aceptado todos los acuerdos en la aplicación Google Maps; de lo contrario, no recibirá actualizaciones de NETWORK_PROVIDER.

    puede usarlo así para la ubicación de actualizació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"); } }