नेटवर्क के समय का पता लगाने की सुविधा

Android डिवाइस, अपने-आप सही Unix epoch समय का पता लगाने की कोशिश करते हैं: एक नेटवर्क सोर्स की तरह काम करता है. Android, एसएनटीपी प्रोटोकॉल का इस्तेमाल करता है, जिसमें यूडीपी प्रोटोकॉल का इस्तेमाल किया जाता है. ताकि समय की जानकारी मिल सके.

इस पेज पर बताए गए कॉम्पोनेंट, अपने-आप समय का पता लगाने की सुविधा का हिस्सा हैं सिस्टम को नेटवर्क टाइम ऑरिजिन कहा जाता है. इससे समय का सिग्नल नेटवर्क टाइम सर्वर का इस्तेमाल तब किया जा सकता है, जब Android डिवाइस की सिस्टम घड़ी को सेट करना हो डिवाइस और time_detector पर, समय का अपने-आप पता लगाने की सुविधा काम करती है सेवा को इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है.

डिफ़ॉल्ट रूप से, Android नेटवर्क टाइम ऑरिजिन को मुख्य नेटवर्क के तौर पर इस्तेमाल करता है समय का अपने-आप पता लगाने वाली सुविधा.

नेटवर्क टाइम डिटेक्शन सिस्टम

network_time_update_service सेवा, जो Android सिस्टम सर्वर में चलती है नेटवर्क टाइम डिटेक्शन सिस्टम को लागू करता है. यह सेवा समय-समय पर एसएनटीपी, ताकि सर्वर से टाइम सिग्नल लिया जा सके. यह सेवा, नेटवर्क को भी मॉनिटर करती है कनेक्टिविटी और हाल का कोई सिग्नल उपलब्ध न होने पर, टाइम रीफ़्रेश को ट्रिगर करता है लंबे समय तक खराब कनेक्टिविटी के बाद भी सदस्यता ली जा सकती है.

network_time_update_service सेवा, टाइम सिग्नल पाने की कोशिश करती है बूट के बाद और जब नेटवर्क कनेक्टिविटी पहली बार स्थापित होती है. कॉन्टेंट बनाने तब सेवा नए सिग्नल को बनाए रखने की कोशिश करती है. यह Android डिवाइसों की ज़रूरतों के हिसाब से, कॉन्टेंट लोड भी हो सकता है. यह डेटा, दुनिया भर के कई Android डिवाइसों से जनरेट होता है. ये अपने-आप अपडेट होने की सुविधा देते हैं.

इंटरनल एपीआई इस्तेमाल करके, network_time_update_service, नेटवर्क के समय की जानकारी सबमिट करता है time_detector सेवा के लिए सुझाव. Android का अन्य प्लैटफ़ॉर्म फिर कॉम्पोनेंट, नेटवर्क समय के सुझावों का इस्तेमाल करते हैं.

नेटवर्क के समय की शुरुआत की जगह से सुझाव पाने के बाद, time_detector सेवा तय करती है कि सिस्टम की घड़ी को प्राथमिकता के नियम कॉन्फ़िगर किए गए.

नेटवर्क की मदद से, समय का अपने-आप पता लगाने वाले सिस्टम को कॉन्फ़िगर करने के लिए अपने आप सिस्टम की घड़ी सेट करने के सुझाव देते हैं, तो core/res/res/values/config.xml सिस्टम के सर्वर की कॉन्फ़िगरेशन फ़ाइल. पक्का करें कि config_autoTimeSourcesPriority में मौजूद वैल्यू network है स्थिति. जानकारी के लिए, यह देखें समय स्रोत की प्राथमिकता.

डिवाइस कॉन्फ़िगरेशन

इस सेक्शन में बताया गया है कि डिवाइस बनाने वाली कंपनियां, नेटवर्क को कैसे कॉन्फ़िगर कर सकती हैं टाइम डिटेक्शन सिस्टम.

बेस एओएसपी कॉन्फ़िगरेशन इस पर है frameworks/base/core/res/res/values/config.xml:

कॉन्फ़िगरेशन कुंजी एओएसपी वैल्यू ब्यौरा
config_ntpRetry 3 रीफ़्रेश न हो पाने के बाद, सिस्टम इतनी बार कोशिश करता है छोटे एनटीपी पोलिंग इंटरवल के साथ नेटवर्क टाइम पोलिंग (config_ntpPollingIntervalShorter), बैक अप लेने और इस्तेमाल करने से पहले पोलिंग का सामान्य इंटरवल (config_ntpPollingInterval). मान 0 से कम का मतलब है कि सिस्टम छोटे एनटीपी पर फिर से पोल कराने की कोशिश करता है पोलिंग का अंतराल तब तक के लिए सेट किया जा सकता है, जब तक कि वह रीफ़्रेश न हो जाए.
config_ntpPollingInterval 64800000 (18 घंटे) मिलीसेकंड में सामान्य नेटवर्क समय पोलिंग अंतराल.
config_ntpPollingIntervalShorter 60000 (1 मिनट) नेटवर्क समय पोलिंग अंतराल मिलीसेकंड में फिर से कोशिश करें. इसका इस्तेमाल तब किया जाता है, जब समय रीफ़्रेश नहीं होता.
config_ntpServers एक एंट्री: ntp://time.android.com एनटीपी सर्वर का इस्तेमाल करके सटीक समय का पता लगाया जाता है. आइटम इस रूप में होने चाहिए: ntp://<host>[:port].
यह रजिस्टर की गई IANA यूआरआई स्कीम नहीं है.
config_ntpTimeout 5000 टाइम आउट से पहले मिलीसेकंड में, एनटीपी सर्वर के रिस्पॉन्स का इंतज़ार करने का समय.

सर्वर

डिफ़ॉल्ट रूप से, एओएसपी time.android.com पर टाइम सर्वर का इस्तेमाल करता है, जो Google का सार्वजनिक एनटीपी. इस सेवा में सेवा स्तर समझौता (एसएलए) नहीं है. जानकारी के लिए, यह देखें Google सार्वजनिक एनटीपी से जुड़े अक्सर पूछे जाने वाले सवाल.

एक से ज़्यादा सर्वर की सुविधा

Android 14 और उसके बाद वाले वर्शन के लिए, यह फ़्रेमवर्क इन सुविधाओं के साथ काम करता है कई एनटीपी सर्वर पर काम करता है. यह उन स्थितियों में काम करता है जहां डिवाइस एक ही कॉन्फ़िगरेशन के साथ दुनिया भर में उपलब्ध कराया जाता है, लेकिन जहां सर्वर तक पहुंच होती है जैसे कि time.android.com पर कुछ जगहों पर पाबंदी है.

एल्गोरिदम, config_ntpServers में दिए गए हर सर्वर को आज़माता है कॉन्फ़िगरेशन कुंजी पर क्लिक करें. जब उसे कोई जवाब मिलता है, तो सिस्टम उस सर्वर को तब तक रीफ़्रेश नहीं करता है, जब तक वह रीफ़्रेश न हो जाए या डिवाइस फिर चालू न हो जाए.

कितना सटीक है

Android के डिफ़ॉल्ट नेटवर्क टाइम सिंक में, सिंगल टाइम क्वेरी के साथ एसएनटीपी का इस्तेमाल किया जाता है यह पक्का करने के लिए कि सिग्नल हमेशा हाल ही का हो, दिन में करीब एक बार.

नेटवर्क के सही तरीके से काम न करने पर, नेटवर्क के इंतज़ार का असर सबसे ज़्यादा होता है Android का एसएनटीपी लागू करना. SNTP, सिमेट्रिक नेटवर्क देरी को मानता है. इसका मतलब है कि अनुरोध के लिए नेटवर्क इंतज़ार का समय, जवाब देता है, और सही समय ठीक इसके बीच में होता है नेटवर्क की दोतरफ़ा यात्रा. अक्सर, नेटवर्क की दोतरफ़ा यात्रा का समय कुछ सौ मिलीसेकंड और वायर वाले नेटवर्क पर, इंतज़ार का समय सिमेट्रिक, जिससे गड़बड़ी के लेवल की गड़बड़ी हो सकती है. उपयोगकर्ता. हालांकि, मोबाइल या रेडियो टेलीफ़ोनी के इस्तेमाल से जुड़े ऐसे कई चरण हैं जहां नेटवर्क ट्रांज़ैक्शन में लंबा, एसिमेट्रिक देरी हो सकती है जिसकी वजह से ज़्यादा गलतियां हो सकती हैं.

config_ntpTimeout के लिए एओएसपी की डिफ़ॉल्ट सेटिंग को 5000 मिलीसेकंड पर सेट किया गया है, और अगर नेटवर्क में लगने वाला सारा समय पूरी तरह से इनबाउंड या आउटबाउंड पर केंद्रित है बाद में, सबसे ज़्यादा सैद्धांतिक गड़बड़ी करीब 2.5 सेकंड की होती है.

Android डिवाइस की क्षमता से इस बात पर भी असर पड़ता है कि सिस्टम की घड़ी कितनी सटीक है इससे समय का सिग्नल मिलने के बाद, बीते हुए समय को सही तरीके से ट्रैक किया जा सकता है. यह है यह न सिर्फ़ नेटवर्क टाइम का पता लगाने की सुविधा है, बल्कि Android पर समय को ट्रैक करने की भी चिंता है. time_detector सेवा पुराने समय के सुझावों को क्यों अनदेखा करती है. कॉन्टेंट बनाने network_time_update_service सेवा नियमित तौर पर रीफ़्रेश होने के लिए, time_detector सेवा को बनाए रखने के लिए, config_ntpPollingInterval इंटरवल नए समय के सुझावों के साथ सूचित किया जाएगा और यह सुनिश्चित किया जाएगा कि time_detector सेवा की प्राथमिकता और अक्सर कम सटीक नहीं होती या कभी-कभी गलत समय की शुरुआत की जगह, जैसे कि telephony.

समय का अपने-आप पता लगाने वाली सुविधा का इस्तेमाल करते समय, डिवाइस के सिस्टम की घड़ी को सटीक तरीके से सेट किया जा सकता है time_detector सेवा के अन्य कॉन्फ़िगरेशन का असर पड़ता है, जैसे कि कॉन्सटेंट और फ़्लैग, जो इस बात पर असर डालते हैं कि समय का सुझाव कितना अलग है क्लॉक को अडजस्ट करने से पहले, मौजूदा सिस्टम की घड़ी का समय (ServiceConfigAccessorImpl.java).

डिवाइस बनाने वाली कंपनियां पिछले कॉन्फ़िगरेशन का इस्तेमाल करके, सटीक जानकारी में बदलाव कर सकती हैं विकल्प और कॉन्सटेंट. हालांकि, यह जानना ज़रूरी है कि इवेंट की सीमाएं इस प्लैटफ़ॉर्म पर एसएनटीपी को लागू करना और बिजली की खपत पर पड़ने वाला संभावित असर नेटवर्क की ज़्यादा कार्रवाइयों से, डिवाइस पर चलने वाले ऐप्लिकेशन पर असर पड़ता है. समय में कम समय के लिए एडजस्ट किया जाता है, लेकिन फिर सर्वर के लोड होने पर असर पड़ता है.

नेटवर्क समय के अन्य इस्तेमाल

अगर network ऑरिजिन का इस्तेमाल करके, समय का अपने-आप पता लगाने की सुविधा कॉन्फ़िगर नहीं की गई है या उपयोगकर्ता ने अपने-आप टाइम का पता लगाने की सुविधा बंद कर दी है. समय का पता लगाने के लिए, ये कॉम्पोनेंट अब भी network_time_update_service सेवा का इस्तेमाल कर रहे हैं:

  • कॉन्टेंट बनाने SystemClock.currentNetworkTimeClock() तरीका.
  • इंटरनल प्लैटफ़ॉर्म फ़ंक्शन. उदाहरण के लिए, A-जीपीएस GNSS (जगह की जानकारी) का पता लगा सकता है जब इसमें नेटवर्क के समय की जानकारी हो, तो समस्या को तेज़ी से ठीक किया जा सकता है.

डीबग करना और जांच करना

नीचे दिए गए सेक्शन में, नेटवर्क समय का पता लगाने की सुविधा.

network_time_update_service सेवा से इंटरैक्ट करें

network_time_update_service की मौजूदा स्थिति को हटाने के लिए, इसका इस्तेमाल करें:

adb shell cmd network_time_update_service dump

जांच में मदद करने वाले कमांड-लाइन विकल्पों का सेट देखने के लिए, इसका इस्तेमाल करें:

adb shell cmd network_time_update_service help