2011-06-14 24 views
7

मैं समय और दूरी अंतराल कैसे अपडेट कर सकता हूं, या अनुरोध कॉल कॉल को फिर से अलग अंतराल के साथ अद्यतन कर सकता हूं?अनुरोध में अंतराल अपडेट करें स्थान अपडेट

मेरे कोड:

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:

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; 
      } 

मैं अगले उपाय पर नए अंतराल का उपयोग करना चाहते हैं।

उत्तर

7

आपको पहले locationManager.removeUpdates(cll); पर कॉल करने की आवश्यकता होगी और फिर अपने नए अंतराल का उपयोग करके अपडेट के लिए पुनः पंजीकरण करें।

+0

यह काम करता है, मैंने इसे स्थान पर रखा है चेक के बाद चेंज किया गया है, लेकिन यह असीम रूप से लूप करता है, यह जीपीएस शुरू करता है और हर सेकेंड के बाद इसे बंद कर देता है। तो जीपीएस आइकन लगातार चमकता है, और मुझे हर सेकेंड के लिए समन्वय मिलता है। – McDermott

+0

शायद आपको अपना "मैं चल रहा हूं" सशर्त बदलना चाहिए क्योंकि यह स्थिर होने पर भी सत्य वापस आ जाएगा या यदि स्थानप्रोवाइडर गति का समर्थन नहीं करता है ('location.getSpeed ​​()> = 0' की वजह से)। शायद यह 'location.getSpeed ​​()> = 0.5' होना चाहिए ताकि छोटे आंदोलनों के कारण यह लगातार जबरदस्त न हो। शायद आपको 'location.hasSpeed ​​()' पहले भी जांचना चाहिए। –

+0

मैंने location.hasSpeed ​​() और location.getSpeed ​​()> = 1 की कोशिश की है, लेकिन मुझे अभी भी प्रत्येक सेकेंड समन्वय मिलता है। मुझे लगता है कि जब मैं एक नया अनुरोध स्थान अपडेट करता हूं, जो कॉलेशन पर कॉल करता है तुरंत इसे एक जीपीएस प्रदाता से जोड़ता है, इसलिए यह क्यों लूप करता है। – McDermott

संबंधित मुद्दे