स्थान समय क्षेत्र का पता लगाना

स्थान समय क्षेत्र का पता लगाना, Android 12 या उच्चतर पर उपलब्ध, एक वैकल्पिक स्वचालित समय क्षेत्र पहचान सुविधा है जो उपकरणों को समय क्षेत्र निर्धारित करने के लिए अपने स्थान और समय क्षेत्र मानचित्र डेटा का उपयोग करने की अनुमति देती है।

स्थान समय क्षेत्र का पता लगाना टेलीफोनी समय क्षेत्र का पता लगाने का एक वैकल्पिक तंत्र है। चूंकि इस सुविधा के लिए टेलीफ़ोनी की आवश्यकता नहीं होती है, इसलिए इस सुविधा को मोबाइल टेलीफ़ोनी उपकरणों के अतिरिक्त विभिन्न रूप कारकों के उपकरणों पर समर्थित किया जा सकता है।

लोकेशन टाइम ज़ोन डिटेक्शन फ़ीचर में AOSP प्लेटफ़ॉर्म में निम्नलिखित घटक होते हैं:

  • सिस्टम सर्वर में टाइम ज़ोन डिटेक्शन लॉजिक।
  • एंड्रॉइड 12 में शुरू की गई सेटिंग्स में एक उपयोगकर्ता-सुलभ विकल्प, उपयोगकर्ताओं को टेलीफोनी और स्थान समय क्षेत्र पहचान तंत्र के बीच चयन करने में सक्षम बनाता है।
  • घटकों के लिए एक प्लग-इन सिस्टम जो स्थान का पता लगाने और समय क्षेत्र की मैपिंग करता है। प्लग-इन को स्थान समय क्षेत्र प्रदाता (LTZP) कहा जाता है और एक डिवाइस पर उनमें से अधिकतम दो हो सकते हैं।
  • एक संदर्भ LTZP कार्यान्वयन।
  • OpenStreetMap डेटा से संदर्भ डेटा सेट उत्पन्न करने के लिए होस्ट टूलिंग जिसका उपयोग संदर्भ कार्यान्वयन के साथ किया जा सकता है।

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

स्थान समय क्षेत्र का पता लगाने में निम्नलिखित उपयोगकर्ता गोपनीयता विशेषताएं शामिल हैं:

  • उपयोगकर्ता किसी भी समय स्थान समय क्षेत्र का पता लगाना बंद कर सकते हैं।
  • स्थान-व्युत्पन्न समय क्षेत्र सुझाव डिवाइस पर उपयोगकर्ताओं के बीच साझा नहीं किए जाते हैं।
  • उपयोगकर्ता दिनांक और समय सेटिंग्स स्क्रीन के माध्यम से स्पष्ट रूप से समय क्षेत्र का पता लगाने के लिए स्थान की पहचान को नियंत्रित कर सकते हैं। उपयोगकर्ताओं को अनुमति संवाद के माध्यम से स्पष्ट रूप से अनुमति देने की आवश्यकता नहीं है।
  • डिवाइस स्थान की जानकारी Android प्लेटफ़ॉर्म सेवाओं को नहीं दी जाती है। इसके बजाय निम्नलिखित होता है:

    • टाइम ज़ोन डिटेक्टर सेवाओं को केवल LTZP द्वारा टाइम ज़ोन आईडी भेजा जाता है, डिवाइस के स्थान पर नहीं। स्थान समय क्षेत्र पहचान का समर्थन करने के लिए आवश्यक न्यूनतम एपीआई है।
    • अलग-अलग एलटीजेडपी का संचालन सिस्टम इंटीग्रेटर्स पर तय करने के लिए छोड़ दिया गया है। LTZP कार्यान्वयन पूरी तरह से Android डिवाइस पर रखे गए टाइम ज़ोन मैप डेटा का उपयोग कर सकते हैं, सर्वर का लाभ उठा सकते हैं या हाइब्रिड दृष्टिकोण का उपयोग कर सकते हैं।

फ़ीचर व्यवहार

time_zone_detector सेवा यह निर्धारित करती है कि डिवाइस के वर्तमान समय क्षेत्र को पता लगाने के मूल से प्राप्त सुझावों के आधार पर कब बदलना है।

location_time_zone_manager सेवा time_zone_detector के मूल स्थान के लिए सुझाव देने के लिए ज़िम्मेदार है। location_time_zone_manager सेवा सिस्टम सर्वर प्रक्रिया में चलती है।

location_time_zone_manager सेवा में कोई समय क्षेत्र डिटेक्शन लॉजिक नहीं है। यह लोकेशन टाइम ज़ोन प्रोवाइडर्स (LTZP) नामक एक या दो प्लग-इन के जीवनचक्र के प्रबंधन के लिए ज़िम्मेदार है।

जब स्थान समय क्षेत्र का पता लगाने की आवश्यकता नहीं होती है, तो LTZP प्रारंभ नहीं होते हैं। इसका मतलब यह है कि स्थान समय क्षेत्र पहचान प्रणाली एलटीजेडपी को डिवाइस के स्थान को ट्रैक करने के लिए नहीं कहती है जब तक कि उन्हें स्पष्ट रूप से आवश्यक न हो। इस व्यवहार के कुछ कारणों में निम्नलिखित शामिल हैं:

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

साथ ही, जब वर्तमान उपयोगकर्ता उपयोगकर्ताओं के बीच स्थान की जानकारी साझा करने से बचने के लिए बदलता है, तो location_time_zone_manager सेवा अनिश्चित सुझाव देती है (यदि एक की आवश्यकता हो)।

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

AOSP स्थान समय क्षेत्र का पता लगाने का कार्यान्वयन दो LTZP तक की अनुमति देता है, एक प्राथमिक और एक द्वितीयक LTZP जैसा कि यहाँ परिभाषित किया गया है:

प्राथमिक एलटीजेडपी
हर समय चलता है जब उपयोगकर्ता ने स्थान समय क्षेत्र का पता लगाने की सुविधा को चलाने की अनुमति दी है।
माध्यमिक LTZP
तब चलता है जब प्राथमिक LTZP रिपोर्ट करता है कि समय क्षेत्र अनिश्चित है , एक स्थायी विफलता की रिपोर्ट करता है, या आरंभीकरण के दौरान समय समाप्त हो जाता है। यदि प्राथमिक LTZP एक निश्चित सुझाव प्रस्तुत करता है तो रुक जाता है।

जैसा कि चित्र 1 में दिखाया गया है, time_zone_detector सेवाओं को टेलीफोनी या स्थान मूल से समय क्षेत्र के सुझाव प्राप्त होते हैं। स्थान मूल को प्राथमिक या द्वितीयक LTZP से सुझाव प्राप्त होते हैं।

स्थान समय क्षेत्र पहचान सूचना प्रवाह

चित्र 1. स्थान समय क्षेत्र पहचान सूचना प्रवाह।

डिवाइस कॉन्फ़िगरेशन आवश्यकताएँ

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

उपकरण का प्रारूप

यह खंड बताता है कि उपकरण निर्माता स्थान समय क्षेत्र पहचान का समर्थन करने के लिए उपकरणों को कैसे कॉन्फ़िगर कर सकते हैं।

आधार AOSP कॉन्फ़िगरेशन frameworks/base/core/res/res/values/config.xml पर है:

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

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

मान को गलत पर सेट करने से यह सुविधा पूरी तरह से एक छोटी मेमोरी बचत के लिए अक्षम हो जाती है।
config_enablePrimaryLocationTimeZoneProvider false यह प्राथमिक LTZP को सक्षम बनाता है।
config_primaryLocationTimeZoneProviderPackageName इसे ऐप के पैकेज नाम पर सेट करें जहां प्राथमिक प्रदाता सेवा मिल सकती है।
config_enableSecondaryLocationTimeZoneProvider false यह द्वितीयक LTZP को सक्षम बनाता है।
config_secondaryLocationTimeZoneProviderPackageName इसे ऐप के पैकेज नाम पर सेट करें जहां द्वितीयक प्रदाता सेवा मिल सकती है।

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

स्थान समय क्षेत्र प्रदाता विन्यास और परिनियोजन

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

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

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

AOSP संदर्भ स्थान समय क्षेत्र प्रदाता

AOSP में packages/modules/GeoTZ के अंतर्गत एक संदर्भ स्थान समय क्षेत्र प्रदाता कार्यान्वयन शामिल है। यह संदर्भ कार्यान्वयन डिवाइस के स्थान को निर्धारित करने के लिए एओएसपी एपीआई का उपयोग करता है और स्थान को समय क्षेत्र आईडी के सेट पर मैप करने के लिए ऑन-डिवाइस डेटा फ़ाइल का उपयोग करता है।

अन्य ओपन सोर्स प्रोजेक्ट्स से प्राप्त एक संदर्भ डेटा सेट को सोर्स कोड के साथ शामिल किया गया है। अधिक जानकारी के लिए, 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