2011-06-22 9 views
9

LocationManager#requestLocationUpdates आपको मिनीटाइम और मिनीडिस्टेंस पैरामीटर में जाने की अनुमति देता है। मुझे यह तय करने में कठिनाई हो रही है कि इन संख्याओं को क्या होना चाहिए, और कुछ मार्गदर्शन की सराहना कर सकते हैं।मैं निर्णय ले सकता हूं कि अनुरोधस्थान के लिए किस अंतराल का उपयोग करना है?

हमारा ऐप एक मोड़-दर-मोड़ नेविगेशन ऐप नहीं है; मैं बस ब्याज के 10 निकटतम बिंदु दिखाना चाहता हूं। चूंकि मैं निकटतम 10 दिखा रहा हूं, इसलिए वे थोड़ा बाँध सकते हैं, लेकिन यदि उपयोगकर्ता एक चलती गाड़ी में है, तो मैं स्थिरता से बचने के लिए उन्हें अक्सर बार-बार अपडेट करना चाहता/चाहूंगा।

मुझे लगता है कि बहुत से लोग अस्पष्ट आवश्यकताओं की एक ही स्थिति में हैं: "मैं नहीं चाहता कि डेटा बहुत पुराना हो, लेकिन मैं बैटरी बर्बाद नहीं करना चाहता।" मैं इन अस्पष्ट आवश्यकताओं को ठोस संख्या में कैसे बदल सकता हूं?

+1

यहां जवाब हैं जो बेवकूफ हो गए हैं - अब [मिनीटाइम प्राथमिकता लेता है] (http://stackoverflow.com/a/16753705/281545) - इसलिए यह अब सभी अप्रासंगिक नहीं है। –

उत्तर

3
***<Edit>*** 
As of JellyBean, the criteria is (minTime & minDistance), so it has 
to satisfy both to return a location. 
***</Edit>*** 

आपकी समस्या के आधार पर, यह मुझे लगता है कि मिनीटाइम पैरामीटर अप्रासंगिक है।

आपको वास्तव में चिंता करने की आवश्यकता है कि मिनीडिस्टेंस है, ताकि यदि कोई उपयोगकर्ता तेजी से चलने वाले वाहन में है, तो यह जारी रहेगा।

यदि कोई व्यक्ति 60 एमपीएच चला रहा है, तो वे प्रति सेकंड लगभग 27 मीटर स्थानांतरित होते हैं।

इस शर्तों को पूरा करते ध्यान में रखते हुए ... मैं उपयोग करने के लिए कह सकते हैं कि:

minTime = 60000 // हर 60 सेकंड
minDistance अद्यतन = 90 // एक तेजी से चलती गाड़ी में, यह मोटे तौर पर एक बार हर 3 सेकंड अद्यतन करेगा

+0

आप 60000 के साथ कैसे आए? बहुत ज्यादा क्यों नहीं? या कम? –

+0

यह काफी यादृच्छिक है। कोई "सही" नंबर नहीं है, लेकिन प्रति मिनट एक बार बैटरी को मार नहीं पाएगा, और कम से कम अपने परिणामों को लक्ष्य पर कुछ हद तक बनाए रखेगा। दूरी अधिक महत्वपूर्ण मूल्य है। आपको निर्णय लेने की क्या ज़रूरत है - आपके डेटा को ताज़ा करने से पहले कार कितनी दूर यात्रा कर सकती है? एक मील? आधा मील? अधिक? कम से? – Matt

+1

क्षमा करें, लेकिन आपको इसे संपादित करना होगा - अब [मिनीटाइम प्राथमिकता लेता है] (http://stackoverflow.com/a/16753705/281545) - इसलिए अब यह सभी अप्रासंगिक नहीं है। –

3

यह requestLocationUpdates docs

में अच्छी तरह से वर्णित किया गया है अधिसूचना या नई स्थानों की आवृत्ति minTime और दिमाग का उपयोग करते हुए नियंत्रित किया जा सकता आइसेंटेंस पैरामीटर। यदि minTime 0 से अधिक है, स्थान प्रबंधक संभावित रूप से को शक्ति संरक्षण के लिए स्थान अपडेट के बीच मिनीटाइम मिलीसेकंड के लिए संभवतः आराम कर सकता है। यदि minDistance 0 से अधिक है, स्थान केवल तभी प्रसारित किया जाएगा जब डिवाइस minDistance मीटर द्वारा चलाया जाता है। करने के लिए संभव के रूप में अक्सर सूचनाएं प्राप्त, 0. पृष्ठभूमि सेवाओं के लिए दोनों पैरामीटर सेट पर्याप्त रूप से उच्च minTime स्थापित करने के बारे में सावधान होना चाहिए ताकि डिवाइस नहीं जीपीएस या वायरलेस रेडियो रखकर बहुत ज्यादा बिजली की खपत करता है कि सभी समय पर। विशेष रूप से, 60000ms के तहत मानों की अनुशंसा नहीं की जाती है।

+0

"60000ms से कम मानों की अनुशंसा नहीं की जाती है" क्या यह अग्रभूमि सेवाओं या सिर्फ पृष्ठभूमि सेवाओं के लिए सच है? (मैं पृष्ठभूमि सेवा नहीं हूं।) मूल्यवर्ती सेवाओं के लिए मूल्य क्या होना चाहिए जिनकी अधिकतम आवृत्ति की आवश्यकता नहीं है, जैसे मेरा? –

+0

इसकी पृष्ठभूमि सेवा और अग्रभूमि सेवा दोनों के लिए है। – Sujit

+1

दस्तावेज़ों का उद्धरण अब मान्य नहीं है –

1

मैं एक बेहतर विचार सुझा सकता हूं कि, शुरुआत में थोड़ा बड़ा अंतराल के साथ अपडेट का अनुरोध करें और स्थानों को प्राप्त करें। अब जांच करें कि निरंतर स्थानों के बीच की दूरी निकटतम स्थानों को अलग करने के लिए न्यूनतम दूरी से अधिक है, तो अपने अनुरोध अद्यतन अंतराल को कम मूल्य में बदलें। इसी तरह यदि इस निचले अंतराल में आप जिस दूरी की गणना करते हैं, वह उस दूरी से गणना करती है जो उपयोगकर्ता को वाहन के माध्यम से यात्रा नहीं करने में इंगित करती है तो अंतराल को बड़े मूल्य पर अपडेट करें। अंतराल को अपडेट करने के लिए आपको पिछले श्रोता को अनधिकृत करना होगा और फिर नए मान के साथ पुन: regiser करना होगा।

0

हाथ में अपनी समस्या के लिए, PASSIVE_PROVIDER पर एक नज़र डालें। असल में यह आपको अपडेट प्राप्त करने में मदद करेगा जब कोई अन्य ऐप्स उनके लिए अनुरोध कर सकता है।तो, आप इसे अन्य प्रदाता के साथ संयोजन के रूप में उपयोग कर सकते हैं।

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

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