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

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

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

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

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

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

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

  • Open Street Map (OSM) के डेटा से रेफ़रंस डेटासेट जनरेट करने के लिए, होस्ट टूल. इस डेटासेट का इस्तेमाल, रेफ़रंस लागू करने के साथ किया जा सकता है.

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

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

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

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

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

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

    • टाइम ज़ोन डिटेक्टर सेवाओं को टाइम ज़ोन आईडी, डिवाइस की जगह की जानकारी से नहीं, बल्कि 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 रिपोर्ट करता है कि टाइम ज़ोन अनिश्चित है, हमेशा के लिए गड़बड़ी की रिपोर्ट करता है या शुरू करने के दौरान टाइम आउट हो जाता है. अगर मुख्य लिंक ट्रैफ़िक प्रोग्राम (एलटीजेपी) कोई खास सुझाव सबमिट करता है, तो यह प्रोसेस रुक जाती है.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AOSP रेफ़रंस LTZP

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

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

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

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

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