2016-10-26 2 views
0

Iam développer une application qui effectue des calculs de force de signal de terrain chaque seconde en utilisant Handler et pendant la période Handler, il enregistre les coordonnées et enregistre les résultats & les coordonnées. Cela fonctionne bien sauf quand de vrais essais et quand j'augmente la vitesse du véhicule les coordonnées enregistrées ne sont pas toutes les secondes tandis que quelques fois toutes les 2-3-4 secondes qui ne sont pas acceptées par moi. Le code ci-dessous:Emplacement Mises à jour


final LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,  0, this); 

publicvoid method_01(LocationManager locationManager){ 

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 

@Override 
public void run() { 
Location locationDataRate =  locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
double latitude = locationDataRate.getLatitude(); 
double longitude = locationDataRate.getLongitude(); 
x=y+1; 
Save to file (latitude,longitude,x); 
handler.postDelayed(this, 1000); 
} 
}, 1000); 

} 

J'ai essayé aussi de changer l'heure et min. distance à (1000,0)

+0

Vous devez souscrire à l'emplacement change locationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 2000, 1F, yourListener); –

Répondre

0

Tout d'abord, si vous souhaitez recevoir une mise à jour toutes les secondes, vous ne devez pas demander de mises à jour plus fréquentes. Par conséquent:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this); 

Quoi qu'il en soit, les meilleures pratiques pour la gestion des mises à jour de localisation ne sont pas mise en boucle persistante getLastKnownLocation, mais la mise en œuvre du rappel des mises à jour de l'emplacement. Il y a un paquet d'exemples here.

à votre question, dans le doc ils indiquent que l'intervalle entre les mises à jour à jamais garanti:

L'intervalle de mise à jour de l'emplacement peut être contrôlé à l'aide du paramètre mintime . Le temps écoulé entre les mises à jour d'emplacement ne sera jamais inférieur à minTime, bien qu'il puisse être supérieur en fonction de l'implémentation du fournisseur Emplacement et de l'intervalle de mise à jour demandé par les autres applications .