Google Play services के लोकेशन एपीआई का इस्तेमाल करके, आपका ऐप्लिकेशन उपयोगकर्ता के डिवाइस की पिछली जगह की जानकारी का अनुरोध कर सकता है. ज़्यादातर मामलों में, आपको उपयोगकर्ता की मौजूदा जगह की जानकारी चाहिए होती है. यह जानकारी, आम तौर पर डिवाइस की आखिरी बार पता लगाई गई जगह की जानकारी के बराबर होती है.
खास तौर पर, डिवाइस की पिछली बार पता लगाई गई जगह की जानकारी पाने के लिए, कई तरह से जांची गई सही जगह की जानकारी देने वाले एपीआई का इस्तेमाल करें. कई तरह से जांची गई सही जगह की जानकारी देने वाला एपीआई, Google Play services में मौजूद लोकेशन एपीआई में से एक है. यह जगह की जानकारी की टेक्नोलॉजी को मैनेज करता है और एक आसान एपीआई उपलब्ध कराता है. इससे आपको ज़्यादा सटीक जानकारी या कम बैटरी खर्च करने जैसी ज़रूरी शर्तों को पूरा करने में मदद मिलती है. यह डिवाइस की बैटरी के इस्तेमाल को भी ऑप्टिमाइज़ करता है.
ध्यान दें: जब आपका ऐप्लिकेशन बैकग्राउंड में चल रहा हो, तब जगह की जानकारी का ऐक्सेस, ऐप्लिकेशन के मुख्य फ़ंक्शन के लिए ज़रूरी होना चाहिए. साथ ही, उपयोगकर्ताओं को इसके बारे में साफ़ तौर पर जानकारी दी जानी चाहिए.
इस लेसन में, कई तरह से जांची गई सही जगह की जानकारी देने वाले एपीआई में getLastLocation() तरीके का इस्तेमाल करके, डिवाइस की जगह की जानकारी के लिए एक अनुरोध करने का तरीका बताया गया है.
Google Play services को सेट अप करना
कई तरह से जांची गई सही जगह की जानकारी देने वाले एपीआई को ऐक्सेस करने के लिए, आपके ऐप्लिकेशन के डेवलपमेंट प्रोजेक्ट में Google Play services को शामिल करना ज़रूरी है. एसडीके मैनेजर की मदद से, Google Play services कॉम्पोनेंट को डाउनलोड और इंस्टॉल करें. इसके बाद, लाइब्रेरी को अपने प्रोजेक्ट में जोड़ें. ज़्यादा जानकारी के लिए, Google Play Services सेट अप करने की गाइड देखें.
ऐप्लिकेशन की अनुमतियां तय करना
जिन ऐप्लिकेशन की सुविधाओं के लिए, जगह की जानकारी का डेटा इस्तेमाल करने वाली सेवाओं की ज़रूरत होती है उन्हें जगह की जानकारी की अनुमति का अनुरोध करना चाहिए. यह अनुरोध, उन सुविधाओं के इस्तेमाल के उदाहरणों के आधार पर किया जाना चाहिए.
जगह की जानकारी का डेटा इस्तेमाल करने वाली सेवा का क्लाइंट बनाएं
अपनी गतिविधि के onCreate() तरीके में,
कई तरह से जांची गई सही जगह की जानकारी देने वाले एपीआई क्लाइंट का इंस्टेंस बनाएं. इसके लिए, यहां दिया गया कोड स्निपेट देखें.
Kotlin
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
Java
private FusedLocationProviderClient fusedLocationClient; // .. @Override protected void onCreate(Bundle savedInstanceState) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this); }
डिवाइस की वह आखिरी जगह जिसके बारे में जानकारी है
जगह की जानकारी का डेटा इस्तेमाल करने वाली सेवा का क्लाइंट बनाने के बाद, उपयोगकर्ता के डिवाइस की आखिरी बार पता लगाई गई जगह की जानकारी हासिल की जा सकती है. जब आपका ऐप्लिकेशन इनसे कनेक्ट हो, तब डिवाइस की जगह की जानकारी पाने के लिए, कई तरह से जांची गई सही जगह की जानकारी देने वाले एपीआई के getLastLocation() तरीके का इस्तेमाल किया जा सकता है. इस कॉल से मिलने वाली जगह की जानकारी कितनी सटीक है, यह आपके ऐप्लिकेशन मेनिफ़ेस्ट में सेट की गई अनुमति की सेटिंग से तय होता है. इसके बारे में, जगह की जानकारी की अनुमतियों का अनुरोध करने के तरीके से जुड़ी गाइड में बताया गया है.
डिवाइस की आखिरी जगह की जानकारी का अनुरोध करने के लिए, getLastLocation()
मेथड को कॉल करें. यहां दिए गए कोड स्निपेट में, अनुरोध और जवाब को मैनेज करने का आसान तरीका बताया गया है:
Kotlin
fusedLocationClient.lastLocation .addOnSuccessListener { location : Location? -> // Got last known location. In some rare situations this can be null. }
Java
fusedLocationClient.getLastLocation() .addOnSuccessListener(this, new OnSuccessListener<Location>() { @Override public void onSuccess(Location location) { // Got last known location. In some rare situations this can be null. if (location != null) { // Logic to handle location object } } });
getLastLocation() वाला तरीका, Task दिखाता है. इसका इस्तेमाल करके, किसी भौगोलिक जगह के अक्षांश और देशांतर के निर्देशांकों के साथ Location ऑब्जेक्ट पाया जा सकता है. इन स्थितियों में, जगह की जानकारी वाला ऑब्जेक्ट null हो सकता है:
- डिवाइस की सेटिंग में, जगह की जानकारी ऐक्सेस करने की सुविधा बंद है. जगह की जानकारी की सेटिंग बंद करने पर, कैश मेमोरी भी मिट जाती है. इसलिए, ऐसा हो सकता है कि पिछली जगह की जानकारी पहले हासिल की गई हो, लेकिन अब नतीजा
nullमिले. - डिवाइस ने कभी भी अपनी जगह की जानकारी रिकॉर्ड नहीं की. ऐसा नए डिवाइस या फ़ैक्ट्री सेटिंग पर रीस्टोर किए गए डिवाइस के मामले में हो सकता है.
- डिवाइस पर Google Play services को रीस्टार्ट किया गया है. साथ ही, कई तरह से जांची गई सही जगह की जानकारी देने वाले एपीआई का कोई ऐसा क्लाइंट चालू नहीं है जिसने सेवाएं रीस्टार्ट होने के बाद, जगह की जानकारी का अनुरोध किया हो. इस स्थिति से बचने के लिए, नया क्लाइंट बनाएं और डिवाइस की जगह की जानकारी के अपडेट का अनुरोध खुद करें. ज़्यादा जानकारी के लिए, जगह की जानकारी के अपडेट का अनुरोध करना लेख पढ़ें.
जगह की जानकारी का सबसे सटीक अनुमान चुनना
FusedLocationProviderClient, डिवाइस की जगह की जानकारी पाने के कई तरीके उपलब्ध कराता है. अपने ऐप्लिकेशन के इस्तेमाल के उदाहरण के आधार पर, इनमें से कोई एक विकल्प चुनें:
getLastLocation()की मदद से, जगह की जानकारी का अनुमान तेज़ी से लगाया जा सकता है. साथ ही, आपके ऐप्लिकेशन की वजह से बैटरी के इस्तेमाल को कम किया जा सकता है. हालांकि, अगर हाल ही में किसी अन्य क्लाइंट ने जगह की जानकारी का इस्तेमाल नहीं किया है, तो जगह की जानकारी पुरानी हो सकती है.getCurrentLocation()को जगह की ज़्यादा सटीक और अप-टू-डेट जानकारी लगातार मिलती रहती है. हालांकि, इस तरीके से डिवाइस पर जगह की जानकारी का हिसाब लगाया जा सकता हैजब भी संभव हो, जगह की नई जानकारी पाने का यह सबसे सही तरीका है. साथ ही, यह
requestLocationUpdates()का इस्तेमाल करके, डिवाइस की जगह की जानकारी के अपडेट पाने की सुविधा को खुद शुरू करने और मैनेज करने जैसे विकल्पों से ज़्यादा सुरक्षित है. अगर आपका ऐप्लिकेशनrequestLocationUpdates()को कॉल करता है, तो जगह की जानकारी उपलब्ध न होने पर या नई जगह की जानकारी मिलने के बाद अनुरोध को सही तरीके से न रोके जाने पर, आपका ऐप्लिकेशन कभी-कभी ज़्यादा बैटरी खर्च कर सकता है.
अन्य संसाधन
Android में मौजूदा जगह की जानकारी फ़ेच करने के बारे में ज़्यादा जानने के लिए, यह कॉन्टेंट देखें:
सैंपल
- सैंपल के तौर पर मिला ऐप्लिकेशन, ताकि मौजूदा जगह की जानकारी फ़ेच करते समय सबसे सही तरीके दिखाए जा सकें.