Android Automotive OS पर जगह की अनुमानित जानकारी

उपयोगकर्ता की निजता का सम्मान करने के लिए, ऐप्लिकेशन डेवलपर को सिर्फ़ अनुमानित जगह की जानकारी की अनुमतियों का अनुरोध करने के लिए कहा जाता है. जिन ऐप्लिकेशन को जगह की अनुमानित जानकारी की ज़रूरत होती है वे आम तौर पर, फ़्यूज़्ड नेटवर्क लोकेशन (एफ़एलपी) का इस्तेमाल करते हैं. ऐसा इसलिए, क्योंकि यह तेज़ी से काम करता है और इसमें कम बैटरी खर्च होती है. Android पर काम करने वाले मोबाइल डिवाइसों की तुलना में, Automotive ऐप्लिकेशन में नेटवर्क की जगह की जानकारी पाना ज़्यादा मुश्किल हो सकता है. Android के दो एपीआई का इस्तेमाल किया जा सकता है:

  • 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 फ़ोन को टारगेट करने वाले डेवलपर के लिए इसका कोई मतलब नहीं है. ऐसा इसलिए, क्योंकि इसकी उपलब्धता कम है और अनुमानित जगह की जानकारी पाने में अक्सर ज़्यादा समय लगता है.

वाहन में नेटवर्क की जगह की जानकारी

Android फ़ोन (Google Mobile Services के साथ) पर इस्तेमाल किया जाने वाला NETWORK_PROVIDER, आस-पास के मोबाइल टॉवर, वाई-फ़ाई ऐक्सेस पॉइंट, और ब्लूटूथ (बीटी) बीकन के आधार पर जगह की जानकारी का पता लगाता है. इस वजह से, NETWORK_PROVIDER के लिए डेटा कनेक्शन की ज़रूरत पड़ सकती है.

ऑटोमोटिव ऐप्लिकेशन के लिए, डिवाइस से जुड़ी पाबंदियां अलग-अलग होती हैं. ग्लोबल नेविगेशन सैटेलाइट सिस्टम (जीएनएसएस) आम तौर पर चालू रहता है. इसलिए, ज़्यादा बैटरी खर्च होने और ज़्यादा पावर इस्तेमाल होने की वजह से कोई जुर्माना नहीं लगता. इस वजह से, IVI के अपटाइम पर कोई असर नहीं पड़ता. हम अपने सर्वर के साथ कम से कम डेटा शेयर करने की कोशिश करते हैं.

इसलिए, कई ऐप्लिकेशन सीधे तौर पर FLP का इस्तेमाल करने के बजाय, Play API से FLP का इस्तेमाल करते हैं. ऐसा इसलिए, क्योंकि FLP अपने-आप स्मार्ट तरीके से काम करता है. यह जगह की जानकारी देने वाले ऐसे प्रोवाइडर का इस्तेमाल करता है जो जगह की जानकारी के अनुरोध की शर्तों/नीतियों (जैसे कि बैटरी की खपत और सटीक जानकारी) को पूरा कर सकता है.LocationManager

मोबाइल डिवाइसों के उलट, वाहन एक जगह से दूसरी जगह पर जंप करते हुए कम ही दिखते हैं. वाहन की पोज़िशन की जानकारी, ज़्यादातर समय तक उपलब्ध रहती है.

नेटवर्क लोकेशन की जानकारी देने वाली सेवा (एनएलपी)

ज़्यादातर वाहन, सेल आईडी (और सिग्नल की ताकत) के बारे में ज़रूरी जानकारी पाने के लिए, ज़रूरी टेलीफ़ोनी एपीआई लागू नहीं करते. इस वजह से और डेटा के इस्तेमाल को कम करने के लिए, एनएलपी के फ़ंक्शन को लागू करने की कोई अतिरिक्त सुविधा नहीं दी जाती है.

कई तरह से जांची गई सही जगह की जानकारी देने वाला एपीआई

मोबाइल डिवाइस में मौजूद FLP, नेटवर्क और जीपीएस की जानकारी देने वाली सेवाओं का सही तरीके से इस्तेमाल करता है. साथ ही, यह जगह की जानकारी को और सटीक बनाने के लिए, अन्य सेंसर से मिली जानकारी को भी शामिल करता है. दूसरी ओर, Automotive में FLP को लागू करने का मौजूदा तरीका, ऊपर बताई गई मान्यताओं का फ़ायदा लेता है. साथ ही, यह हमेशा GPS_PROVIDER का इस्तेमाल, बुनियादी सोर्स के तौर पर करता है. यह GNSS से मिली पोज़िशन की जानकारी में बदलाव करता है. साथ ही, ज़रूरत पड़ने पर कुछ गड़बड़ियां जोड़ता है, ताकि जानकारी और भी ज़्यादा गलत हो. उदाहरण के लिए, जब किसी क्लाइंट को जगह की सामान्य जानकारी दी जाती है.

इसलिए, कुछ मामलों में पहली पोज़िशन उपलब्ध होने में सामान्य से ज़्यादा समय लग सकता है. उदाहरण के लिए, जब किसी वाहन का पहली बार इस्तेमाल किया जाता है या जब उसे टो किया जाता है. ज़्यादा सटीक तरीके से कहें, तो जब उसके लोकेशन सबसिस्टम का इस्तेमाल किया जाता है.

मोबाइल और ऑटोमोटिव के इस्तेमाल को टारगेट करने के लिए ऐप्लिकेशन डिज़ाइन करना

मोबाइल और ऑटोमोटिव डिवाइसों को टारगेट करने वाले ऐसे ऐप्लिकेशन के लिए android.permission.ACCESS_COARSE_LOCATION सिर्फ़ अनुरोध करें जिन्हें सटीक जानकारी की ज़रूरत नहीं होती. साथ ही, जब एफएलपी उपलब्ध हो, तब उसका इस्तेमाल करें. इसके अलावा, GPS_PROVIDER का इस्तेमाल सीधे तौर पर उसी अनुमतियों के साथ करें. यह फ़्रेमवर्क, एपीआई की उम्मीदों के मुताबिक सटीक जीएनएसएस पोज़िशन को कम कर देता है. ज़्यादा जानने के लिए, जगह की जानकारी की अनुमतियों का अनुरोध करना में सटीकता देखें.

इसके अलावा, इन ऐप्लिकेशन को अपनी मेनिफ़ेस्ट फ़ाइल में, android.hardware.location.network सुविधा को ज़रूरी नहीं के तौर पर साफ़ तौर पर शामिल करना होगा. उदाहरण के लिए:

<uses-feature android:name="android.hardware.location.network" android:required="false" />

इस तरीके से, अलग-अलग फ़ॉर्म फ़ैक्टर वाले डिवाइसों के साथ बेहतर तरीके से काम किया जा सकता है. इसलिए, ऐप्लिकेशन ज़्यादा से ज़्यादा डिवाइसों पर उपलब्ध होता है. साथ ही, ज़रूरत पड़ने पर पोज़िशन पाने के लिए, कोड में कोई अंतर नहीं होता.