Używam reutynacji requestSingleUpdate() z biblioteki Android LocationManager z LocationListener. Funkcją, którą próbuję wdrożyć, jest to, że użytkownik może nacisnąć przycisk, a aplikacja uzyska aktualną lokalizację i wykona odwrotne geokodowanie, aby uzyskać przybliżony adres.Ustawianie limitu czasu dla żądania Android: SingleUpdate
Mój problem polega na tym, że w zależności od sytuacji w sieci urządzenia uzyskanie poprawki lokalizacji może zająć dużo czasu. Jak mogę zaimplementować limit czasu, który spowoduje, że mój "requestSingleUpdate()" zrezygnuje i powie użytkownikowi, aby znalazł swój własny zakrwawiony adres?
mój kod:
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);
Dodatkowo, jeśli nie można odwołać myRunnable z jakiegoś powodu, można użyć myHandler. removeCallbacksAndMessages (null); zamiast –