GoogleApi ক্লায়েন্টে স্থানান্তর করুন

গুগল প্লে সার্ভিসেস এসডিকে-র ১১.২.০ সংস্করণে অ্যান্ড্রয়েডের জন্য প্লেসেস এসডিকে অ্যাক্সেস করার একটি নতুন উপায় অন্তর্ভুক্ত করা হয়েছে। GoogleApi ক্লায়েন্টটি তার পূর্বসূরীর ( GoogleApiClient ) তুলনায় ব্যবহার করা সহজ, কারণ এটি স্বয়ংক্রিয়ভাবে গুগল প্লে পরিষেবার সাথে সংযোগ পরিচালনা করে। এটি আপনার অ্যাপে বয়লারপ্লেট কোডের পরিমাণ হ্রাস করে এবং অনেক সাধারণ সমস্যা দূর করতে সাহায্য করতে পারে। নতুন এপিআই বেশ কয়েকটি উন্নতি প্রদান করে:

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

GoogleApi ক্লায়েন্ট ব্যবহার করার জন্য আপনার অ্যাপ আপডেট করার জন্য আপনার Places SDK for Android বাস্তবায়নে কিছু পরিবর্তন প্রয়োজন। এই নির্দেশিকাটি Android এর জন্য Places 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();
  }
});

আরও জানুন

গুগল এপিআই অ্যাক্সেস করার বিষয়ে আরও জানুন।