Je développe une application de cartographie en utilisant Eclipse 3.5.Pourquoi l'heure de mise à jour minimale de Location Manager est-elle remplacée lorsque l'emplacement change?
Je définis la période de mise à jour minimale avec la méthode requestLocationUpdates de LocationManager, via une activité de configuration. Lorsque je définis la propriété, je vois dans Logcat que le processus système définit la valeur OK. Lorsque j'émette un nouvel emplacement à partir du contrôle de l'émulateur DDMS et que l'emplacement change sur l'affichage de la carte, je vois que le processus système fixe alors le temps minimum à zéro.
Vous trouverez ci-dessous une capture des messages du journal du système. Vous pouvez voir que je règle la période à 32 secondes, puis 16, puis, après avoir envoyé un changement d'emplacement simulé, le système le met à zéro
La carte répond aux changements d'emplacement à l'emplacement change instantanément, même si ils sont envoyés seulement quelques secondes d'intervalle.
Est-ce que quelqu'un sait pourquoi mon système est surchargé?
10-26 22:21:09.770: DEBUG/GpsLocationProvider(54): setMinTime 32000
10-26 22:21:53.011: DEBUG/GpsLocationProvider(54): stopNavigating
10-26 22:21:57.810: DEBUG/GpsLocationProvider(54): setMinTime 16000
10-26 22:21:57.810: DEBUG/GpsLocationProvider(54): startNavigating
10-26 22:21:57.900: DEBUG/GpsLocationProvider(54): setMinTime 16000
10-26 22:22:39.099: DEBUG/GpsLocationProvider(54): TTFF: 41290
10-26 22:22:39.350: DEBUG/GpsLocationProvider(54): setMinTime 0
10-26 22:22:51.740: DEBUG/GpsLocationProvider(54): TTFF: 53925
10-26 22:22:51.820: DEBUG/GpsLocationProvider(54): setMinTime 0
10-26 22:22:56.780: DEBUG/GpsLocationProvider(54): TTFF: 58967
10-26 22:22:56.879: DEBUG/GpsLocationProvider(54): setMinTime 0
Code pertinent, ci-dessous, enableGPS() appelé onResume()
private void enableGPS() {
if (confData.getTrackMode() == AppConstants.GPS_ON) {
if (lm == null)
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
long updateMillis = confData.getMapUpdatePeriod() * 1000;
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
updateMillis, confData.getMapMinResendDistance(), this);
}
}
et de l'auditeur est
public void onLocationChanged(Location location) {
List<Overlay> overlays = mv.getOverlays();
lo = new MyLocationOverlay(this, mv);
overlays.add(lo);
lo.enableMyLocation();
int lat = (int) (location.getLatitude() * 1E6);
int lng = (int) (location.getLongitude() * 1E6);
GeoPoint point = new GeoPoint(lat, lng);
mc.setCenter(point);
mv.invalidate();
}
Montrez-nous votre code – Falmarri