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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

सुविधा का व्यवहार

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

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

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

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

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

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

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

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

प्राइमरी एलटीज़ेडपी
यह कुकी हर समय काम करती है. ऐसा तब होता है, जब उपयोगकर्ता ने टाइम ज़ोन का पता लगाने की सुविधा को चालू किया हो.
सेकंडरी एलटीज़ेडपी
यह तब चलता है, जब प्राइमरी 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 कॉन्फ़िगरेशन शामिल नहीं होता. हालांकि, इस डिफ़ॉल्ट कॉन्फ़िगरेशन का इस्तेमाल करके, डिवाइस बनाने वाली कंपनियां कमांड लाइन से LTZP को चालू और सिम्युलेट कर सकती हैं, ताकि उनकी जांच की जा सके. (ज़्यादा जानकारी के लिए, डीबग और टेस्ट करना लेख पढ़ें)

LTZP स्टेटस एपीआई

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

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

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

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 और 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 की उन सेवा प्रॉपर्टी के बारे में भी बताया गया है जिनका इस्तेमाल, device_config के व्यवहार पर असर डालने के लिए किया जा सकता है. ऐसा टेस्टिंग या प्रोडक्शन के दौरान किया जा सकता है.time_zone_detector ज़्यादा जानकारी के लिए, device_config सेवा का इस्तेमाल करके डिवाइस कॉन्फ़िगर करना लेख पढ़ें.

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

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