2011-10-01 1 views
0

J'écris un service qui enregistre votre emplacement de gps toutes les 30 minutes. que dois-je écrire pour allumer un écouteur d'emplacement, attendez x minutes jusqu'à ce que ma position.accuracy soit inférieure à 25 mètres, puis désactivez l'écouteur d'emplacement.comment utiliser le gps de fond correctement dans android

À l'heure actuelle, ma méthode décharge trop de batterie et n'est pas acceptable.

Merci

+0

vérifier ce lien http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html – Sandeep

Répondre

0

je pourrais avoir un simple morceau de code ici pour vous. Lorsque vous démarrez le GPS, vous définissez simplement les limites de temps et de distance. Ne pas oublier également de tuer ceci lorsque vous quittez votre application (dernière méthode ci-dessous)

private static LocationListener gpsLocationListener = null;

/* GPS will not detach and update every 30 minutes if the delta > 25 meters */ 
private void getGPSLocation(Context context){ 
    gpsLocationListener = new GPSLocationListener(); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1800000, 25, gpsLocationListener); 
} 

private class GPSLocationListener implements LocationListener{ 
    public void onLocationChanged(Location location){ 
     if(location != null){ 
      final double lat = location.getLatitude(); 
      final double lng = location.getLongitude(); 
      // can do your other implementation here // 
     } 
    } 
    @Override 
    public void onProviderDisabled(String provider){ } 
    @Override 
    public void onProviderEnabled(String provider){ } 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras){ } 
} 

private void killGPS(){ 
    if(locationManager != null && gpsLocationListener != null){ 
     locationManager.removeUpdates(gpsLocationListener); } 
    } 
} 

Hope this helps

-serkan

+0

Im un Si je veux appeler cette méthode, dois-je utiliser GPSLocationListener.getGPSLocation (this) ou simplement getGPSLocation (this) (de ma classe principale splash.class) – Sean

+0

Si votre activité principale est Splash.java et Si c'est la dernière activité à tuer lorsque l'utilisateur quitte, alors c'est OK, vous pouvez appeler getGPSLocation (this) dans Splash. Cependant, si tuer votre splash après quelques secondes et amener l'utilisateur à une autre activité comme Home par exemple, ce code devrait vivre et getGPSLocation (this) devrait y être appelé (dans Home.java). J'espère que j'ai un sens ici Sean, laissez-moi savoir si vous avez besoin d'aide. – serkanozel

+0

Quand j'appelle get getGPSLocation (this) tout ce qu'il fait est d'allumer le gps correct? Que dois-je faire pour extraire les doubles de latitude et de longitude? – Sean

Questions connexes