Pantau status, Pantau status

Kluster instrumen pada umumnya memperbarui informasi mengemudi, panggilan, dan media setiap kali data baru masuk. Android menyediakan API berikut untuk memungkinkan kluster instrumen OEM menerima status terkini dengan mudah.

Status mengemudi

Peristiwa petunjuk arah mengemudi 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 kluster 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 khusus (seperti rendering) ke metode ini untuk menampilkan informasi yang diinginkan.

Status panggilan

Untuk memantau status panggilan, gunakan langkah-langkah berikut:

  1. Perluas android.telecom.InCallService .
    public class ClusterInCallService extends InCallService {
    ...
    
  2. Daftarkan layanan di AndroidManifest.xml .
    <service android:name="com.android.car.cluster.sample.ClusterInCallService"
        android:permission="android.permission.BIND_INCALL_SERVICE"
        android:exported="false">
    
  3. Ganti onCallAdded dan onCallRemoved.
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
    
  4. Daftarkan panggilan balik untuk menerima peristiwa perubahan status panggilan ( Call#registerCallback ).
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
    
  5. Gunakan penyedia konten untuk mengambil informasi kontak:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream ).

Untuk kode contoh monitor 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 dapat mengonfigurasi sistem untuk memperbarui status media ketika menerima peristiwa terkait perubahan MediaMetadata (seperti judul album atau lagu atau gambar sampul) atau status pemutaran (buffering, jeda, putar, dan hentikan). Untuk memperbarui status media:

  1. Gunakan MediaSessionManager dan dapatkan pengontrol utama ( #getActiveSessions(null)[0] ).
  2. Daftarkan panggilan balik ( MediaController#Callback ).
  3. Berlangganan pada sesi aktif diubah MediaSessionManager#addOnActiveSessionsChangedListener(...) .

Untuk detailnya, lihat: