2011-11-21 19 views
19

लघु संस्करण:जीपीएस समय के माध्यम से एंड्रॉइड डिवाइस सिंक?

समस्या: मैं कई Android उपकरणों की जरूरत है ठीक उसी समय (सीए 100 मिलीसेकंड के भीतर) पर कुछ करने के लिए। उदाहरण के लिए, मैं चाहता हूं कि सभी डिवाइस समय पर पहले निर्धारित बिंदु पर एक निश्चित ध्वनि खेलें।

प्रश्न: क्या मैं डिवाइस घड़ी की सिंक्रनाइज़ेशन सुनिश्चित करने के लिए जीपीएस समय का उपयोग कर सकता हूं?

अधिक बड़ा संस्करण:

कई Android उपकरणों के लोगों में एक ही घर के बाहर स्थान (कुछ विशिष्ट खेल आयोजन के लिए) में हैं। सभी उपकरणों को एक ही समय में कुछ घटनाओं को संकेत देना चाहिए। (हाथ से पहले कौन सा समय निर्धारित किया जाएगा और यह महत्वपूर्ण नहीं है कि वे ठीक उसी समय ऐसा करते हैं, जब तक वे एक ही समय में ऐसा करते हैं)। एफडब्ल्यूआईडब्ल्यू: उन घटनाओं से लोगों को एक ही समय में अपनी खेल गतिविधि शुरू करने में मदद मिलेगी।

  • वहाँ या सेल कवरेज नहीं हो सकता है हो सकता है:

    यहाँ मैं कर सकते हैं मान्यताओं कर रहे हैं। (यह सड़क पर है और शहरी क्षेत्रों से दूर हो सकता है)

  • डिवाइस इंटरनेट से कनेक्ट हो सकते हैं या नहीं भी हो सकते हैं। (कुछ लोगों के पास डेटा प्लान नहीं हो सकता है)
  • डिवाइस एक-दूसरे से बात कर सकते हैं। यदि डिवाइस इंटरनेट से कनेक्ट नहीं हैं तो वे वाईफाई के माध्यम से जुड़े होंगे (हालांकि वाईफ़ाई में इंटरनेट गेटवे नहीं हो सकता है)।
  • डिवाइस बाहर हैं (और इमारतों के अंदर नहीं)। (यह अच्छा है, इसका मतलब है कि सभी डिवाइस एक जीपीएस फिक्स प्राप्त कर सकते हैं)
  • डिवाइस एक दूसरे के शारीरिक रूप से करीब हैं (यानी, 300 मीटर 2 के भीतर)। (यह सुनिश्चित नहीं है कि यह महत्वपूर्ण है)

मैं घटनाओं को कब खेलना है, यह जानने के लिए आंतरिक घड़ी का उपयोग नहीं कर सकता: उपयोगकर्ता मैन्युअल रूप से समय बदल सकते हैं और यहां तक ​​कि यदि डिवाइस सेलुलर नेटवर्क से समय प्राप्त करने के लिए सेट किया गया है, तो वह नेटवर्क सही सही समय प्रदान नहीं कर सकता है। दो उपकरणों को विभिन्न नेटवर्क में बुक किया जा सकता है और इसलिए उनका समय बहुत अच्छी तरह से सिंक नहीं किया जा सकता है।

ऐप स्टार्टअप पर, प्रत्येक डिवाइस जीपीएस फिक्स के लिए पूछ सकता है और जीपीएस समय और इसकी आंतरिक घड़ी के बीच अंतर बचा सकता है। अब मास्टर इस जीपीएस समय के आधार पर घटनाओं की घोषणा कर सकता है (इसकी आंतरिक घड़ी का उपयोग करके और पहले सहेजे गए ऑफ़सेट को घटाकर)।

क्या यह सटीक और विश्वसनीय होगा?

अग्रिम में बहुत धन्यवाद, एंड्रियास लेटनर

+0

आप बाजार से ऐप जीपीएस समय का उपयोग कर सकते हैं https://market.android.com/details?id=net.sourcewalker.gpstime – andreasg

+0

यह एक अच्छा विचार है। अगर यह काम करता है तो मैं इस ऐप का उपयोग करने के लिए उपयोग कर सकता हूं। आखिरकार मैं इस ऐप को अपने ऐप में बनाना चाहता हूं। मैं अपने उपयोगकर्ताओं से एक और ऐप इंस्टॉल करने के लिए नहीं कहना चाहता (भले ही उन्हें इसकी आवश्यकता नहीं है) और यहां तक ​​कि और भी समस्याग्रस्त है जिसके लिए रूट पहुंच की आवश्यकता है। – user1057534

+0

हाय, मैं एक ही चीज़ का पीछा कर रहा हूं। क्या आप कभी इसे हासिल करने में सक्षम थे? –

उत्तर

13

आप समय onLocationChanged() कॉलबैक में currentTimeMillis() और Location.getTime() से मिलीसेकेंड में अंतर हो सकता है। का प्रयोग करें requestSingleUpdate()


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


संपादित करें: मैं इस उत्तर को संपादित करना चाहता हूं।एंड्रॉइड ओएस में जीएनएसएस डेवलपर के रूप में काम करने के बाद मुझे एहसास हुआ कि कई 'प्रमुख' एंड्रॉइड OEM ने इसे गड़बड़ कर दिया है। आमतौर पर चिपसेट या जीएनएसएस स्टैक पर एनएमईए वाक्यों को उत्पन्न किया जाता है। कभी-कभी समय सही होता है, यह कार्यान्वयन पर निर्भर करता है।

इसके अलावा लीप दूसरे की समस्या भी है। जीपीएस समय यूटीसी समय नहीं है। और इस writing it is 18 seconds ahead के रूप में।

इसके अलावा जीपीएस Location वस्तुओं से समय अब ​​प्रलेखन के अनुसार सिस्टम का समय

TLDR हैं: का उपयोग NTP time

+3

बहुत अच्छा लगता है। मुझे सिस्टम समय बदलने की जरूरत नहीं है। यह पर्याप्त है अगर प्रत्येक डिवाइस (जिसमें मेरा ऐप इंस्टॉल है) उस ऑफसेट की गणना करता है और इसलिए एक सामान्य संदर्भ समय के साथ काम कर सकता है। – user1057534

2

आप जीपीएस समय पर पूरी तरह से भरोसा नहीं कर सकते के रूप में वहाँ कुछ उपकरणों के लिए एक ज्ञात मुद्दा है कि समय आ गया है कुछ उपकरणों के लिए पुनर्प्राप्त एक दिन आगे है। उस स्थिति में आपको एक बड़ा ऑफसेट मिल सकता है।

http://code.google.com/p/android/issues/detail?id=23937

इस मुद्दे को सुलझाने का संभावित हल यहाँ पर चर्चा की गई है: Android : Samsung Galaxy Tabs and Android 2.2 Devices Showing GPS date 1 Day Advance from 1st jan 2012

0

यूटीसी GPS से प्राप्त नहीं है, APK जीपीएस ओवरराइड करता है। जीपीएस घड़ी को अनदेखा करने के लिए एंड्रॉइड सेट। आप getTime() हैं IIST है। जीपीएस

+0

यदि यह मूल प्रश्न का उत्तर माना जाता है, तो आपको इसे बेहतर बनाने की आवश्यकता है। – DuncanKinnear

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