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