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

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

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

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

मुख्य रूप से ये बदलाव हो सकते हैं:

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

Places की कंपैटबिलिटी लाइब्रेरी के बारे में जानकारी

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

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

Places की कंपैटबिलिटी लाइब्रेरी को फ़्रीज़ करना और बंद करना

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

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

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

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

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

  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 के लिए 'जगह के लिए 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.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 — अनुरोध अस्वीकार कर दिया गया. ऐसा इन वजहों से हो सकता है:

    • कोई एपीआई पासकोड नहीं दिया गया.
    • एक गलत एपीआई पासकोड दिया गया है.
    • Places API को Cloud कंसोल में चालू नहीं किया गया है.
    • एक एपीआई पासकोड दिया गया है, जिसमें पासकोड से जुड़ी गलत पाबंदियां हैं.
  • 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() किसी स्थान की फ़ोटो दिखाता है. पैटर्न फ़ोटो का अनुरोध करने की प्रक्रिया को आसान बना दिया गया है. अब PhotoMetadata का अनुरोध किया जा सकता है सीधे Place ऑब्जेक्ट से; अब अलग से अनुरोध करने की ज़रूरत नहीं है. फ़ोटो की चौड़ाई या ऊंचाई 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. नतीजे का फ़ोटो मेटाडेटा पाने के लिए, OnSuccessListener जोड़ें FetchPlaceResponse में Place लगाएं. इसके बाद, नतीजे के तौर पर मिले फ़ोटो मेटाडेटा का इस्तेमाल करके, बिटमैप और एट्रिब्यूशन टेक्स्ट पाएं:

    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 की सूची दिखाता है, जो उन जगहों को दिखाती है जहां उपयोगकर्ता का डिवाइस है Google पर मौजूद है. इससे मिलते-जुलते 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. CANNOT TRANSLATE उपयोगकर्ता ने अपने डिवाइस की जगह की जानकारी इस्तेमाल करने की अनुमति दी हो.

      // 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.Fields की श्रेणी को 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.IntentBuilder का इस्तेमाल करें PlaceAutocomplete मोड (फ़ुल-स्क्रीन या ओवरले). इंटेंट को कॉल करना ज़रूरी है 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 टूल, प्लेस पिकर के साथ काम नहीं करता.