Ich verwende die Routine requestSingleUpdate() -Routine der Android LocationManager-Bibliothek mit einer LocationListener. Die Funktionalität, die ich zu implementieren versuche ist, dass der Benutzer eine Taste drücken kann und die App ihren aktuellen Standort erhält und umgekehrte Geokodierung durchführt, um die ungefähre Adresse zu erhalten.Legen Sie eine Zeitüberschreitung für Android-AnfrageSingleUpdate
Mein Problem ist, dass abhängig von der Netzwerksituation des Geräts eine Standortbestimmung lange dauern kann. Wie kann ich eine Zeitüberschreitung implementieren, die mein 'requestSingleUpdate()' dazu bringt, aufzugeben und dem Benutzer zu sagen, dass er seine eigene blutige Adresse finden soll?
mein 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);
Außerdem, wenn Sie nicht myRunnable aus irgendeinem Grunde verweisen können, können Sie myHandler verwenden: Oder könnten Sie so etwas wie dies die
onLocationChanged
Methode in Ihrer Callback (und möglicherweise auch zu den anderen Methoden als auch) hinzuzufügen. removeCallbacksAndMessages (null); stattdessen –