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

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

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

ध्यान दें: जब आपका ऐप्लिकेशन बैकग्राउंड में चल रहा हो, तो जगह की जानकारी का ऐक्सेस, ऐप्लिकेशन के मुख्य फ़ंक्शन के लिए ज़रूरी होना चाहिए. साथ ही, इसकी जानकारी उपयोगकर्ताओं को साफ़ तौर पर दी जानी चाहिए.

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

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

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

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

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

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

अपनी गतिविधि के onCreate() तरीके में, Fused Location Provider Client का एक इंस्टेंस बनाएं, जैसा कि यहां दिए गए कोड स्निपेट में दिखाया गया है.

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 डिवाइस पर मौजूदा जगह की जानकारी पाने के बारे में ज़्यादा जानने के लिए, ये लेख पढ़ें:

सैंपल

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