নতুন স্থান SDK ক্লায়েন্টে স্থানান্তর করা হচ্ছে

এই নির্দেশিকাটি স্থানগুলির সামঞ্জস্যপূর্ণ লাইব্রেরি এবং Android এর জন্য স্থানগুলির SDK- এর নতুন স্বতন্ত্র সংস্করণের মধ্যে পরিবর্তনগুলি ব্যাখ্যা করে৷ আপনি যদি Android এর জন্য Places SDK-এর নতুন স্বতন্ত্র সংস্করণে স্থানান্তরিত করার পরিবর্তে Places কম্প্যাটিবিলিটি লাইব্রেরি ব্যবহার করে থাকেন, তাহলে এই নির্দেশিকা আপনাকে Android এর জন্য Places SDK-এর নতুন সংস্করণ ব্যবহার করতে আপনার প্রকল্পগুলিকে কীভাবে আপডেট করতে হয় তা দেখায়৷

2.6.0 সংস্করণের উপরে Android এর জন্য Places SDK-এ বৈশিষ্ট্যগুলি এবং বাগ সংশোধন করার একমাত্র উপায় হল Android এর জন্য Places SDK ব্যবহার করা৷ Google যত তাড়াতাড়ি সম্ভব Android সংস্করণের জন্য সামঞ্জস্যপূর্ণ লাইব্রেরি থেকে নতুন Places SDK-এ আপডেট করার সুপারিশ করে৷

কি পরিবর্তন হয়েছে?

পরিবর্তনের প্রধান ক্ষেত্রগুলি নিম্নরূপ:

  • Android এর জন্য Places SDK-এর নতুন সংস্করণ একটি স্ট্যাটিক ক্লায়েন্ট লাইব্রেরি হিসেবে বিতরণ করা হয়েছে। জানুয়ারী 2019 এর আগে, Android এর জন্য Places SDK Google Play পরিষেবার মাধ্যমে উপলব্ধ করা হয়েছিল। তারপর থেকে, Android-এর জন্য নতুন Places SDK-এ রূপান্তর সহজ করতে একটি Places সামঞ্জস্যপূর্ণ লাইব্রেরি প্রদান করা হয়েছিল৷
  • সব নতুন পদ্ধতি আছে.
  • ফিল্ড মাস্কগুলি এখন এমন পদ্ধতিগুলির জন্য সমর্থিত যা স্থানের বিবরণ ফেরত দেয়। কোন ধরণের স্থানের ডেটা ফেরত দিতে হবে তা নির্দিষ্ট করতে আপনি ফিল্ড মাস্ক ব্যবহার করতে পারেন।
  • ত্রুটি রিপোর্ট করতে ব্যবহৃত স্ট্যাটাস কোড উন্নত করা হয়েছে।
  • স্বয়ংসম্পূর্ণ এখন সেশন টোকেন সমর্থন করে।
  • স্থান চয়নকারী আর উপলব্ধ নেই

স্থানগুলির সামঞ্জস্যপূর্ণ লাইব্রেরি সম্পর্কে

জানুয়ারী 2019-এ অ্যান্ড্রয়েডের জন্য স্বতন্ত্র প্লেসেস SDK-এর সংস্করণ 1.0 প্রকাশের সাথে, Google Android-এর জন্য Places SDK-এর বাতিল করা Google Play পরিষেবা সংস্করণ থেকে স্থানান্তর করতে সাহায্য করার জন্য একটি সামঞ্জস্যপূর্ণ লাইব্রেরি প্রদান করেছে ( com.google.android.gms:play-services-places )।

এই সামঞ্জস্য লাইব্রেরিটি অস্থায়ীভাবে Google Play পরিষেবার সংস্করণের লক্ষ্যে API কলগুলিকে নতুন স্বতন্ত্র সংস্করণে পুনঃনির্দেশিত এবং অনুবাদ করার জন্য সরবরাহ করা হয়েছিল যতক্ষণ না বিকাশকারীরা স্বতন্ত্র SDK-তে নতুন নামগুলি ব্যবহার করতে তাদের কোড স্থানান্তর করতে পারে৷ Android এর জন্য Places SDK-এর প্রতিটি সংস্করণের জন্য যা সংস্করণ 1.0 থেকে সংস্করণ 2.6.0 থেকে প্রকাশিত হয়েছে, সমতুল্য কার্যকারিতা প্রদানের জন্য স্থানগুলির সামঞ্জস্যপূর্ণ লাইব্রেরির একটি সংশ্লিষ্ট সংস্করণ প্রকাশ করা হয়েছে৷

জায়গাগুলির সামঞ্জস্যপূর্ণ লাইব্রেরি জমা করা এবং অবমূল্যায়ন করা৷

Android-এর জন্য Places SDK-এর জন্য সামঞ্জস্যপূর্ণ লাইব্রেরির সমস্ত সংস্করণ 31 মার্চ, 2022 তারিখ থেকে বাতিল করা হয়েছে। সংস্করণ 2.6.0 হল স্থানগুলির সামঞ্জস্যপূর্ণ লাইব্রেরির শেষ সংস্করণ। 2.6.0 সংস্করণের উপরে Android এর জন্য Places SDK-এ বৈশিষ্ট্যগুলি এবং বাগ সংশোধন করার একমাত্র উপায় হল Android এর জন্য Places SDK ব্যবহার করা৷

Google সুপারিশ করে যে আপনি Android এর জন্য Places SDK-এ স্থানান্তরিত করুন যাতে নতুন বৈশিষ্ট্যগুলি অ্যাক্সেস করা যায় এবং 2.6.0 সংস্করণের উপরে রিলিজের জন্য গুরুত্বপূর্ণ বাগ সংশোধন করা হয়৷ আপনি যদি বর্তমানে সামঞ্জস্যপূর্ণ লাইব্রেরি ব্যবহার করছেন, তাহলে Android এর জন্য Places SDK-এ স্থানান্তর করতে Android এর জন্য স্থান SDK ইনস্টল করুন বিভাগে নীচের পদক্ষেপগুলি অনুসরণ করুন৷

ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন

Android এর জন্য Places SDK-এর নতুন সংস্করণ একটি স্ট্যাটিক ক্লায়েন্ট লাইব্রেরি হিসেবে বিতরণ করা হয়েছে।

আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্পে Android এর জন্য স্থান 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.3.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.3.0'

  3. আপনার গ্রেডল প্রকল্প সিঙ্ক করুন।

  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);

স্ট্যাটাস কোড

QPS সীমা ত্রুটির জন্য স্ট্যাটাস কোড পরিবর্তিত হয়েছে। QPS সীমা ত্রুটিগুলি এখন PlaceStatusCodes.OVER_QUERY_LIMIT এর মাধ্যমে ফেরত দেওয়া হয়। আর কোন QPD সীমা নেই।

নিম্নলিখিত স্ট্যাটাস কোড যোগ করা হয়েছে:

  • REQUEST_DENIED — অনুরোধটি প্রত্যাখ্যান করা হয়েছে৷ এর সম্ভাব্য কারণগুলির মধ্যে রয়েছে:

    • কোন API কী প্রদান করা হয়নি।
    • একটি অবৈধ API কী প্রদান করা হয়েছে৷
    • ক্লাউড কনসোলে Places API সক্ষম করা হয়নি।
    • একটি API কী ভুল কী সীমাবদ্ধতা সহ প্রদান করা হয়েছে।
  • INVALID_REQUEST — অনুপস্থিত বা অবৈধ যুক্তির কারণে অনুরোধটি অবৈধ৷

  • NOT_FOUND — প্রদত্ত অনুরোধের জন্য কোন ফলাফল পাওয়া যায়নি।

নতুন পদ্ধতি

Android-এর জন্য Places SDK-এর নতুন সংস্করণটি সব-নতুন পদ্ধতির প্রবর্তন করে, যেগুলো ধারাবাহিকতার জন্য ডিজাইন করা হয়েছে। সমস্ত নতুন পদ্ধতি নিম্নলিখিত মেনে চলে:

  • এন্ডপয়েন্ট আর get ক্রিয়া ব্যবহার করে না।
  • অনুরোধ এবং প্রতিক্রিয়া বস্তুগুলি সংশ্লিষ্ট ক্লায়েন্ট পদ্ধতি হিসাবে একই নাম ভাগ করে।
  • রিকোয়েস্ট অবজেক্টের এখন বিল্ডার আছে; প্রয়োজনীয় প্যারামগুলি অনুরোধ নির্মাতা প্যারাম হিসাবে পাস করা হয়।
  • বাফার আর ব্যবহার করা হয় না.

এই বিভাগটি নতুন পদ্ধতির সাথে পরিচয় করিয়ে দেয় এবং তারা কীভাবে কাজ করে তা আপনাকে দেখায়।

আইডি দ্বারা একটি জায়গা আনুন

একটি নির্দিষ্ট স্থান সম্পর্কে বিস্তারিত জানতে fetchPlace() ব্যবহার করুন। getPlaceById() এর মতই fetchPlace() ফাংশন করে।

একটি জায়গা পেতে এই পদক্ষেপগুলি অনুসরণ করুন:

  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 অনুরোধ করতে পারেন; একটি পৃথক অনুরোধ আর প্রয়োজন নেই. ফটোগুলির সর্বাধিক প্রস্থ বা উচ্চতা 1600px হতে পারে৷ getPhoto() এর মতই fetchPhoto() ফাংশন করে।

স্থানের ছবি আনতে এই পদক্ষেপগুলি অনুসরণ করুন:

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

সেশন টোকেন

সেশন টোকেন বিলিং উদ্দেশ্যে একটি পৃথক সেশনে ব্যবহারকারী অনুসন্ধানের প্রশ্ন এবং নির্বাচনের পর্যায়গুলিকে গ্রুপ করে। আমরা সমস্ত স্বয়ংসম্পূর্ণ সেশনের জন্য সেশন টোকেন ব্যবহার করার পরামর্শ দিই। সেশন শুরু হয় যখন ব্যবহারকারী একটি ক্যোয়ারী টাইপ করা শুরু করে এবং যখন তারা একটি স্থান নির্বাচন করে তখন শেষ হয়। প্রতিটি সেশনে একাধিক প্রশ্ন থাকতে পারে, তারপরে একটি স্থান নির্বাচন। একবার একটি অধিবেশন শেষ হয়ে গেলে, টোকেনটি আর বৈধ থাকে না; আপনার অ্যাপকে অবশ্যই প্রতিটি সেশনের জন্য একটি নতুন টোকেন তৈরি করতে হবে।

মাঠের মুখোশ

যে পদ্ধতিগুলি স্থানের বিশদ বিবরণ দেয়, আপনাকে অবশ্যই নির্দিষ্ট করতে হবে প্রতিটি অনুরোধের সাথে কোন ধরণের স্থানের ডেটা ফেরত দিতে হবে। এটি নিশ্চিত করতে সাহায্য করে যে আপনি শুধুমাত্র যে ডেটার জন্য অনুরোধ করবেন (এবং অর্থ প্রদান করবেন) যা আপনি আসলে ব্যবহার করবেন।

কোন ডেটা প্রকারগুলি ফেরত দিতে হবে তা নির্দিষ্ট করতে, আপনার FetchPlaceRequestPlace.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. আপনার কার্যকলাপের XML লেআউটে একটি খণ্ড যুক্ত করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

    <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 শুরু করুন, অ্যাপের প্রসঙ্গ এবং আপনার API কী পাস করুন৷
  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 প্লেস পিকারকে সমর্থন করে না।