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 GPS y confío en la ubicación de la red, me da resultados obsoletos – en este caso, de hace dos días. No puedo conseguir que se actualice. Llamar getLastKnownLocation devuelve los mismos resultados obsoletos.
Google Maps se actualiza muy bien, así que sé que no es un problema de configuración de hardware / sistema.
- LocationManager requestLocationUpdates no funciona
- obtener geolocalización después de 20 segundos
- Asistencia de inyección de datos en GPS
- Inicio de LocationManager como servicio Android
- Forzar la alerta de proximidad para usar Proveedor de red
He buscado por todo el mundo, y he encontrado algunas personas con problemas similares, pero sin respuestas. He intentado apuntar mi proyecto a API nivel 8 (2.2) así como 15 (4.0.3). Mismos resultados. Mi teléfono está ejecutando ICS.
También he intentado quitar la petición para GPS_PROVIDER, así como incluir las peticiones para todo en getAllProviders (). Mismo trato
¿Alguna idea de por qué NETWORK_PROVIDER no 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é al depurar esto.)
EDIT: He olvidado mencionar que sí, isProviderEnabled () devuelve true.
- La devolución de llamada OnLocationChanged nunca se llama
- Android GPS Localización Velocidad no fiable
- Ubicación de Android getBearing () devuelve siempre 0
- Android: envía los datos de la ubicación en segundo plano periódicamente (cada 30 segundos) y solicita al servidor nuevos datos
- Administrador de Ubicaciones ProxmityAlert siempre dice entrar
- LocationManager.isProviderEnabled (LocationManager.NETWORK_PROVIDER) no es fiable, ¿por qué?
- OnLocationChanged no se llama automáticamente
- SetTestProviderLocation () no activa la llamada de onLocationChanged ()
Finalmente encontré una manera de resolver este problema (ver mi pregunta aquí ).
En mi caso en S3 Galaxy Mini hubo síntomas similares (no hay actualizaciones de ubicación hasta el reinicio …) como los descritos anteriormente. En la mayoría de los casos, la ubicación dejó de actualizarse cuando el dispositivo llegó a condiciones de bajo consumo de energía, pero a veces se produjo incluso cuando el teléfono estaba completamente cargado. Obviamente este es un problema en algún lugar del LocationManager
. He logrado 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 todavía estaban funcionando con Google Maps, ya que Google Maps usaba Google Play Services API incluso antes de que se hiciera público.
Te recomiendo que sigas este enlace que muestra cómo usar la API de Play Services para obtener ubicaciones en lugar de usar LocationManager
si te encuentras con este problema.
Im corriendo las actualizaciones de ubicación con Play Services y no había absolutamente ningún problema como este más – sigo recibiendo actualizaciones regulares de la 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 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 apagado o la actividad de la aplicación. Me he asegurado de implementar eso y espero que lo corrija. No puedo pensar en otra cosa.
–edit– Esto no lo arregló por desgracia.
1) primero comprueba si tiene el permiso que se sugiere arriba. 2) usted debe estar seguro de que Internet está funcionando en su teléfono. 3) encuentre por favor el código abajo.
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 nuevo teléfono, debe comprobar si ha aceptado todos los acuerdos en la aplicación Google Maps, de lo contrario no recibirá ninguna actualización de NETWORK_PROVIDER.
Usted puede utilizar como esto para la ubicación de la actualización. Localizador de la localización trabajará para la localizació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"); } }