Rilis SDK layanan Google Play 11.2.0 menyertakan cara baru untuk mengakses Places SDK for Android. Klien GoogleApi
lebih mudah digunakan daripada pendahulunya (GoogleApiClient
), karena secara otomatis mengelola koneksi ke layanan Google Play. Hal ini mengurangi jumlah kode boilerplate
dalam aplikasi Anda, dan dapat membantu menghilangkan banyak kesalahan umum. API baru ini
menawarkan sejumlah peningkatan:
- Proses koneksi dikelola secara otomatis, sehingga API baru lebih mudah diimplementasikan.
- Panggilan API kini akan otomatis menunggu koneksi layanan
putus, sehingga Anda tidak perlu menunggu
onConnected
sebelum membuat permintaan. - Tasks API mempermudah pembuatan operasi asinkron.
- Kode ini bersifat mandiri, dan dapat dengan mudah dipindahkan ke class utilitas bersama atau yang serupa.
Update aplikasi Anda untuk menggunakan klien GoogleApi
memerlukan beberapa perubahan pada penerapan Places SDK for Android. Panduan ini menjelaskan
perubahan pada Places SDK for Android, dan merekomendasikan
langkah-langkah yang perlu dilakukan saat mengupdate aplikasi untuk menggunakan klien baru.
Ringkasan
Area perubahan utama adalah sebagai berikut:
- Ada dua titik entri baru:
GeoDataClient
danPlaceDetectionClient
. Daripada membuat satu instanceGoogleApiClient
untuk mencakup semua API, aplikasi Anda kini harus membuat instanceGeoDataClient
danPlaceDetectionClient
. - Karena callback koneksi tidak lagi diperlukan, Anda dapat memfaktorkan ulang aplikasi dengan aman untuk menghapusnya.
- Metode Places API yang baru kini bersifat asinkron,
dan menampilkan
Task
, bukanPendingResult
.
Memuat Places API
Untuk memuat Places API, deklarasikan titik masuk, lalu buat instance klien dalam metode onCreate() fragmen atau aktivitas Anda seperti yang ditunjukkan dalam contoh berikut:
// 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);
Perbandingan
Metode Places API yang baru kini bersifat asinkron,
dan menampilkan Task
, bukan PendingResult
. Struktur data tidak berubah, sehingga kode yang ada untuk menangani hasil tidak perlu diperbarui.
Contoh kode berikut membandingkan GetCurrentPlace()
versi baru dan lama:
Cara baru
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(); } });
Cara lama
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(); } });
Pelajari lebih lanjut
Pelajari lebih lanjut cara mengakses Google API.