नए स्थान SDK क्लाइंट पर माइग्रेट करना

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

Android के लिए Places SDK टूल 2.6.0 के बाद के वर्शन में, सुविधाओं और गड़बड़ी ठीक करने का एक ही तरीका है. Android के लिए Places SDK टूल का इस्तेमाल किया जाए. Google जल्द से जल्द, Android लाइब्रेरी के लिए काम करने वाली लाइब्रेरी के साथ काम करने वाला नया SDK टूल अपडेट करने का सुझाव देता है.

क्या बदलाव हुए हैं?

बदलाव करने के मुख्य क्षेत्र इस तरह हैं:

  • Android के लिए Places SDK टूल का नया वर्शन, एक स्टैटिक क्लाइंट लाइब्रेरी के रूप में उपलब्ध कराया जाता है. जनवरी 2019 से पहले, Android के लिए Places SDK टूल, Google Play सेवाओं के ज़रिए उपलब्ध कराया गया था. तब से, जगहों के काम की लाइब्रेरी को Android के लिए नए 'जगहों के SDK टूल' में ट्रांज़िशन की सुविधा को आसान बनाया गया था.
  • सभी नए तरीके उपलब्ध हैं.
  • फ़ील्ड मास्क अब उन तरीकों के साथ काम करते हैं जो जगह की जानकारी देते हैं. किस तरह का डेटा वापस करना है, यह बताने के लिए, फ़ील्ड मास्क का इस्तेमाल किया जा सकता है.
  • गड़बड़ियों की रिपोर्ट करने के लिए इस्तेमाल किए जाने वाले स्टेटस कोड में सुधार किया गया है.
  • अपने-आप पूरा होने की सुविधा, अब सेशन टोकन के साथ काम करती है.
  • प्लेस पिकर अब उपलब्ध नहीं है.

Places के साथ काम करने की सुविधा वाली लाइब्रेरी के बारे में जानकारी

जनवरी 2019 में, Android के लिए स्टैंडअलोन Places SDK टूल के 1.0 वर्शन की रिलीज़ के साथ, Google ने Android के लिए Places SDK टूल के बंद हो चुके वर्शन (com.google.android.gms:play-services-places) से माइग्रेशन में मदद करने के लिए, एक कम्पैटबिलिटी लाइब्रेरी दी थी.

यह साथ काम करने की सुविधा वाली लाइब्रेरी को कुछ समय के लिए Google Play सेवाओं के वर्शन पर बनाए गए एपीआई कॉल को नए स्टैंडअलोन वर्शन पर रीडायरेक्ट और अनुवाद करने के लिए दिया गया था. ऐसा तब तक किया जा सकता था, जब तक कि डेवलपर अपना कोड माइग्रेट नहीं कर लेते, ताकि स्टैंडअलोन SDK टूल में नए नामों का इस्तेमाल किया जा सके. Android के लिए Places SDK टूल के हर वर्शन में, जो वर्शन 1.0 से लेकर वर्शन 2.6.0 तक रिलीज़ कर दिए गए हैं, मिलते-जुलते फ़ंक्शन उपलब्ध कराने के लिए, Places से जुड़ी लाइब्रेरी का वर्शन भी रिलीज़ किया गया है.

Places के साथ काम करने वाली लाइब्रेरी को फ़्रीज़ करना और बंद करना

'Android के लिए Places' SDK टूल के साथ काम करने वाली लाइब्रेरी के सभी वर्शन 31 मार्च, 2022 से काम करना बंद कर देंगे. वर्शन 2.6.0, Places के साथ काम करने वाली लाइब्रेरी का आखिरी वर्शन है. Android 2.6.0 के बाद के वर्शन में 'Android के लिए SDK टूल' का इस्तेमाल करके, सुविधाओं और गड़बड़ी को ठीक करने का तरीका सिर्फ़ यह है कि Android के लिए Places SDK टूल का इस्तेमाल किया जाए.

Google का सुझाव है कि आप Android के लिए Places SDK टूल पर माइग्रेट करें. इससे आपको वर्शन 2.6.0 से पहले के वर्शन की नई सुविधाएं और गड़बड़ियां ठीक करने में मदद मिलेगी. अगर इस समय काम की लाइब्रेरी का इस्तेमाल किया जा रहा है, तो नीचे दिए गए तरीके से Android के लिए Places SDK टूल इंस्टॉल करें सेक्शन में जाएं. इसके बाद, Android के लिए Places SDK टूल में माइग्रेट करें.

क्लाइंट लाइब्रेरी इंस्टॉल करना

Android के लिए Places SDK टूल का नया वर्शन, एक स्थिर क्लाइंट लाइब्रेरी के रूप में बताया जाता है.

अपने Android Studio प्रोजेक्ट में, Android के लिए Places SDK टूल जोड़ने के लिए Maven का इस्तेमाल करें:

  1. अगर आप इस समय Places की लाइब्रेरी का इस्तेमाल कर रहे हैं:

    1. नीचे दी गई लाइन को dependencies सेक्शन से बदलें:

          implementation 'com.google.android.libraries.places:places-compat:X.Y.Z'

      Android के लिए Places SDK टूल पर स्विच करने के लिए, इस लाइन की मदद से:

          implementation 'com.google.android.libraries.places:places:3.1.0'

  2. फ़िलहाल, Android के लिए Places SDK टूल का Play सेवाएं वर्शन इस्तेमाल किया जा रहा है:

    1. नीचे दी गई लाइन को dependencies सेक्शन से बदलें:

          implementation 'com.google.android.gms:play-services-places:X.Y.Z'

      Android के लिए Places SDK टूल पर स्विच करने के लिए, इस लाइन की मदद से:

          implementation 'com.google.android.libraries.places:places:3.1.0'

  3. अपना Gradle प्रोजेक्ट सिंक करें.

  4. अपने ऐप्लिकेशन प्रोजेक्ट के लिए minSdkVersion को 16 या उससे ज़्यादा पर सेट करें.

  5. "Google की मदद से उपलब्ध" एसेट अपडेट करें:

    @drawable/powered_by_google_light // OLD
    @drawable/places_powered_by_google_light // NEW
    @drawable/powered_by_google_dark // OLD
    @drawable/places_powered_by_google_dark // NEW
    
  6. अपना ऐप्लिकेशन बनाएं. अगर आपको Android के लिए Places SDK टूल में अपने कन्वर्ज़न के कारण कोई गड़बड़ी दिखाई देती है, तो इन गड़बड़ियों को ठीक करने के बारे में जानकारी के लिए नीचे दिए गए सेक्शन देखें.

नया Places SDK क्लाइंट शुरू करें

यहां दिए गए उदाहरण में, नए SDK टूल क्लाइंट को शुरू करें:

// Add an import statement for the client library.
import com.google.android.libraries.places.api.Places;

...

// Initialize Places.
Places.initialize(getApplicationContext(), apiKey);

// Create a new Places client instance.
PlacesClient placesClient = Places.createClient(this);

स्टेटस कोड

क्यूपीएस की सीमा से जुड़ी गड़बड़ियों का स्टेटस कोड बदल गया है. क्यूपीएस की सीमा से जुड़ी गड़बड़ियां, अब PlaceStatusCodes.OVER_QUERY_LIMIT के ज़रिए दिखेंगी. अब QPD की कोई सीमा नहीं है.

नीचे दिए गए स्टेटस कोड जोड़े गए हैं:

  • REQUEST_DENIED — अनुरोध को अस्वीकार कर दिया गया था. ऐसा इन वजहों से हो सकता है:

    • कोई एपीआई कुंजी नहीं दी गई थी.
    • एक अमान्य API (एपीआई) कुंजी दी गई थी.
    • Cloud Console में Places एपीआई चालू नहीं किया गया है.
    • गलत कुंजी पाबंदियों के साथ एक एपीआई कुंजी दी गई थी.
  • INVALID_REQUEST — अनुरोध न होने या अमान्य होने की वजह से, यह अनुरोध अमान्य है.

  • NOT_FOUND — दिए गए अनुरोध के लिए कोई नतीजा नहीं मिला.

नए तरीके

Android के लिए Places SDK टूल के नए वर्शन में सभी नए तरीके पेश किए गए हैं, जिन्हें नियमित तौर पर डिज़ाइन किया गया है. सभी नए तरीके नीचे दी गई शर्तों का पालन करते हैं:

  • एंडपॉइंट पर अब get कार्रवाई का इस्तेमाल नहीं किया जाता.
  • अनुरोध और जवाब दिए जाने वाले ऑब्जेक्ट का नाम एक ही होता है. साथ ही, उनका नाम भी क्लाइंट के तरीके से मेल खाता है.
  • अनुरोध ऑब्जेक्ट में अब बिल्डर हैं. ज़रूरी पैरामीटर, अनुरोध बिल्डर पैरामीटर के तौर पर पास किए गए हैं.
  • बफ़र का इस्तेमाल अब नहीं किया जाता.

इस सेक्शन में नए तरीकों के बारे में बताया गया है. साथ ही, आपके काम करने का तरीका बताया गया है.

किसी जगह का आईडी फ़ेच करें

किसी जगह के बारे में जानकारी पाने के लिए, fetchPlace() का इस्तेमाल करें. fetchPlace() फ़ंक्शन, getPlaceById() की तरह होते हैं.

किसी जगह की जानकारी पाने के लिए यह तरीका अपनाएं:

  1. fetchPlace() को कॉल करें. इससे, प्लेस आईडी के बारे में बताने वाले FetchPlaceRequest ऑब्जेक्ट को पास किया जाता है. साथ ही, दिखाने के लिए जगह के डेटा की जानकारी वाले फ़ील्ड की सूची पास की जाती है.

    // Define a Place ID.
    String placeId = "INSERT_PLACE_ID_HERE";
    
    // Specify the fields to return.
    List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
    
    // Construct a request object, passing the place ID and fields array.
    FetchPlaceRequest request = FetchPlaceRequest.builder(placeId, placeFields)
            .build();
    
    
  2. FetchPlaceResponse को हैंडल करने के लिए, addOnSuccessListener() को कॉल करें. सिर्फ़ एक Place नतीजा मिला.

    // Add a listener to handle the response.
    placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
      Place place = response.getPlace();
      Log.i(TAG, "Place found: " + place.getName());
    }).addOnFailureListener((exception) -> {
        if (exception instanceof ApiException) {
            ApiException apiException = (ApiException) exception;
            int statusCode = apiException.getStatusCode();
            // Handle error with given status code.
            Log.e(TAG, "Place not found: " + exception.getMessage());
        }
    });
    

किसी जगह की फ़ोटो फ़ेच करें

किसी जगह की फ़ोटो पाने के लिए, fetchPhoto() का इस्तेमाल करें. fetchPhoto() किसी जगह की फ़ोटो दिखाता है. फ़ोटो का अनुरोध करने के लिए, पैटर्न को आसान कर दिया गया है. अब आप सीधे Place ऑब्जेक्ट से PhotoMetadata का अनुरोध कर सकते हैं. इसके लिए, अलग से अनुरोध करने की ज़रूरत नहीं है. फ़ोटो की चौड़ाई या ऊंचाई ज़्यादा से ज़्यादा 1600 पिक्सल हो सकती है. fetchPhoto() फ़ंक्शन getPhoto() की तरह.

स्थान की फ़ोटो लाने के लिए इन चरणों का पालन करें:

  1. fetchPlace() को कॉल करने के लिए, सेट अप करें. अनुरोध में PHOTO_METADATAS फ़ील्ड को ज़रूर शामिल करें:

    List<Place.Field> fields = Arrays.asList(Place.Field.PHOTO_METADATAS);
    
  2. प्लेस ऑब्जेक्ट पाएं (यह उदाहरण fetchPlace() का इस्तेमाल करता है, लेकिन आप findCurrentPlace() का भी इस्तेमाल कर सकते हैं):

    FetchPlaceRequest placeRequest = FetchPlaceRequest.builder(placeId, fields).build();
    
  3. FetchPlaceResponse में बदलने वाले Placeसे फ़ोटो का मेटाडेटा पाने के लिए, OnSuccessListener जोड़ें. इसके बाद, बनने वाले फ़ोटो के मेटाडेटा का इस्तेमाल करके बिट मैप और एट्रिब्यूशन टेक्स्ट पाएं:

    placesClient.fetchPlace(placeRequest).addOnSuccessListener((response) -> {
        Place place = response.getPlace();
    
        // Get the photo metadata.
        PhotoMetadata photoMetadata = place.getPhotoMetadatas().get(0);
    
        // Get the attribution text.
        String attributions = photoMetadata.getAttributions();
    
        // Create a FetchPhotoRequest.
        FetchPhotoRequest photoRequest = FetchPhotoRequest.builder(photoMetadata)
                .setMaxWidth(500) // Optional.
                .setMaxHeight(300) // Optional.
                .build();
        placesClient.fetchPhoto(photoRequest).addOnSuccessListener((fetchPhotoResponse) -> {
            Bitmap bitmap = fetchPhotoResponse.getBitmap();
            imageView.setImageBitmap(bitmap);
        }).addOnFailureListener((exception) -> {
            if (exception instanceof ApiException) {
                ApiException apiException = (ApiException) exception;
                int statusCode = apiException.getStatusCode();
                // Handle error with given status code.
                Log.e(TAG, "Place not found: " + exception.getMessage());
            }
        });
    });
    

उपयोगकर्ता की जगह की जानकारी का इस्तेमाल करके कोई जगह खोजें

उपयोगकर्ता के डिवाइस की मौजूदा जगह की जानकारी पाने के लिए, findCurrentPlace() का इस्तेमाल करें. findCurrentPlace() उन जगहों की PlaceLikelihood दिखाता है जहां उपयोगकर्ता का डिवाइस मौजूद होने की संभावना सबसे ज़्यादा होती है. findCurrentPlace() फ़ंक्शन, getCurrentPlace() के जैसा है.

उपयोगकर्ता के डिवाइस की मौजूदा जगह की जानकारी पाने के लिए, यह तरीका अपनाएं:

  1. पक्का करें कि आपके ऐप्लिकेशन ने ACCESS_FINE_LOCATION और ACCESS_WIFI_STATE की अनुमतियों का अनुरोध किया हो. उपयोगकर्ता को अपने डिवाइस की मौजूदा जगह की जानकारी ऐक्सेस करने की अनुमति देनी होगी. ज़्यादा जानकारी के लिए, ऐप्लिकेशन की अनुमतियों का अनुरोध करना देखें.

  2. FindCurrentPlaceRequest बनाने के लिए, जगह के डेटा टाइप की सूची दें.

      // Use fields to define the data types to return.
      List<Place.Field> placeFields = Arrays.asList(Place.Field.NAME);
    
      // Use the builder to create a FindCurrentPlaceRequest.
      FindCurrentPlaceRequest request =
              FindCurrentPlaceRequest.builder(placeFields).build();
    
  3. शीट उसे

      // Call findCurrentPlace and handle the response (first check that the user has granted permission).
      if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
          placesClient.findCurrentPlace(request).addOnSuccessListener(((response) -> {
              for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) {
                  Log.i(TAG, String.format("Place '%s' has likelihood: %f",
                          placeLikelihood.getPlace().getName(),
                          placeLikelihood.getLikelihood()));
                  textView.append(String.format("Place '%s' has likelihood: %f\n",
                          placeLikelihood.getPlace().getName(),
                          placeLikelihood.getLikelihood()));
              }
          })).addOnFailureListener((exception) -> {
              if (exception instanceof ApiException) {
                  ApiException apiException = (ApiException) exception;
                  Log.e(TAG, "Place not found: " + apiException.getStatusCode());
              }
          });
      } else {
          // A local method to request required permissions;
          // See https://developer.android.com/training/permissions/requesting
          getLocationPermission();
      }
    

ऑटोकंप्लीट की सुविधा से मिलने वाले सुझाव ढूंढना

उपयोगकर्ता की खोज क्वेरी के जवाब में जगह के सुझाव देने के लिए, findAutocompletePredictions() का इस्तेमाल करें. findAutocompletePredictions() फ़ंक्शन, getAutocompletePredictions() के जैसा है.

यहां दिए गए उदाहरण में, findAutocompletePredictions() को कॉल करने का तरीका बताया गया है:

// Create a new token for the autocomplete session. Pass this to FindAutocompletePredictionsRequest,
// and once again when the user makes a selection (for example when calling fetchPlace()).
AutocompleteSessionToken token = AutocompleteSessionToken.newInstance();
// Create a RectangularBounds object.
RectangularBounds bounds = RectangularBounds.newInstance(
  new LatLng(-33.880490, 151.184363),
  new LatLng(-33.858754, 151.229596));
// Use the builder to create a FindAutocompletePredictionsRequest.
FindAutocompletePredictionsRequest request = FindAutocompletePredictionsRequest.builder()
// Call either setLocationBias() OR setLocationRestriction().
   .setLocationBias(bounds)
   //.setLocationRestriction(bounds)
   .setCountry("au")
   .setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS))
   .setSessionToken(token)
   .setQuery(query)
   .build();

placesClient.findAutocompletePredictions(request).addOnSuccessListener((response) -> {
   for (AutocompletePrediction prediction : response.getAutocompletePredictions()) {
       Log.i(TAG, prediction.getPlaceId());
       Log.i(TAG, prediction.getPrimaryText(null).toString());
   }
}).addOnFailureListener((exception) -> {
   if (exception instanceof ApiException) {
       ApiException apiException = (ApiException) exception;
       Log.e(TAG, "Place not found: " + apiException.getStatusCode());
   }
});

सेशन के टोकन

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

फ़ील्ड मास्क

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

यह बताने के लिए कि किस तरह का डेटा दिखाया जाए, Place.Field की श्रेणी पास करें FetchPlaceRequest में, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

// Include address, ID, and phone number.
List<Place.Field> placeFields = Arrays.asList(Place.Field.ADDRESS,
                                              Place.Field.ID,
                                              Place.Field.PHONE_NUMBER);

इनमें से एक या ज़्यादा फ़ील्ड का इस्तेमाल किया जा सकता है:

  • Place.Field.ADDRESS
  • Place.Field.ID
  • Place.Field.LAT_LNG
  • Place.Field.NAME
  • Place.Field.OPENING_HOURS
  • Place.Field.PHONE_NUMBER
  • Place.Field.PHOTO_METADATAS
  • Place.Field.PLUS_CODE
  • Place.Field.PRICE_LEVEL
  • Place.Field.RATING
  • Place.Field.TYPES
  • Place.Field.USER_RATINGS_TOTAL
  • Place.Field.VIEWPORT
  • Place.Field.WEBSITE_URI

जगहों के डेटा की SKU के बारे में ज़्यादा पढ़ें.

प्लेस पिकर और ऑटोकंप्लीट अपडेट

इस सेक्शन में जगहों के विजेट (प्लेस पिकर और ऑटोकंप्लीट की सुविधा) में हुए बदलावों के बारे में जानकारी मिलती है.

प्रोग्रामैटिक ऑटोकंप्लीट

अपने-आप पूरा होने की सुविधा में ये बदलाव किए गए हैं:

  • PlaceAutocomplete का नाम बदलकर Autocomplete कर दिया गया है.
    • PlaceAutocomplete.getPlace का नाम बदलकर Autocomplete.getPlaceFromIntent कर दिया गया है.
    • PlaceAutocomplete.getStatus का नाम बदलकर Autocomplete.getStatusFromIntent कर दिया गया है.
  • PlaceAutocomplete.RESULT_ERROR का नाम बदलकर AutocompleteActivity.RESULT_ERROR कर दिया गया है (अपने-आप पूरा होने वाले फ़्रैगमेंट के लिए गड़बड़ी को हैंडल करने का तरीका नहीं बदला है).

जगह चुनें

29 जनवरी, 2019 को 'प्लेस पिकर' सुविधा बंद कर दी गई थी. यह सुविधा 29 जुलाई, 2019 को बंद कर दी गई थी और अब उपलब्ध नहीं है. इस्तेमाल करने पर, गड़बड़ी का एक मैसेज मिलता है. नया SDK टूल, प्लेस पिकर के साथ काम नहीं करता.

ऑटोकंप्लीट विजेट

अपने-आप पूरे होने वाले विजेट अपडेट कर दिए गए हैं:

  • Place प्रीफ़िक्स को सभी कक्षाओं से हटा दिया गया है.
  • सेशन टोकन के लिए सहायता जोड़ी गई. विजेट बैकग्राउंड में अपने-आप आपके लिए टोकन मैनेज करता है.
  • फ़ील्ड मास्क के लिए यह सुविधा जोड़ी गई है. यह आपको यह चुनने की सुविधा देती है कि इस्तेमाल करने वाला व्यक्ति चुने जाने के बाद किस तरह का स्थान डेटा दिखाए.

नीचे दिए गए सेक्शन में, आपके प्रोजेक्ट में ऑटोकंप्लीट विजेट जोड़ने का तरीका बताया गया है.

AutocompleteFragment जोड़ें

ऑटोकंप्लीट फ़्रैगमेंट जोड़ने के लिए, यह तरीका अपनाएं:

  1. जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है, अपनी गतिविधि के एक्सएमएल लेआउट में कोई फ़्रैगमेंट जोड़ें.

    <fragment
      android:id="@+id/autocomplete_fragment"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:name=
    "com.google.android.libraries.places.widget.AutocompleteSupportFragment"
      />
    
  2. गतिविधि में ऑटोकंप्लीट विजेट जोड़ने के लिए, यह तरीका अपनाएं:

    • Places शुरू करें, ऐप्लिकेशन कॉन्टेक्स्ट पास करें, और अपना एपीआई पासकोड डालें.
    • AutocompleteSupportFragment शुरू करें.
    • setPlaceFields() को कॉल करके बताएं कि आपको किस तरह की जगह का डेटा चाहिए.
    • नतीजे जोड़ने के लिए PlaceSelectionListener जोड़ें. साथ ही, नतीजों में आने वाली गड़बड़ियां ठीक करें.

    नीचे दिए गए उदाहरण में, किसी गतिविधि में ऑटोकंप्लीट विजेट जोड़ने की जानकारी दी गई है:

    /**
     * Initialize Places. For simplicity, the API key is hard-coded. In a production
     * environment we recommend using a secure mechanism to manage API keys.
     */
    if (!Places.isInitialized()) {
        Places.initialize(getApplicationContext(), "YOUR_API_KEY");
    }
    
    // Initialize the AutocompleteSupportFragment.
    AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment)
            getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment);
    
    autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));
    
    autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {
            // TODO: Get info about the selected place.
            Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
        }
    
        @Override
        public void onError(Status status) {
            // TODO: Handle the error.
            Log.i(TAG, "An error occurred: " + status);
        }
    });
    

अपने-आप पूरा होने की गतिविधि लॉन्च करने के लिए, इंटेंट का इस्तेमाल करना

  1. Places शुरू करें, ऐप्लिकेशन कॉन्टेक्स्ट पास करें, और एपीआई पासकोड डालें
  2. अपनी पसंद के मुताबिक इंटेंट बनाने के लिए Autocomplete.IntentBuilderPlaceAutocomplete का इस्तेमाल करें, जो मोड (फ़ुल-स्क्रीन या ओवरले) पास करता है. इंटेंट को startActivityForResult को कॉल करना होगा, जो अनुरोध कोड पास करता है और आपके इंटेंट की पहचान करता है.
  3. चुनी गई जगह पर जाने के लिए, onActivityResult कॉलबैक को बदलें.

नीचे दिए गए उदाहरण में, ऑटोकंप्लीट सुविधा को लॉन्च करने और नतीजे को मैनेज करने के इंटेंट का इस्तेमाल करने का तरीका बताया गया है:

    /**
     * Initialize Places. For simplicity, the API key is hard-coded. In a production
     * environment we recommend using a secure mechanism to manage API keys.
     */
    if (!Places.isInitialized()) {
        Places.initialize(getApplicationContext(), "YOUR_API_KEY");
    }

    ...

    // Set the fields to specify which types of place data to return.
    List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

    // Start the autocomplete intent.
    Intent intent = new Autocomplete.IntentBuilder(
            AutocompleteActivityMode.FULLSCREEN, fields)
            .build(this);
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);

    ...

    /**
     * Override the activity's onActivityResult(), check the request code, and
     * do something with the returned place data (in this example its place name and place ID).
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                Place place = Autocomplete.getPlaceFromIntent(data);
                Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
            } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
                // TODO: Handle the error.
                Status status = Autocomplete.getStatusFromIntent(data);
                Log.i(TAG, status.getStatusMessage());
            } else if (resultCode == RESULT_CANCELED) {
                // The user canceled the operation.
            }
        }
    }

'जगह चुनने के टूल' की सुविधा अब उपलब्ध नहीं है

29 जनवरी, 2019 को 'प्लेस पिकर' सुविधा बंद कर दी गई थी. यह सुविधा 29 जुलाई, 2019 को बंद कर दी गई थी और अब उपलब्ध नहीं है. इस्तेमाल करने पर, गड़बड़ी का एक मैसेज मिलता है. नया SDK टूल, प्लेस पिकर के साथ काम नहीं करता.