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

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

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

स्थान समय क्षेत्र पहचान सुविधा में AOSP प्लेटफ़ॉर्म में निम्नलिखित घटक शामिल हैं:

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

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

  • एक संदर्भ एलटीजेडपी कार्यान्वयन।

  • OpenStreetMap डेटा से एक संदर्भ डेटा सेट उत्पन्न करने के लिए होस्ट टूलिंग जिसका उपयोग संदर्भ कार्यान्वयन के साथ किया जा सकता है।

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

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

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

  • स्थान-व्युत्पन्न समय क्षेत्र सुझाव किसी डिवाइस पर उपयोगकर्ताओं के बीच साझा नहीं किए जाते हैं।

  • उपयोगकर्ता दिनांक और समय सेटिंग्स स्क्रीन के माध्यम से स्पष्ट रूप से समय क्षेत्र का पता लगाने के लिए स्थान का पता लगाने को नियंत्रित कर सकते हैं। उपयोगकर्ताओं को अनुमति संवाद के माध्यम से स्पष्ट रूप से अनुमति देने की आवश्यकता नहीं है।

  • डिवाइस स्थान की जानकारी एंड्रॉइड प्लेटफ़ॉर्म सेवाओं को नहीं दी जाती है। इसके बजाय निम्नलिखित होता है:

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

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

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

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

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

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

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

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

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

एओएसपी स्थान समय क्षेत्र का पता लगाने का कार्यान्वयन दो एलटीजेडपी तक की अनुमति देता है, एक प्राथमिक और एक माध्यमिक एलटीजेडपी जैसा कि यहां परिभाषित किया गया है:

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

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

स्थान समय क्षेत्र का पता लगाने की जानकारी प्रवाह

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

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

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

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

यह अनुभाग वर्णन करता है कि डिवाइस निर्माता स्थान समय क्षेत्र पहचान का समर्थन करने के लिए डिवाइस को कैसे कॉन्फ़िगर कर सकते हैं।

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

कॉन्फ़िगरेशन कुंजी एओएसपी मान विवरण
config_enableGeolocationTimeZoneDetection true यह स्थान समय क्षेत्र पहचान सुविधा के लिए मुख्य नियंत्रण है।

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

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

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

एलटीजेडपी स्थिति एपीआई

Android 14 में, LTZP API LTZP रिपोर्टिंग स्थिति जानकारी का समर्थन करते हैं। यह LTZP को उन मुद्दों की रिपोर्ट करने में सक्षम बनाता है जिनका प्लेटफ़ॉर्म स्वयं पता लगाने में सक्षम नहीं हो सकता है, क्योंकि प्लेटफ़ॉर्म समय क्षेत्र का पता लगाने वाले घटक सीधे स्थान एल्गोरिदम में स्थान या समय क्षेत्र का पता लगाने में शामिल नहीं होते हैं।

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

LTZP द्वारा रिपोर्ट की जा सकने वाली स्थितियों के बारे में अधिक जानकारी के लिए, TimeZoneProviderStatus देखें।

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

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

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

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

एओएसपी संदर्भ एलटीजेडपी

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

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

डीबग करें और परीक्षण करें

निम्नलिखित अनुभाग डिबगिंग और स्थान समय क्षेत्र पहचान सुविधा का परीक्षण करने के लिए शेल कमांड का वर्णन करता है।

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

जब स्थान एल्गोरिदम एंड्रॉइड 12 या उच्चतर चलाने वाले डिवाइस पर समर्थित होता है, तो एंड्रॉइड बूट समय पर 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 के व्यवहार को प्रभावित करने के लिए किया जा सकता है। अधिक जानकारी के लिए, डिवाइस_कॉन्फिग सेवा का उपयोग करके डिवाइस को कॉन्फ़िगर करना देखें।

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

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