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 অ্যাক্সেস করার বিষয়ে আরও জানুন।