一般的なインストルメント クラスタは、新しいデータを受信するたびに、運転、通話、メディアの情報を更新します。Android では、OEM のインストルメント クラスタが最新のステータスを簡単に受信できるように、次の API が用意されています。
運転状況
ナビゲーション実行中に運転ルートイベントが送信されます。ファイル 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(...)に登録します。
詳しくは以下のページをご覧ください。
