जगह की जानकारी की सेटिंग बदलना

अगर आपके ऐप्लिकेशन को जगह की जानकारी का अनुरोध करना है या अनुमति के अपडेट पाने हैं, तो डिवाइस में GPS या वाई-फ़ाई जैसी उपयुक्त सिस्टम सेटिंग सक्षम करने की आवश्यकता होगी स्कैन करना. डिवाइस के GPS जैसी सेवाओं को सीधे सक्षम करने के बजाय, आपका ऐप्लिकेशन, सटीक/ऊर्जा के सही लेवल की जानकारी देता हो और अपडेट करने का इंटरवल चाहिए होता है. साथ ही, डिवाइस अपने-आप सही सिस्टम की सेटिंग में बदलाव करता है. ये सेटिंग Google LocationRequest डेटा ऑब्जेक्ट की है.

इस लेसन में आपको बताया गया है कि सेटिंग क्लाइंट यह देखने के लिए कि कौनसी सेटिंग चालू हैं और जगह की जानकारी की सेटिंग इस डायलॉग बॉक्स में, बस एक टैप में उपयोगकर्ता अपनी सेटिंग अपडेट कर सकते हैं.

जगह की जानकारी कॉन्फ़िगर करें

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

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

जगह की जानकारी के अनुरोध की सुविधा सेट अप करें

कई तरह से जांची गई सही जगह की जानकारी देने वाले से जुड़े अनुरोधों के पैरामीटर सेव करने के लिए, LocationRequest. पैरामीटर, जगह की जानकारी के अनुरोधों के सटीक होने का लेवल तय करते हैं. इसके लिए जगह की जानकारी के अनुरोध के लिए उपलब्ध सभी विकल्पों की जानकारी के साथ, LocationRequest क्लास का संदर्भ शामिल करें. यह लेसन अपडेट का इंटरवल सेट करता है, जिसे जल्दी अपडेट किया जा सकता है अंतराल और प्राथमिकता के बारे में भी बताएंगे, जैसा कि नीचे बताया गया है:

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

setPriority() - इस तरीके से अनुरोध की प्राथमिकता सेट की जाती है, जिससे Google Play को सेवाओं की जगह की जानकारी देने वाली सेवाएं इस बारे में एक मज़बूत संकेत देती हैं कि किन जगह की जानकारी का इस्तेमाल किया जाना चाहिए. ये वैल्यू इस्तेमाल की जा सकती हैं:

  • PRIORITY_BALANCED_POWER_ACCURACY - इस सेटिंग का इस्तेमाल करके, किसी शहर के अंदर जगह की सटीक जानकारी का अनुरोध करें ब्लॉक है, जो करीब 100 मीटर तक सटीक होता है. यह है यह सटीक जानकारी देता है और आम तौर पर कम खपत करता है पावर. इस सेटिंग को चुनने पर, जगह की जानकारी देने वाली सेवाएं, वाई-फ़ाई का इस्तेमाल कर सकती हैं और सेल टावर पोज़िशनिंग की ज़रूरत होती है. हालांकि, ध्यान दें कि आपने विज्ञापन दिखाने के लिए कई बातों पर निर्भर करता है. जैसे, उपलब्ध हैं.
  • PRIORITY_HIGH_ACCURACY - जगह की सटीक जानकारी का अनुरोध करने के लिए, इस सेटिंग का इस्तेमाल करें. के साथ तो जगह की जानकारी के आधार पर जीपीएस का इस्तेमाल करने की संभावना बढ़ जाती है डालें.
  • PRIORITY_LOW_POWER - शहर-लेवल की सटीक वैल्यू का अनुरोध करने के लिए, इस सेटिंग का इस्तेमाल करें. करीब 10 किलोमीटर तक सटीक होता है. इसे यह ज़्यादा सटीक होता है. इससे बिजली की खपत कम हो सकती है.
  • PRIORITY_NO_POWER - अगर आपको ऊर्जा की खपत पर नगण्य प्रभाव चाहिए, तो इस सेटिंग का इस्तेमाल करें, लेकिन उपलब्ध होने पर स्थान अपडेट पाना चाहते हैं. इसके साथ सेटिंग हो रही है, तो आपका ऐप्लिकेशन जगह की जानकारी के किसी भी अपडेट को ट्रिगर नहीं करता, लेकिन अन्य ऐप्लिकेशन से ट्रिगर हुई जगहों की जानकारी मिलती है.

जगह की जानकारी का अनुरोध करें और यहां दिखाए गए तरीके से पैरामीटर सेट करें कोड सैंपल:

Kotlin

fun createLocationRequest() {
  val locationRequest = LocationRequest.Builder()
      .setIntervalMillis(10000)
      .setFastestIntervalMillis(5000)
      .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
      .build()
}

Java

protected void createLocationRequest() {
  LocationRequest locationRequest = LocationRequest.Builder()
      .setIntervalMillis(10000)
      .setFastestIntervalMillis(5000)
      .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
      .build();
}

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

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

जगह की जानकारी की मौजूदा सेटिंग पाना

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

Kotlin

val builder = LocationSettingsRequest.Builder()
        .addLocationRequest(locationRequest)

Java

LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
     .addLocationRequest(locationRequest);

इसके बाद, यह देखें कि मौजूदा जगह की जानकारी की सेटिंग संतुष्ट हैं या नहीं:

Kotlin

val builder = LocationSettingsRequest.Builder()

// ...

val client: SettingsClient = LocationServices.getSettingsClient(this)
val task: Task<LocationSettingsResponse> = client.checkLocationSettings(builder.build())

Java

LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();

// ...

SettingsClient client = LocationServices.getSettingsClient(this);
Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());

जब Task पूरा हो जाता है, तो आपका ऐप्लिकेशन स्थिति को देखकर जगह की जानकारी की सेटिंग की जांच कर सकता है LocationSettingsResponse से मिला कोड ऑब्जेक्ट है. संबंधित जगह की जानकारी की सेटिंग, आपका ऐप्लिकेशन LocationSettingsResponse ऑब्जेक्ट का getLocationSettingsStates() तरीका.

उपयोगकर्ता को जगह की जानकारी की सेटिंग बदलने का प्रॉम्प्ट दिखाएं

यह तय करने के लिए कि जगह की जानकारी की सेटिंग, जगह के लिए सही हैं या नहीं अनुरोध है, तो OnFailureListener से Task ऑब्जेक्ट जो जगह की जानकारी की सेटिंग की पुष्टि करता है. इसके बाद, अगर Exception ऑब्जेक्ट को पास किया गया onFailure() तरीका, ResolvableApiException क्लास से पता चलता है कि सेटिंग बदला जाना चाहिए. इसके बाद, एक डायलॉग दिखाएं, जो उपयोगकर्ता से इसकी अनुमति मांगता है पर कॉल करके स्थान सेटिंग संशोधित करें startResolutionForResult().

नीचे दिया गया कोड स्निपेट यह पता लगाने का तरीका बताता है कि उपयोगकर्ता की जगह सेटिंग की सहायता से स्थान सेवाएं LocationRequest साथ ही, इसमें यह भी बताया गया है कि वे अगर ज़रूरी हो तो जगह की जानकारी की सेटिंग में बदलाव करने की अनुमति:

Kotlin

task.addOnSuccessListener { locationSettingsResponse ->
    // All location settings are satisfied. The client can initialize
    // location requests here.
    // ...
}

task.addOnFailureListener { exception ->
    if (exception is ResolvableApiException){
        // Location settings are not satisfied, but this can be fixed
        // by showing the user a dialog.
        try {
            // Show the dialog by calling startResolutionForResult(),
            // and check the result in onActivityResult().
            exception.startResolutionForResult(this@MainActivity,
                    REQUEST_CHECK_SETTINGS)
        } catch (sendEx: IntentSender.SendIntentException) {
            // Ignore the error.
        }
    }
}

Java

task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() {
    @Override
    public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
        // All location settings are satisfied. The client can initialize
        // location requests here.
        // ...
    }
});

task.addOnFailureListener(this, new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        if (e instanceof ResolvableApiException) {
            // Location settings are not satisfied, but this can be fixed
            // by showing the user a dialog.
            try {
                // Show the dialog by calling startResolutionForResult(),
                // and check the result in onActivityResult().
                ResolvableApiException resolvable = (ResolvableApiException) e;
                resolvable.startResolutionForResult(MainActivity.this,
                        REQUEST_CHECK_SETTINGS);
            } catch (IntentSender.SendIntentException sendEx) {
                // Ignore the error.
            }
        }
    }
});

अगला लेसन, जगह की जानकारी से जुड़े अपडेट मिल रहे हैं, शो स्थान के बारे में समय-समय पर अपडेट पाने का तरीका बताया जाएगा.