2010-10-22 6 views
5

J'ai le problème que mon service qui a la LocationListener implémentée, reçoit un GPSupdate toutes les 500ms il semble. Peu importe ce que minTime j'ai mis dans la fonction requestLocationUpdates.requestLocationUpdates ne met pas à jour sur l'intervalle dans Android

morceau de mon code:

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"); 
    } 
} 

D'un bouton dans mon activité principale i appellera startService(), après cela, il devrait fonctionner en arrière-plan, mais il donne des mises à jour en continu.

Répondre

1

Je vois quelques choses de mal à votre situation:

La précision du GPS est au mieux environ 3 mètres, et est dans des conditions optimales. Il n'est donc pas logique de demander une mise à jour si la position change de 1 mètre. Le bruit du GPS peut facilement indiquer un mouvement alors que l'appareil est immobile. Faire la minDistance au moins 10 serait ma recommandation.

Je ne vois pas pourquoi vous appelez isProviderEnabled() puisque vous ne faites rien avec la valeur retournée.

Vous dites qu'après le démarrage de startService() les choses devraient tourner en arrière-plan, mais ce n'est pas le cas. Un service ne s'exécute pas en arrière-plan, sauf si vous créez une sorte de thread d'arrière-plan pour cela. Il y a trop de choses à couvrir dans cette réponse pour expliquer comment fonctionnent les services. Aller en ligne et faire de la lecture, ou obtenir un bon livre sur le développement Android.

Questions connexes