Cluster instrumen standar memperbarui informasi mengemudi, panggilan, dan media setiap kali ada data baru akan diperlukan. Android menyediakan API berikut untuk memungkinkan cluster instrumen OEM menerima {i>up-to-date<i} dengan mudah.
Status mengemudi
Peristiwa rute mobil dikirim saat navigasi sedang berlangsung. File
packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java
berisi metode abstrak untuk perender aplikasi navigasi di cluster instrumen.
Dalam InstrumentClusterRenderingService
yang diperluas, metode ini adalah sebagai berikut:
public class MyClusterRenderingService extends InstrumentClusterRenderingService { ... @Override protected NavigationRenderer getNavigationRenderer() { return new NavigationRenderer() { @Override CarNavigationInstrumentCluster getNavigationProperties() {...} @Override void onStartNavigation() {...} @Override void onStopNavigation() {...} @Override void onNextTurnChanged(int event, String road, int turnAngle, int turnNumber, Bitmap image, int turnSide) {...} @Override void onNextTurnDistanceChanged(int distanceMeters, int timeSeconds) {...} }; } }
Anda dapat menambahkan tindakan kustom (seperti rendering) ke metode ini untuk menampilkan tidak akurat atau tidak sesuai.
Status panggilan
Untuk memantau status panggilan, gunakan langkah-langkah berikut:
- Memperluas
android.telecom.InCallService
.public class ClusterInCallService extends InCallService { ...
- Daftarkan layanan di
AndroidManifest.xml
.<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- Mengganti onCallAdded dan onCallRemoved.
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- Mendaftarkan callback untuk menerima peristiwa perubahan status panggilan (
Call#registerCallback
).private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- Gunakan penyedia konten untuk mengambil informasi kontak:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Untuk kode contoh pemantau status panggilan, lihat:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Untuk kode contoh penyedia konten, lihat:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
.
Status media
Anda bisa mengonfigurasi sistem untuk memperbarui status media saat menerima peristiwa yang terkait dengan perubahan dalam MediaMetadata (seperti judul album atau lagu atau gambar sampul) atau status pemutaran (buffering, menjeda, memutar, dan berhenti). Untuk memperbarui status media:
- Menggunakan
MediaSessionManager
dan mendapatkan pengontrol utama (#getActiveSessions(null)[0]
). - Daftarkan callback (
MediaController#Callback
). - Berlangganan pada sesi aktif diubah
MediaSessionManager#addOnActiveSessionsChangedListener(...)
.
Untuk detailnya, lihat: