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

Google Play পরিষেবা SDK-এর 11.2.0 রিলিজে Android এর জন্য Places SDK অ্যাক্সেস করার একটি নতুন উপায় রয়েছে৷ GoogleApi ক্লায়েন্টটি তার পূর্বসূরীর ( GoogleApiClient ) থেকে ব্যবহার করা সহজ, কারণ এটি স্বয়ংক্রিয়ভাবে Google Play পরিষেবাগুলির সাথে সংযোগগুলি পরিচালনা করে৷ এটি আপনার অ্যাপে বয়লারপ্লেট কোডের পরিমাণ হ্রাস করে এবং অনেক সাধারণ সমস্যা দূর করতে সাহায্য করতে পারে। নতুন API অনেকগুলি উন্নতির প্রস্তাব দেয়:

  • সংযোগ প্রক্রিয়া স্বয়ংক্রিয়ভাবে পরিচালিত হয়, তাই নতুন API বাস্তবায়নের জন্য কম কাজ করে।
  • API কলগুলি এখন স্বয়ংক্রিয়ভাবে পরিষেবা সংযোগ স্থাপনের জন্য অপেক্ষা করে, অনুরোধ করার আগে onConnected জন্য অপেক্ষা করার প্রয়োজনীয়তা দূর করে৷
  • Tasks API অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপ রচনা করা সহজ করে তোলে।
  • কোডটি স্বয়ংসম্পূর্ণ, এবং সহজেই একটি শেয়ার্ড ইউটিলিটি ক্লাসে বা অনুরূপ স্থানান্তর করা যেতে পারে।

GoogleApi ক্লায়েন্ট ব্যবহার করার জন্য আপনার অ্যাপ আপডেট করার জন্য Android বাস্তবায়নের জন্য আপনার Places SDK-এ কিছু পরিবর্তন প্রয়োজন। এই নির্দেশিকাটি Android এর জন্য স্থান SDK-তে পরিবর্তনগুলি বর্ণনা করে এবং নতুন ক্লায়েন্ট ব্যবহার করার জন্য আপনার অ্যাপ আপডেট করার সময় নেওয়া পদক্ষেপগুলির সুপারিশ করে৷

ওভারভিউ

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

  • দুটি নতুন এন্ট্রি পয়েন্ট রয়েছে: GeoDataClient এবং PlaceDetectionClient । সমস্ত API কভার করার জন্য একটি GoogleApiClient দৃষ্টান্ত তৈরি করার পরিবর্তে, আপনার অ্যাপটিকে এখন GeoDataClient এবং PlaceDetectionClient উভয়কেই ইনস্ট্যান্ট করতে হবে।
  • যেহেতু সংযোগ কলব্যাকের আর প্রয়োজন নেই, তাই আপনি সেগুলি সরাতে আপনার অ্যাপকে নিরাপদে রিফ্যাক্টর করতে পারেন৷
  • নতুন Places API পদ্ধতিগুলি এখন অ্যাসিঙ্ক্রোনাস, এবং একটি PendingResult এর পরিবর্তে একটি Task ফেরত দেয়।

স্থান API লোড করুন

Places API লোড করতে, এন্ট্রি পয়েন্ট ঘোষণা করুন, তারপরে নিম্নলিখিত উদাহরণে দেখানো হিসাবে আপনার খণ্ড বা কার্যকলাপের onCreate() পদ্ধতিতে ক্লায়েন্টদের ইনস্ট্যান্টিয়েট করুন:

// The entry points to the Places API.
private GeoDataClient mGeoDataClient;
private PlaceDetectionClient mPlaceDetectionClient;

...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Construct a GeoDataClient.
    mGeoDataClient = Places.getGeoDataClient(this, null);

    // Construct a PlaceDetectionClient.
    mPlaceDetectionClient = Places.getPlaceDetectionClient(this, null);

তুলনা

নতুন Places API পদ্ধতিগুলি এখন অ্যাসিঙ্ক্রোনাস, এবং একটি PendingResult এর পরিবর্তে একটি Task ফেরত দেয়। ডেটা স্ট্রাকচার পরিবর্তন হয়নি, তাই ফলাফল পরিচালনার জন্য আপনার বিদ্যমান কোড আপডেট করার প্রয়োজন হবে না। নিম্নলিখিত কোড উদাহরণগুলি GetCurrentPlace() এর নতুন এবং পুরানো সংস্করণগুলির তুলনা করে:

নতুন উপায়

Task<PlaceLikelihoodBufferResponse> placeResult = mPlaceDetectionClient.getCurrentPlace(null);
placeResult.addOnCompleteListener(new OnCompleteListener<PlaceLikelihoodBufferResponse>() {
    @Override
    public void onComplete(@NonNull Task<PlaceLikelihoodBufferResponse> task) {
        PlaceLikelihoodBufferResponse likelyPlaces = task.getResult();
        for (PlaceLikelihood placeLikelihood : likelyPlaces) {
            Log.i(TAG, String.format("Place '%s' has likelihood: %g",
                placeLikelihood.getPlace().getName(),
                placeLikelihood.getLikelihood()));
        }
        likelyPlaces.release();
    }
});

পুরানো উপায়

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
    .getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
  @Override
  public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
    for (PlaceLikelihood placeLikelihood : likelyPlaces) {
      Log.i(TAG, String.format("Place '%s' has likelihood: %g",
          placeLikelihood.getPlace().getName(),
          placeLikelihood.getLikelihood()));
    }
    likelyPlaces.release();
  }
});

আরও জানুন

Google API অ্যাক্সেস করার বিষয়ে আরও জানুন।