2010-10-22 9 views
5

Tengo el problema de que mi servicio que tiene el LocationListener implementado, recibe un GPSUpdate cada 500 ms, parece. No importa qué minTime puse en la función requestLocationUpdates.requestLocationUpdates no se actualiza en el intervalo en Android

Pedazo de mi código:

public class LocationService extends Service implements LocationListener { 

    LocationManager locMan; 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER; 
     locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 1, this); 

    } 

    public void onLocationChanged(Location location) { 
     Log.d("Loc", "Location has been changed"); 
    } 
} 

Desde un botón en mi actividad principal llamará StartService(), después de esto se debe ejecutar en segundo plano pero ofrece actualizaciones continuas.

Respuesta

1

veo algunas cosas mal con su situación:

La precisión del GPS es en el mejor de unos 3 metros, y que está en condiciones óptimas. Por lo tanto, no tiene sentido solicitar una actualización si la posición cambia en 1 metro. El ruido del GPS podría indicar fácilmente movimiento cuando, de hecho, el dispositivo está quieto. Hacer la minDistance al menos 10 sería mi recomendación.

No veo por qué está llamando a isProviderEnabled() ya que no hace nada con el valor devuelto.

Usted dice que después de startService() las cosas se deberían ejecutar en segundo plano, pero ese no es el caso. Un servicio no se ejecuta en segundo plano a menos que cree algún tipo de hilo de fondo para él. Hay mucho que cubrir en esta respuesta para explicar cómo funcionan los servicios. Vaya en línea y lea un poco, u obtenga un buen libro sobre el desarrollo de Android.

Cuestiones relacionadas