每當有新資料時,典型的儀表板都會更新駕駛、呼叫和媒體資訊 。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) {...} }; } }
你可以為這些方法新增自訂動作 (例如顯示),以便顯示所需內容 可能不準確或不適當
通話狀態
如要監控通話狀態,請按照下列步驟操作:
- 延長
android.telecom.InCallService
。public class ClusterInCallService extends InCallService { ...
- 在「
AndroidManifest.xml
」中註冊服務。<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- 覆寫 onCallAdded 和 onCallRemoved。
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- 註冊回呼以接收呼叫狀態變更事件 (
Call#registerCallback
)。private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- 使用內容供應器擷取聯絡資訊:
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 (例如專輯或歌曲標題或封面圖片) 或播放狀態 (緩衝處理、 暫停、播放及停止)。如要更新媒體狀態,請按照下列步驟操作:
- 使用
MediaSessionManager
並取得主要控制器 (#getActiveSessions(null)[0]
)。 - 註冊回呼 (
MediaController#Callback
)。 - 「在執行中的工作階段訂閱」已變更
MediaSessionManager#addOnActiveSessionsChangedListener(...)
。
如需詳細資訊,請參閱:
packages/services/Car/+/android-8.1.0_r9/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/MediaStateMonitor.java
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/InstrumentClusterController.java