2013-06-04 11 views
7

मैं स्थान जो मैं/हे 2013एंड्रॉयड, स्थान का अनुरोध, सेट समाप्ति अवधि

यह ठीक काम करता है में शुरू किया गया था के नए एपीआई का उपयोग कर रहा हूँ और मैं अपने परिणाम के साथ कोई समस्या नहीं है काम नहीं करता। मेरी समस्या यह है कि जब मैं setExpirationDuration(WHATEVER_MILLIS) को जो भी मिलिस पर सेट करता हूं, हालांकि यह एक मिनट के लिए काम करता है।

LocationRequest locationRequest = LocationRequest.create() 
          .setInterval(10 * 60 * 1000) // every 10 minutes 
          .setExpirationDuration(10 * 1000) // After 10 seconds 
          .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 

जब मैं अनुप्रयोग चलाने, उपग्रह सूचक ट्रे में प्रदर्शित किया जाएगा तो, मैं यह सिर्फ 10 सेकंड के देखने की उम्मीद:

यह मेरा कोड है। हालांकि, यह एक मिनट के बाद गायब हो जाएगा।

कोई भी सुझाव या टिप्पणियों की सराहना की जाएगी। धन्यवाद।

+0

शायद अंतराल का समय समाप्ति समय से विभाजित होता है 1 मिनट – JRowan

+0

धन्यवाद JRowan, कोई फर्क नहीं पड़ता कि मैं मिली उपग्रह संकेतक के रूप में सेट करता हूं, एक मिनट के लिए प्रदर्शित किया जाएगा। – Hesam

+0

क्या आपको लगता है कि इसकी प्राथमिकता उच्च सटीकता हो सकती है, जीपीएस एक सटीक स्थान पर घर पर थोड़ा सा लेता है, शायद – JRowan

उत्तर

1

चूंकि यह एंड्रॉइड में एक वास्तविक समस्या प्रतीत होता है, इसलिए वर्कअराउंड मैन्युअल रूप से स्थान अपडेट को हटाने के लिए हैंडलर हो सकता है।

listHandler = new Handler() { 
     public void handleMessage(Message msg) { 
      if (msg.what == 0) { 
       mLocationClient.removeLocationUpdates(MyActivity.this); 
       //Location Updates are now removed 
      } 
      super.handleMessage(msg); 
     } 
    }; 

आप (10s की अधिकतम अवधि के लिए) स्थान अपडेट के लिए अनुरोध करने के बाद आप इस हैंडलर, बेशक 10s के लिए देरी कहते हैं।

myLocationClient.requestLocationUpdates(...); 
listHandler.sendEmptyMessageDelayed(0, 10000); 

यह सुनिश्चित करता है कि 10 के बाद आपके स्थान अपडेट हटा दिए जाएंगे।

1

प्रलेखन में (https://developer.android.com/reference/com/google/android/gms/location/LocationRequest.html#setExpirationDuration(long))

इसमें कहा गया है कि: "अवधि तुरंत शुरू होता है (और नहीं जब अनुरोध स्थान ग्राहक को पारित कर दिया है), इसलिए इस विधि फिर से फोन करता है, तो अनुरोध फिर से है बाद में इस्तेमाल किया। "

एक इस अवधि शुरू करने के लिए जब निम्न रेखा कहा जाता है उम्मीद करेंगे:

LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this); 

लेकिन, प्रलेखन राज्यों में इस अवधि को शुरू होती है जब अनुरोध वस्तु बन जाता है।

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