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