जगह के समय क्षेत्र की पहचान करने की सुविधा

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

जगह के टाइम ज़ोन की पहचान करने की सुविधा, टेलीफ़ोन टाइम ज़ोन की पहचान करने की सुविधा का एक विकल्प है. इस सुविधा के लिए टेलीफ़ोनी की ज़रूरत नहीं है, इसलिए यह सुविधा मोबाइल टेलीफ़ोनी डिवाइस के साथ-साथ अलग-अलग डिवाइस प्रकार के डिवाइस पर काम कर सकती है.

जगह के टाइम ज़ोन की पहचान करने की सुविधा, AOSP प्लैटफ़ॉर्म में इन कॉम्पोनेंट से बनी होती है:

  • सिस्टम सर्वर में टाइम ज़ोन की पहचान करने का लॉजिक
  • Android 12 में, सेटिंग में उपयोगकर्ता के लिए उपलब्ध एक विकल्प. इससे उपयोगकर्ता, टेलीफ़ोन और जगह की जानकारी के आधार पर टाइम ज़ोन का पता लगाने के तरीकों में से किसी एक को चुन सकते हैं

  • जगह की जानकारी का पता लगाने और टाइम ज़ोन मैपिंग करने वाले कॉम्पोनेंट के लिए प्लग-इन सिस्टम. इस प्लग इन को जगह की जानकारी का टाइम ज़ोन देने वाली सेवा (LTZP) कहा जाता है. किसी डिवाइस पर, ज़्यादा से ज़्यादा दो प्लग इन हो सकते हैं. प्लैटफ़ॉर्म, सिस्टम एपीआई उपलब्ध कराता है. इनका इस्तेमाल, एलटीजेपी लागू करने के लिए किया जाना चाहिए.

  • एलटीजेपी लागू करने का रेफ़रंस.

  • ओपन स्ट्रीट मैप (ओएसएम) डेटा से रेफ़रंस डेटासेट जनरेट करने के लिए, टूल को होस्ट करें. इसका इस्तेमाल, पहचान फ़ाइल लागू करने के लिए किया जा सकता है.

उपयोगकर्ता की निजता

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

  • अगर जगह की जानकारी का एल्गोरिदम चुनने के लिए टॉगल मौजूद है, तो उपयोगकर्ता किसी भी समय जगह की जानकारी का एल्गोरिदम बंद कर सकते हैं.

  • जगह की जानकारी के आधार पर टाइम ज़ोन के सुझाव, डिवाइस पर मौजूद उपयोगकर्ताओं के बीच शेयर नहीं किए जाते.

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

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

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

सुविधा का काम करने का तरीका

डिवाइस की पहचान करने वाले एल्गोरिदम से मिलने वाले सुझावों के आधार पर, time_zone_detector सेवा यह तय करती है कि डिवाइस का मौजूदा टाइम ज़ोन कब बदलना है.

location_time_zone_manager सेवा, time_zone_detector के लोकेशन एल्गोरिदम के लिए सुझाव जनरेट करने की ज़िम्मेदार होती है. location_time_zone_manager सेवा, सिस्टम सर्वर प्रोसेस में चलती है.

location_time_zone_manager सेवा में, समय क्षेत्र का पता लगाने वाला कोई लॉजिक शामिल नहीं है. यह सेवा, एक या दो LTZP प्लगिन के लाइफ़साइकल को मैनेज करने के लिए ज़िम्मेदार है.

जब जगह के समय क्षेत्र की पहचान करने की ज़रूरत नहीं होती, तो एलटीज़ेडपी शुरू नहीं होते. इसका मतलब है कि जगह के टाइम ज़ोन का पता लगाने वाला सिस्टम, एलटीज़ेडपी से डिवाइस की जगह की जानकारी तब तक नहीं ट्रैक करने के लिए कहता, जब तक कि ऐसा करने की ज़रूरत न पड़े. इस तरह के व्यवहार की कुछ वजहें ये हो सकती हैं:

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

साथ ही, जब मौजूदा उपयोगकर्ता, उपयोगकर्ताओं के बीच जगह की जानकारी शेयर करने से बचने के लिए सेटिंग बदलता है, तो location_time_zone_manager सेवा, ज़रूरत पड़ने पर एक अनिश्चित सुझाव देती है.

इन विकल्पों की वजह से, मौजूदा एल्गोरिदम को जगह की जानकारी पर स्विच करने या मौजूदा उपयोगकर्ता को स्विच करने के बाद, टाइम ज़ोन का पता लगाने में कुछ सेकंड लगते हैं. यह इस बात पर भी निर्भर करता है कि इस्तेमाल किए जा रहे एलटीज़ेडपी को कैसे लागू किया जा रहा है.

AOSP में जगह के टाइम ज़ोन की पहचान करने की सुविधा लागू करने पर, ज़्यादा से ज़्यादा दो एलटीज़ेडपी इस्तेमाल किए जा सकते हैं. इनमें एक प्राइमरी और एक सेकंडरी एलटीज़ेडपी शामिल है. इनके बारे में यहां बताया गया है:

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

जैसा कि पहली इमेज में दिखाया गया है, time_zone_detector सेवा को टेलीफ़ोनी या जगह की जानकारी के एल्गोरिदम से टाइम ज़ोन के सुझाव मिलते हैं. जगह की जानकारी का एल्गोरिदम, प्राइमरी या सेकंडरी एलटीज़ेडपी से सुझाव पाता है.

जगह के टाइम ज़ोन की पहचान करने की सुविधा से जुड़ी जानकारी का फ़्लो

पहली इमेज. जगह के टाइम ज़ोन का पता लगाने की सुविधा की जानकारी का फ़्लो.

डिवाइस कॉन्फ़िगरेशन से जुड़ी ज़रूरी शर्तें

जगह की जानकारी के टाइम ज़ोन की सुविधा का इस्तेमाल करने के लिए, डिवाइसों को ऐसे एलटीज़ेडपी के साथ कॉन्फ़िगर करना ज़रूरी है जिनका इस्तेमाल डिवाइस कर सकता है. डिवाइस में कम से कम एक LTZP चालू होना और उसे कॉन्फ़िगर करना ज़रूरी है, ताकि जगह के समय क्षेत्र का पता लगाने की सुविधा काम कर सके और सेटिंग में जाकर उपयोगकर्ताओं को दिखे.

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

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

AOSP का बुनियादी कॉन्फ़िगरेशन, frameworks/base/core/res/res/values/config.xml पर मौजूद है:

कॉन्फ़िगरेशन कुंजी एओएसपी वैल्यू ब्यौरा
config_enableGeolocationTimeZoneDetection true यह जगह के टाइम ज़ोन की पहचान करने की सुविधा का मुख्य कंट्रोल है.

यह सुविधा एओएसपी में डिफ़ॉल्ट रूप से काम करती है. लोगों को यह सुविधा उपलब्ध कराने के लिए, कम से कम एक LTZP चालू या कॉन्फ़िगर किया जाना ज़रूरी है.

वैल्यू को false पर सेट करने से, मेमोरी में थोड़ी बचत करने के लिए, यह सुविधा पूरी तरह से बंद हो जाती है.
config_enablePrimaryLocationTimeZoneProvider false इससे प्राइमरी LTZP चालू हो जाता है.
config_primaryLocationTimeZoneProviderPackageName इसे उस ऐप्लिकेशन के पैकेज के नाम पर सेट करें जहां सेवा देने वाली मुख्य कंपनी की सेवा मिल सकती है.
config_enableSecondaryLocationTimeZoneProvider false इससे सेकंडरी LTZP चालू होता है.
config_secondaryLocationTimeZoneProviderPackageName इसे उस ऐप्लिकेशन के पैकेज के नाम पर सेट करें जहां सेकंडरी सेवा देने वाली कंपनी की सेवाएं मिल सकती हैं.

डिफ़ॉल्ट रूप से, AOSP कॉन्फ़िगरेशन में config_enableGeolocationTimeZoneDetection बटन को true पर सेट किया गया है. इससे, जगह के टाइम ज़ोन की पहचान करने की सुविधा काम करती है. शुरुआत में, यह सुविधा उपयोगकर्ताओं को नहीं दिखती, क्योंकि AOSP में डिफ़ॉल्ट रूप से LTZP कॉन्फ़िगरेशन शामिल नहीं होता. हालांकि, इस डिफ़ॉल्ट कॉन्फ़िगरेशन का इस्तेमाल करके, डिवाइस बनाने वाली कंपनियां जांच के लिए कमांड लाइन से एलटीज़ेडपी को चालू और सिम्युलेट कर सकती हैं. ज़्यादा जानकारी के लिए, डीबग करना और जांच करना देखें.

एलटीजेपी के स्टेटस के बारे में जानकारी देने वाले एपीआई

Android 14 में, LTZP एपीआई, LTZP की रिपोर्टिंग की स्थिति की जानकारी के साथ काम करते हैं. इससे LTZP को उन समस्याओं की शिकायत करने में मदद मिलती है जिन्हें प्लैटफ़ॉर्म शायद खुद न ढूंढ पाए. ऐसा इसलिए, क्योंकि प्लैटफ़ॉर्म के टाइम ज़ोन का पता लगाने वाले कॉम्पोनेंट, जगह की जानकारी या टाइम ज़ोन का पता लगाने वाले एल्गोरिदम में सीधे तौर पर शामिल नहीं होते.

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

LTZP की ओर से रिपोर्ट किए जा सकने वाले स्टेटस के बारे में ज़्यादा जानकारी के लिए, TimeZoneProviderStatus देखें.

LTZP कॉन्फ़िगरेशन और डिप्लॉयमेंट

LTZP को कॉन्फ़िगर करते समय, frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java के सोर्स कोड में दिए गए निर्देश पढ़ें. Javadoc की टिप्पणियां, सेवा, ज़रूरी अनुमतियों, और अन्य कॉन्फ़िगरेशन के बारे में जानकारी देती हैं.

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

मॉड्यूल सिस्टम कॉम्पोनेंट (मॉड्यूल) वाले डिवाइसों पर, LTZP में इस्तेमाल किए गए भौगोलिक डेटा और टाइम ज़ोन डेटा मॉड्यूल (com.android.tzdata) में इस्तेमाल किए गए टाइम ज़ोन नियमों (tzdb) के बीच इंटरैक्शन को ध्यान में रखें. किसी एक को अपडेट नहीं करने पर, वर्शन में बदलाव हो सकता है. ज़्यादा जानकारी के लिए, सुविधा को अपनाने से जुड़ी बातें देखें.

AOSP रेफ़रंस LTZP

AOSP में, packages/modules/GeoTZ में LTZP लागू करने का रेफ़रंस मौजूद है. इस रेफ़रंस को लागू करने के लिए, डिवाइस की जगह की जानकारी का पता लगाने के लिए AOSP API का इस्तेमाल किया जाता है. साथ ही, जगह की जानकारी को टाइम ज़ोन आईडी के सेट में मैप करने के लिए, डिवाइस पर मौजूद डेटा फ़ाइल का इस्तेमाल किया जाता है.

सोर्स कोड के साथ, दूसरे ओपन सोर्स प्रोजेक्ट से मिला रेफ़रंस डेटा सेट शामिल किया जाता है. ज़्यादा जानकारी के लिए, README.md और लाइसेंस वाली अलग-अलग फ़ाइलें देखें.

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

इस सेक्शन में, जगह के टाइम ज़ोन की पहचान करने की सुविधा को डीबग करने और उसकी जांच करने के लिए, शेल कमांड के बारे में बताया गया है.

location_time_zone_manager सेवा के साथ इंटरैक्ट करना

अगर Android 12 और उसके बाद के वर्शन वाले डिवाइस पर जगह की जानकारी का एल्गोरिदम काम करता है, तो Android, बूट होने के समय location_time_zone_manager सेवा को इंस्टैंशिएट करता है.

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

adb shell cmd location_time_zone_manager dump

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

adb shell cmd location_time_zone_manager help

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

LTZP लागू करने वाले लोग, डीबग करने या जांच करने में मदद कर सकते हैं. उदाहरण के लिए, सिस्टम सर्वर प्रोसेस में रजिस्टर होने पर, AOSP रेफ़रंस LTZP को डीबग करने के लिए, इस कमांड का इस्तेमाल किया जा सकता है:

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService