Définir un délai pour android requestSingleUpdate
Je suis à l'aide de la routine requestSingleUpdate() reoutine de l'android LocationManager bibliothèque avec un : LocationListener. La fonctionnalité que je suis en train de mettre en œuvre, c'est que l'utilisateur peut appuyer sur un bouton et l'application va obtenir de leur localisation et effectuer le géocodage inversé pour obtenir l'adresse approximative.
Mon problème est que, en fonction de la situation du réseau de l'appareil, l'obtention d'un emplacement fix peut prendre du temps. Comment puis-je mettre en œuvre un dépassement de délai qui sera la cause de mon " requestSingleUpdate()' à faire et de dire à l'utilisateur de trouver leurs propres sanglante adresse?
mon code:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
locationManager.requestSingleUpdate(criteria, new LocationListener(){
@Override
public void onLocationChanged(Location location) {
//reverse geo-code location
}
@Override
public void onProviderDisabled(String provider) {
//TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
//TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
//TODO Auto-generated method stub
}
}, null);
OriginalL'auteur AnjoMan | 2013-02-22
Vous devez vous connecter pour publier un commentaire.
LocationManager
ne semble pas avoir un mécanisme d'expiration. MaisLocationManager
possède une méthode nomméeremoveUpdates (: LocationListener auditeur)
que vous pouvez utiliser pour annuler rappels sur laLocationListener
.Donc, vous pouvez mettre en place votre propre délai d'attente avec quelque chose comme le pseudo-code:
Je ne suis pas certain de ce qui se passe si vous appelez
locationManager.removeUpdates(myListener)
après vous obtenez l'Emplacement. Vous pourriez vouloir vérifier avant de vous appelerremoveUpdates
. Ou, vous pouvez ajouter quelque chose de ce genre pour lesonLocationChanged
méthode dans votre rappel (et éventuellement pour les autres méthodes) :OriginalL'auteur Dan Breslau