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

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

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

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

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

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

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

  • 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 प्लगिन के लाइफ़साइकल को मैनेज करने के लिए ज़िम्मेदार होती है.

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

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

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

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

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

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

LTZP को कॉन्फ़िगर और डिप्लॉय करना

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

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

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

AOSP का रेफ़रंस एलटीज़ेडपी

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

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

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