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

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

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

क्या बदल गया है?

परिवर्तन के मुख्य क्षेत्र नीचे दिए गए हैं:

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

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

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

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

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

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

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

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

Android के लिए Places SDK के नए वर्शन को एक स्टैटिक क्लाइंट लाइब्रेरी के तौर पर उपलब्ध कराया गया है.

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

  1. अगर फ़िलहाल जगहों के साथ काम करने वाली लाइब्रेरी का इस्तेमाल किया जा रहा है, तो:

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

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

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

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

  2. अगर आप अभी Android के लिए Places SDK टूल के Play Services वर्शन का इस्तेमाल कर रहे हैं, तो:

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

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

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

          implementation 'com.google.android.libraries.places:places:3.3.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 क्लाइंट को शुरू करें

यहां दिए गए उदाहरण की मदद से, नए Places 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 से दिखाई जाती हैं. अब क्यूपीडी की कोई सीमा नहीं है.

ये स्टेटस कोड जोड़े गए हैं:

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

    • कोई एपीआई पासकोड नहीं दिया गया है.
    • दी गई एपीआई कुंजी अमान्य है.
    • Cloud कंसोल में Places API को चालू नहीं किया गया है.
    • एपीआई पासकोड गलत दिया गया है. साथ ही, कुंजी से जुड़ी पाबंदियां भी गलत हैं.
  • 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. FindCurrentPlace को कॉल करें और रिस्पॉन्स को हैंडल करें. इसके लिए, सबसे पहले यह जांच करें कि उपयोगकर्ता ने अपने डिवाइस की जगह की जानकारी इस्तेमाल करने की अनुमति दी है या नहीं.

      // 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());
   }
});

सेशन के टोकन

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

फ़ील्ड मास्क

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

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

// 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. गतिविधि में अपने-आप पूरा होने वाला विजेट जोड़ने के लिए, यह तरीका अपनाएं:

    • ऐप्लिकेशन कॉन्टेक्स्ट और अपनी API (एपीआई) कुंजी पास करते हुए, 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. अपनी पसंद के PlaceAutocomplete मोड (फ़ुल-स्क्रीन या ओवरले) को पास करके, इंटेंट बनाने के लिए Autocomplete.IntentBuilder का इस्तेमाल करें. इस इंटेंट में 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 टूल, प्लेस पिकर के साथ काम नहीं करता है.