उपयोगकर्ता की निजता का सम्मान करने के लिए, ऐप्लिकेशन डेवलपर से सिर्फ़ अनुमानित जगह की जानकारी के लिए अनुमति का अनुरोध करने का सुझाव दिया जाता है. जिन ऐप्लिकेशन को अनुमानित जगह की जानकारी की ज़रूरत होती है वे आम तौर पर, नेटवर्क की जगह की जानकारी (एफ़एलपी) का इस्तेमाल करते हैं. ऐसा इसलिए, क्योंकि यह तेज़ी से काम करता है और इसमें कम बैटरी खर्च होती है.
Android पर चलने वाले मोबाइल डिवाइसों की तुलना में, ऑटोमोटिव ऐप्लिकेशन में नेटवर्क की जगह की जानकारी पाना ज़्यादा मुश्किल हो सकता है. आपके पास Android के दो एपीआई इस्तेमाल करने का विकल्प है:
LocationManager API या एलएम के लिए, आपको अपनी पसंद के मुताबिक जगह की जानकारी देने वाली सेवा की साफ़ तौर पर पहचान करनी होगी.
Google Play Services API, कई तरह से जांची गई सही जगह की जानकारी देने वाला एपीआई (एफ़एलपी) की सुविधा के साथ, जगह की जानकारी पाने का आसान तरीका उपलब्ध कराता है.
ऑटोमोटिव ऐप्लिकेशन, एलएम के बजाय Google Play Services (जीपीएस) एपीआई से एफ़एलपी का इस्तेमाल करते हैं. एफ़एलपी, वाहन की ज़रूरत के हिसाब से जगह की जानकारी के अनुरोध के मानदंड और नीतियों (बैटरी और सटीक जानकारी) के आधार पर, जगह की जानकारी देने वाली सबसे सही सेवा चुनता है.
इसके बजाय, एलएम में
NETWORK_PROVIDER का अनुरोध और इस्तेमाल किया जा सकता है. साथ ही, सटीक जगह की जानकारी के लिए
GPS_PROVIDER का इस्तेमाल किया जा सकता है. इसके लिए,
android.permission.ACCESS_FINE_LOCATION
अनुमतियों का इस्तेमाल किया जाता है. एपीआई 31 में, FUSED_PROVIDER,
एलएम के लिए, जगह की जानकारी देने वाली सेवा के तौर पर अब उपलब्ध है.
पहले, इसे सिर्फ़ जीपीएस एपीआई के ज़रिए ऐक्सेस किया जा सकता था. एफ़एलपी को लागू करने का आसान तरीका, FusedLocationProvider.java में देखा जा सकता है.
सिर्फ़ अनुमानित जगह की जानकारी की अनुमति के साथ GPS_PROVIDER का इस्तेमाल किया जा सकता है. हालांकि, फ़्रेमवर्क, उम्मीदों के मुताबिक सटीक जानकारी देने के लिए, सटीक जानकारी की क्वालिटी को कम कर देता है. Android फ़ोन को टारगेट करने वाले डेवलपर के लिए, यह तरीका सही नहीं है. ऐसा इसलिए, क्योंकि इसकी उपलब्धता कम होती है और अनुमानित जगह की जानकारी पाने में अक्सर ज़्यादा समय लगता है.
ऑटोमोटिव ऐप्लिकेशन में नेटवर्क की जगह की जानकारी
Google Mobile Services (GMS) वाले Android फ़ोन पर इस्तेमाल किया जाने वाला NETWORK_PROVIDER, अब सिर्फ़ आस-पास के सेल टावर के आधार पर जगह की जानकारी नहीं देता. अब यह वाई-फ़ाई ऐक्सेस पॉइंट या ब्लूटूथ (बीटी) बीकन का भी इस्तेमाल करता है. NETWORK_PROVIDER का इस्तेमाल करने के लिए, डेटा कनेक्शन की ज़रूरत पड़ सकती है.
ऑटोमोटिव ऐप्लिकेशन के लिए, डिवाइस की पाबंदियां अलग-अलग होती हैं. जीएनएसएस आम तौर पर चालू रहता है. इसलिए, ज़्यादा पावर और बैटरी खर्च होने पर कोई शुल्क नहीं लगता. इससे, IVI के अपटाइम पर कोई असर नहीं पड़ता. हम अपने सर्वर के साथ शेयर किए जाने वाले डेटा को कम करने की कोशिश करते हैं.
इसलिए, कई ऐप्लिकेशन सीधे तौर पर एलएम के बजाय, Play API से एफ़एलपी का इस्तेमाल करते हैं. ऐसा इसलिए, क्योंकि एफ़एलपी, जगह की जानकारी के अनुरोध के मानदंड/नीतियों (जैसे, बैटरी और सटीक जानकारी) को पूरा करने के लिए, सबसे सही जगह की जानकारी देने वाली सेवा का इस्तेमाल करके, स्मार्ट तरीके से काम करता है.
मोबाइल डिवाइसों के उलट, वाहन एक जगह से दूसरी जगह पर तेज़ी से नहीं जाते. वाहन की जगह की जानकारी, ज़्यादातर समय उपलब्ध रहती है.
नेटवर्क की जगह की जानकारी देने वाली सेवा
ज़्यादातर वाहनों में, सेल आईडी (और सिग्नल की ताकत) के बारे में ज़रूरी जानकारी पाने के लिए, ज़रूरी टेलीफ़ोनी एपीआई लागू नहीं किए जाते. इसलिए, एनएलपी को लागू करने के लिए कोई अतिरिक्त फ़ंक्शन उपलब्ध नहीं कराया जाता. साथ ही, हम डेटा के इस्तेमाल को कम करने की कोशिश करते हैं.
कई तरह से जांची गई सही जगह की जानकारी देने वाला एपीआई
मोबाइल एफ़एलपी, नेटवर्क और जीपीएस की जानकारी देने वाली सेवाओं का स्मार्ट तरीके से इस्तेमाल करने के साथ-साथ, जगह की जानकारी की क्वालिटी को बेहतर बनाने के लिए, अन्य सेंसर से मिली जानकारी को भी जोड़ता है. दूसरी ओर, ऑटोमोटिव के एफ़एलपी को लागू करने का मौजूदा तरीका, ऊपर बताई गई मान्यताओं का फ़ायदा लेता है और हमेशा GPS_PROVIDER को सोर्स के तौर पर इस्तेमाल करता है. यह जीएनएसएस से मिली जगह की जानकारी में, ज़रूरत पड़ने पर कुछ गड़बड़ियां जोड़कर, सटीक जानकारी को कम कर देता है. उदाहरण के लिए, जब किसी क्लाइंट को अनुमानित जगह की जानकारी दी जाती है.
इसलिए, कुछ मामलों में, पहली बार जगह की जानकारी उपलब्ध होने में सामान्य से ज़्यादा समय लग सकता है. उदाहरण के लिए, जब पहली बार किसी वाहन या सटीक तौर पर कहें, तो उसके जगह की जानकारी वाले सबसिस्टम का इस्तेमाल किया जाता है या वाहन को टो करने के बाद.
मोबाइल और ऑटोमोटिव ऐप्लिकेशन के लिए डिज़ाइन करना
हमारा सुझाव है कि मोबाइल और ऑटोमोटिव डिवाइसों को टारगेट करने वाले ऐप्लिकेशन, जिन्हें सटीक जानकारी की ज़रूरत नहीं है, वे android.permission.ACCESS_COARSE_LOCATION
सिर्फ़ का अनुरोध करें. साथ ही, उपलब्ध होने पर एफ़एलपी का इस्तेमाल करें. इसके अलावा, आखिरी विकल्प के तौर पर, एक ही अनुमतियों के साथ सीधे तौर पर GPS_PROVIDER का इस्तेमाल करें. फ़्रेमवर्क, एपीआई की उम्मीदों के मुताबिक सटीक जानकारी देने के लिए, जीएनएसएस की सटीक जानकारी की क्वालिटी को कम कर देता है. ज़्यादा जानने के लिए, सटीक जानकारी देखें.
इसके अलावा, इन ऐप्लिकेशन को अपने मेनिफ़ेस्ट में,
android.hardware.location.network
सुविधा को ज़रूरी नहीं के तौर पर साफ़ तौर पर बताना होगा.
उदाहरण के लिए:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
इस तरीके से, अलग-अलग वर्टिकल में मौजूद डिवाइसों के साथ ज़्यादा से ज़्यादा कंपैटिबिलिटी पक्की की जा सकती है. इसलिए, ज़रूरत पड़ने पर जगह की जानकारी पाने के लिए, कोड में कोई अंतर न होने पर, ऐप्लिकेशन की उपलब्धता ज़्यादा से ज़्यादा होती है.