監控狀態

每當有新資料時,典型的儀表板都會更新駕駛、呼叫和媒體資訊 。Android 提供下列 API,可讓原始設備製造商 (OEM) 的儀表板 而且都能輕鬆掌握最新狀態

行車狀態

在導航進行時傳送行車路線事件。檔案 packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java 包含檢測叢集內導航應用程式轉譯器的抽象方法。

在擴充的 InstrumentClusterRenderingService 中,這些方法如下所示:

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) {...}
        };
    }
}

你可以為這些方法新增自訂動作 (例如顯示),以便顯示所需內容 可能不準確或不適當

通話狀態

如要監控通話狀態,請按照下列步驟操作:

  1. 延長 android.telecom.InCallService
    public class ClusterInCallService extends InCallService {
    ...
  2. 在「AndroidManifest.xml」中註冊服務。
    <service android:name="com.android.car.cluster.sample.ClusterInCallService"
        android:permission="android.permission.BIND_INCALL_SERVICE"
        android:exported="false">
  3. 覆寫 onCallAdded 和 onCallRemoved。
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
  4. 註冊回呼以接收呼叫狀態變更事件 (Call#registerCallback)。
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
  5. 使用內容供應器擷取聯絡資訊:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream)。

如需呼叫狀態監控器程式碼範例,請參閱:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

如需內容供應器的程式碼範例,請參閱:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java

媒體狀態

您可以調整設定,讓系統在系統收到與 MediaMetadata (例如專輯或歌曲標題或封面圖片) 或播放狀態 (緩衝處理、 暫停、播放及停止)。如要更新媒體狀態,請按照下列步驟操作:

  1. 使用 MediaSessionManager 並取得主要控制器 (#getActiveSessions(null)[0])。
  2. 註冊回呼 (MediaController#Callback)。
  3. 「在執行中的工作階段訂閱」已變更 MediaSessionManager#addOnActiveSessionsChangedListener(...)

如需詳細資訊,請參閱: