समय अपने-आप सेट होने की सुविधा के लिए, अलग-अलग सोर्स से समय के सुझाव मिलते हैं. यह सुविधा सबसे सही विकल्प चुनती है और फिर Android में सिस्टम की घड़ी को उसके हिसाब से सेट करती है. Android के पिछले वर्शन में, तारीख और समय सेट करने के दो तरीके थे. पहला, हर उपयोगकर्ता के लिए मैन्युअल तरीके से तारीख और समय सेट करना. दूसरा, समय अपने-आप सेट होने की सुविधा का इस्तेमाल करना. इनमें से किसी एक विकल्प का इस्तेमाल करके, तारीख और समय सेट किया जा सकता था:
telephonyके लिए, नेटवर्क आइडेंटिटी ऐंड टाइम ज़ोन (एनआईटीज़ेड) टेलीफ़ोनी सिग्नल का इस्तेमाल किया जाता है.networkके लिए, नेटवर्क टाइम प्रोटोकॉल (एनटीपी) टाइम सर्वर का इस्तेमाल किया जाता है.
हर विकल्प के लिए, बाहरी नेटवर्क से कनेक्शन की ज़रूरत होती है. Android Automotive में ये कनेक्शन हमेशा उपलब्ध नहीं होते. उदाहरण के लिए, कुछ देशों में, कुछ कारों में इन-बिल्ट टेलीफ़ोनी की सुविधा नहीं होती. इसलिए, ग्लोबल सैटलाइट नेविगेशन सिस्टम (जीएनएसएस) का समय, सिस्टम के समय के सोर्स के तौर पर उपलब्ध कराया जाता है. इसका इस्तेमाल तब किया जा सकता है, जब नेटवर्क कनेक्टिविटी उपलब्ध न हो.
Android के आने वाले वर्शन में, समय अपने-आप पता लगाने और सेट करने के लिए, दो और विकल्प उपलब्ध होंगे:
gnssके लिए, ग्लोबल सैटलाइट नेविगेशन सिस्टम (जीएनएसएस) का इस्तेमाल किया जाता है.externalके लिए, वीएचएएल प्रॉपर्टी या सिस्टम एपीआई का इस्तेमाल किया जाता है.
समय अपने-आप सेट होने की सुविधा चालू करना
समय अपने-आप सेट होने की सुविधा चालू करने के लिए, सेटिंग > तारीख और समय > तारीख और समय अपने-आप सेट हो जाए को चुनें:

पहली इमेज. तारीख और समय अपने-आप सेट हो जाए को चुनें
समय के सोर्स कॉन्फ़िगर करना
यह तय करने के लिए कि समय अपने-आप सेट होने की सुविधा में, किन सोर्स को शामिल करना है और इन सोर्स को किस प्राथमिकता के हिसाब से इस्तेमाल करना है, आपको डिवाइस की रिसॉर्स कॉन्फ़िगरेशन फ़ाइल, core/res/res/values/config.xml में बदलाव करना होगा:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones. See com.android.server.timedetector.TimeDetectorStrategy for
available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>telephony</item>
<item>network</item>
</string-array>इस उदाहरण में, समय अपने-आप सेट होने की सुविधा के लिए, telephony और network को शामिल किया गया है. साथ ही, telephony से मिले समय के सुझावों को, network से मिले समय के सुझावों से ज़्यादा प्राथमिकता दी गई है.
आम तौर पर, ज़्यादा प्राथमिकता वाले सोर्स से मिले सुझावों को तब अनदेखा कर दिया जाता है, जब वे अमान्य हों या बहुत पुराने हों. इसके अलावा, अगर सबसे ज़्यादा प्राथमिकता वाला मान्य सुझाव, डिवाइस की मौजूदा सिस्टम घड़ी के समय से कुछ सेकंड के अंदर मेल खाता है (डिफ़ॉल्ट वैल्यू दो (2) सेकंड है), तो समय नहीं बदला जाएगा.
समय की निचली सीमा
Android 12 में, समय के सुझावों की पुष्टि करने के लिए, समय की निचली सीमा की नई सुविधा उपलब्ध है. इस सुविधा से पहले, समय अपने-आप सेट होने की सुविधा, यूटीसी में आने वाले समय के सुझाव की पुष्टि नहीं करती थी. इस सुविधा की मदद से, निचली सीमा से पहले के समय को खारिज कर दिया जाता है.
निचली सीमा की वैल्यू, बिल्ड टाइमस्टैंप से ली गई तारीख से तय की जाती है. यह इस सिद्धांत पर काम करता है कि सिस्टम इमेज बनने से पहले, मान्य समय नहीं हो सकता. Android में, समय की कोई ऊपरी सीमा लागू नहीं की जाती.
जीएनएसएस से मिले समय के सुझाव
Android 12 में, gnss समय का नया सोर्स जोड़ा गया है. यह सोर्स, जीपीएस सिग्नल से समय की जानकारी देता है. यह समय का एक भरोसेमंद सोर्स है. इसका इस्तेमाल तब किया जा सकता है, जब telephony और network उपलब्ध न हों.
इस विकल्प को, SystemServer में मौजूद नए GnssTimeUpdateService में जोड़ा गया है. यह सेवा, जगह की जानकारी के अपडेट को पैसिव तरीके से सुनती है. जब जगह की मान्य जानकारी मिलती है, तो GnssTimeUpdateService, TimeDetectorService को एक सुझाव देता है. इसके बाद, यह तय किया जाता है कि सिस्टम की घड़ी को अपडेट किया जाना चाहिए या नहीं.
डिफ़ॉल्ट रूप से, AOSP में gnss समय का सोर्स चालू नहीं होता. इसलिए, पार्टनर को इसे चालू करना होगा:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>telephony</item>
<item>network</item>
<item>gnss</item>
</string-array>
<!-- Enables the GnssTimeUpdate service. This is the global switch for enabling Gnss time based
suggestions to TimeDetector service. See also config_autoTimeSourcesPriority. -->
<bool name="config_enableGnssTimeUpdateService">true</bool>इस सुविधा को चालू करने के लिए:
config_enableGnssTimeUpdateServiceको अपडेट करें. की वैल्यू,trueपर सेट होनी चाहिए.config_enableGnssTimeUpdateServiceconfig_autoTimeSourcesPriorityको अपडेट करें.config_autoTimeSourcesPriorityके लिए, आइटम की सूची मेंgnssको जोड़ना होगा. प्राथमिकता वाली सूची मेंgnssकी पोज़िशन से, जीएनएसएस के सुझावों को दी जाने वाली प्राथमिकता तय होती है. यह प्राथमिकता, अन्य सोर्स से मिली वैल्यू के मुकाबले तय की जाती है.
पावर पर असर
GnssTimeUpdateService , जगह की जानकारी के अपडेट को पैसिव तरीके से सुनता है. इसका मतलब है कि यह अतिरिक्त पावर इस्तेमाल करने के लिए, कभी भी जीपीएस को चालू नहीं करता. इसलिए, जीएनएसएस सोर्स के चालू होने पर, बहुत कम पावर इस्तेमाल होती है. इसका मतलब यह भी है कि जब तक सिस्टम में मौजूद कोई अन्य ऐप्लिकेशन या सेवा, जगह की जानकारी के अपडेट का अनुरोध नहीं करती, तब तक GnssTimeUpdateService को जगह की जानकारी का अपडेट नहीं मिलता. साथ ही, यह जीएनएसएस के समय का सुझाव भी नहीं देता.
जांच करना
Compatibility Test Suite (CTS)
यह पुष्टि करने के लिए कि जीएनएसएस से मिला समय उपलब्ध है या नहीं, CTS टेस्ट उपलब्ध है. ज़्यादा जानकारी के लिए, LocationShellCommand.java देखें.
यूनिट टेस्ट
बुनियादी यूनिट टेस्ट देखने के लिए, यह फ़ाइल देखें:
atest frameworks/base/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java
मैन्युअल तरीके से जांच करने की सुविधा
इस सुविधा की जांच करने के लिए, LocationShellCommand.java में नए निर्देश जोड़े गए हैं. इन निर्देशों का इस्तेमाल करके, टेस्ट प्रोवाइडर जोड़े जा सकते हैं. इनकी मदद से, जगह और उससे जुड़ा जीएनएसएस समय तय किया जा सकता है.
GnssTimeUpdateService, जगह की जानकारी के इन अपडेट को सुनता है और समय-समय पर सुझाव देता है.
ध्यान दें: हो सकता है कि इन निर्देशों का इंटरफ़ेस, वर्शन के हिसाब से बदल जाए.
# Enable Master Location Switch in the foreground user (usually user 10 on automotive). # If you just flashed, this can be done through Setup Wizard. adb shell cmd location set-location-enabled true --user 10 # Add GPS test provider (this usually fails the first time and will throw a SecurityException # with "android from <some-uid> not allowed to perform MOCK_LOCATION".) adb shell cmd location providers add-test-provider gps # Enable mock location permissions for previous UID adb shell appops set <uid printed in previous error> android:mock_location allow # Add GPS test provider (Should work with no errors.) adb shell cmd location providers add-test-provider gps # Enable GPS test provider adb shell cmd location providers set-test-provider-enabled gps true # Set location with time (time can't be earlier than the limit set by the lower bound.) adb shell cmd location providers set-test-provider-location gps --location <LATITUDE>,<LONGITUDE> --time <TIME>
बाहरी सोर्स से मिले समय के सुझाव
बाहरी सोर्स से मिले समय के सुझाव, Android को समय के सुझाव अपने-आप देने का एक और तरीका है. इस नए विकल्प की मदद से, Android को समय के पूरी तरह से मनमुताबिक सुझाव दिए जा सकते हैं. ये सुझाव, अलग-अलग ईसीयू से मिल सकते हैं. ये ईसीयू, रियल-टाइम क्लॉक, जीएनएसएस, एनआईटीज़ेड या किसी अन्य समय सोर्स के कॉम्बिनेशन का इस्तेमाल कर सकते हैं.
Android 12 में, external
सोर्स से मिले समय के सुझाव के तौर पर, ये सुझाव उपलब्ध हैं:
- वीएचएएल प्रॉपर्टी. एक नई
वीएचएएल प्रॉपर्टी
जिसका नाम
EPOCH_TIMEहै, उपलब्ध है. यह प्रॉपर्टी, 1/1/1970 यूटीसी से बीते हुए मिलीसेकंड की संख्या दिखाती है. इसकी वैल्यू को, AndroidTimeManagerको पास किया जा सकता है, ताकि सिस्टम के नए समय का सुझाव दिया जा सके. रेफ़रंस के तौर पर लागू करने वाले पेज पर, वीएचएएल को लागू करने का एक सैंपल दिया गया है. यह सैंपल, इस प्रॉपर्टी को अपडेट करता है. - सिस्टम एपीआई. सिस्टम को, बाहरी सोर्स से मिले समय का सुझाव देने के लिए, TimeManager में
suggestExternalTime()नाम का नया तरीका उपलब्ध है. अगर सिस्टम को, बाहरी सोर्स से मिले समय के सुझावों को ध्यान में रखने के लिए कॉन्फ़िगर किया गया है (कॉन्फ़िगरेशन फ़ाइल मेंconfig_autoTimeSourcesPriorityका इस्तेमाल करके), तो इस तरीके को पास किया गया टाइमस्टैंप , सिस्टम का समय सेट करने के लिए इस्तेमाल किया जाता है. हालांकि, ऐसा तब होता है, जब ज़्यादा प्राथमिकता वाले समय के सुझाव उपलब्ध न हों .
बाहरी सोर्स से मिले समय के सुझावों को लागू करने के लिए, यहां दिया गया तरीका अपनाएं:
- रिसोर्स कॉन्फ़िगरेशन फ़ाइल (
core/res/res/values/config.xml) को अपडेट करें. इसके बाद,config_autoTimeSourcesPriorityमेंexternalवैल्यू जोड़ें:<string-array name="config_autoTimeSourcesPriority> <item>external</item> <item>gnss</item> </string-array>ऐसा करने पर, Android को निर्देश मिलता है कि सिस्टम की घड़ी सेट करते समय, बाहरी सोर्स से मिले समय के सुझावों को सबसे ज़्यादा प्राथमिकता दी जाए. वाहन में मौजूद हार्डवेयर, नए
EPOCH_TIMEवीएचएएल प्रॉपर्टी में टाइमस्टैंप का सुझाव लिखता है. - वेंडर की ओर से उपलब्ध कराया गया कोई ऐप्लिकेशन, इस प्रॉपर्टी को पढ़ता है और
TimeManager.suggestExternal()को कॉल करता है. इसके बाद, Android, दिए गए टाइमस्टैंप को सिस्टम की नई घड़ी की वैल्यू के तौर पर इस्तेमाल कर सकता है.