2011-06-14 21 views
7

Zaman ve uzaklık aralıklarını nasıl güncelleyebilirim veya requestLocationUpdates öğesini farklı aralıklarla tekrar nasıl arayabilirim?request in requestLocationUpdates

Kodum:

LocationManager locationManager = (LocationManager) activityObject.getSystemService(Context.LOCATION_SERVICE); 

    cll = new CheckinLocationListener(); 

    LocationProvider gps = locationManager.getProvider(LocationManager.GPS_PROVIDER); 

    // GPS 

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, timeDelay, distanceDelay, cll); 

    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

onLocationChanged: Ben önümüzdeki tedbir yeni aralıklarını kullanmak istiyorum

if(location.getSpeed()>=0 && location.getSpeed()<= 3) 
      { 
       LocationsModel.this.distanceDelay = 25; 
       LocationsModel.this.timeDelay = 10000; 
      } 
      else if(location.getSpeed()>=3 && location.getSpeed()<= 17) 
      { 
       LocationsModel.this.distanceDelay = 150; 
       LocationsModel.this.timeDelay = 60000; 
      } 
      else if(location.getSpeed()>=17) 
      { 
       LocationsModel.this.distanceDelay = 300; 
       LocationsModel.this.timeDelay = 240000; 
      } 

.

cevap

7

Önce locationManager.removeUpdates(cll); numaralı telefonu arayarak yeni aralığınızı kullanarak güncellemeleri yeniden kaydetmeniz gerekir.

+0

Çalışıyor, denetimlerden sonra Konumlandırmayı Değiştirdim, ancak sonsuz döngüden geçiyor, gps'i başlatıyor ve her saniyeden sonra kapatıyor. Böylece gps simgesi sürekli yanıp sönüyor ve her saniye için bir koordinat alıyorum. – McDermott

+0

Belki de "hareket ediyorum" koşulunu değiştirmelisiniz, çünkü bu durum sabit olduğunuzda bile true olacaktır veya LocationProvider hızı desteklemiyorsa (location.getSpeed ​​()> = 0' yüzünden). Belki de burası 'location.getSpeed ​​()> = 0,5 'olmalıdır, böylece küçük hareketler nedeniyle sürekli olarak jabberleme yapmaz. Belki de, öncelikle, location.hasSpeed ​​() 'ı da kontrol etmelisiniz. –

+0

location.hasSpeed ​​() ve location.getSpeed ​​()> = 1'i denedim, ancak yine de her saniye bir koordinat alıyorum. Yeni bir requestLocationUpdates çağrısı yaptığımda, hemen bir gps sağlayıcısına bağlanarak CallLocationChanged öğesini çağırdığında, bu yüzden neden döngü yaptığını düşünüyorum. – McDermott

İlgili konular