अंतिम ज्ञात स्थान प्राप्त करना

Google Play services के लोकेशन एपीआई का इस्तेमाल करके, आपका ऐप्लिकेशन उपयोगकर्ता के डिवाइस की पिछली जगह की जानकारी का अनुरोध कर सकता है. ज़्यादातर मामलों में, आपको उपयोगकर्ता की मौजूदा जगह की जानकारी चाहिए होती है. यह जानकारी, आम तौर पर डिवाइस की आखिरी बार पता लगाई गई जगह की जानकारी के बराबर होती है.

खास तौर पर, डिवाइस की पिछली बार पता लगाई गई जगह की जानकारी पाने के लिए, फ़्यूज़्ड लोकेशन प्रोवाइडर का इस्तेमाल करें. कई तरह से जांची गई सही जगह की जानकारी देने वाला एपीआई, Google Play services में मौजूद लोकेशन एपीआई में से एक है. यह जगह की जानकारी की टेक्नोलॉजी को मैनेज करता है और एक एपीआई उपलब्ध कराता है, ताकि आप ज़्यादा सटीक या कम बैटरी खर्च करने जैसी ज़रूरी शर्तें तय कर सकें. यह डिवाइस की बैटरी के इस्तेमाल को भी ऑप्टिमाइज़ करता है.

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

Google Play services को सेट अप करना

फ़्यूज़्ड लोकेशन प्रोवाइडर को ऐक्सेस करने के लिए, आपके ऐप्लिकेशन के डेवलपमेंट प्रोजेक्ट में Google Play services शामिल होनी चाहिए. एसडीके मैनेजर की मदद से, Google Play services कॉम्पोनेंट को डाउनलोड और इंस्टॉल करें. इसके बाद, लाइब्रेरी को अपने प्रोजेक्ट में जोड़ें. ज़्यादा जानकारी के लिए, Google Play services सेट अप करने की गाइड देखें.

ऐप्लिकेशन की अनुमतियां तय करना

जिन ऐप्लिकेशन की सुविधाओं में जगह की जानकारी का डेटा इस्तेमाल करने वाली सेवाओं का इस्तेमाल किया जाता है उन्हें सुविधाओं के इस्तेमाल के उदाहरणों के आधार पर, जगह की जानकारी की अनुमतियों का अनुरोध करना चाहिए.

जगह की जानकारी की सेवा का क्लाइंट बनाएं

अपनी ऐक्टिविटी के onCreate() तरीके में, कई तरह से जांची गई सही जगह की जानकारी देने वाला एपीआई क्लाइंट का एक इंस्टेंस बनाएं. इसके लिए, यहां दिया गया कोड स्निपेट देखें.

private lateinit var fusedLocationClient: FusedLocationProviderClient

override fun onCreate(savedInstanceState: Bundle?) {
    // ...

    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
}

डिवाइस की वह आखिरी जगह जिसके बारे में जानकारी है

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

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

fusedLocationClient.lastLocation
    .addOnSuccessListener { location: Location? ->
        // Got last known location. In some rare situations this can be null.
    }

getLastLocation() वाला तरीका, Task दिखाता है. इसका इस्तेमाल करके, किसी भौगोलिक जगह के अक्षांश और देशांतर के निर्देशांकों के साथ Location ऑब्जेक्ट पाया जा सकता है. इन स्थितियों में, जगह की जानकारी वाला ऑब्जेक्ट null हो सकता है:

  • डिवाइस की सेटिंग में, जगह की जानकारी ऐक्सेस करने की सुविधा बंद है. अगर पिछली जगह की जानकारी पहले हासिल की गई थी, तब भी नतीजा null हो सकता है. ऐसा इसलिए, क्योंकि जगह की जानकारी बंद करने से कैश मेमोरी भी मिट जाती है.
  • डिवाइस ने कभी भी अपनी जगह की जानकारी रिकॉर्ड नहीं की. ऐसा तब हो सकता है, जब डिवाइस नया हो या उसे फ़ैक्ट्री सेटिंग पर रीस्टोर किया गया हो.
  • डिवाइस पर Google Play services को रीस्टार्ट किया गया है. साथ ही, ऐसा कोई ऐक्टिव कई तरह से जांची गई सही जगह की जानकारी देने वाला एपीआई क्लाइंट नहीं है जिसने सेवाएं रीस्टार्ट होने के बाद, जगह की जानकारी का अनुरोध किया हो. इस स्थिति से बचने के लिए, नया क्लाइंट बनाएं और डिवाइस की जगह की जानकारी का अपडेट का अनुरोध खुद करें. ज़्यादा जानकारी के लिए, डिवाइस की जगह की जानकारी के अपडेट का अनुरोध करना लेख पढ़ें.

जगह की जानकारी का सबसे सटीक अनुमान चुनना

FusedLocationProviderClient, डिवाइस की जगह की जानकारी पाने के कई तरीके उपलब्ध कराता है. अपने ऐप्लिकेशन के इस्तेमाल के उदाहरण के आधार पर, इनमें से कोई एक विकल्प चुनें:

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

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

अन्य संसाधन

Android में मौजूदा जगह की जानकारी फ़ेच करने के बारे में ज़्यादा जानने के लिए, यह कॉन्टेंट देखें:

सैंपल

  • मौजूदा जगह की जानकारी फ़ेच करते समय, सबसे सही तरीके दिखाने के लिए सैंपल ऐप्लिकेशन.