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