2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
ステータスのモニタリング
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
一般的なインストルメント クラスタは、新しいデータを受信するたびに、運転、通話、メディアの情報を更新します。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(...)
に登録します。
詳しくは以下のページをご覧ください。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# Monitor status\n\nA typical instrument cluster updates driving, call, and media information whenever new data\ncomes in. Android provides the following API to enable an OEM's instrument cluster to receive\nup-to-date status easily.\n\nDriving status\n--------------\n\nDriving direction events are sent while navigation is ongoing. The file\n`packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java`\ncontains abstract methods for a navigation app renderer in the instrument cluster.\n\nIn an extended `InstrumentClusterRenderingService`, these methods are as follows: \n\n```transact-sql\npublic class MyClusterRenderingService extends\nInstrumentClusterRenderingService {\n ...\n @Override protected NavigationRenderer getNavigationRenderer() {\n return new NavigationRenderer() {\n @Override CarNavigationInstrumentCluster getNavigationProperties() {...}\n @Override void onStartNavigation() {...}\n @Override void onStopNavigation() {...}\n @Override void onNextTurnChanged(int event, String road, int turnAngle,\n int turnNumber, Bitmap image, int turnSide) {...}\n @Override void onNextTurnDistanceChanged(int distanceMeters, int\n timeSeconds) {...}\n };\n }\n}\n```\n\nYou can add custom actions (such as rendering) to these methods to display desired\ninformation.\n\nCall status\n-----------\n\nTo monitor call status, use the following steps:\n\n1. Extend `android.telecom.InCallService`. \n\n ```gdscript\n public class ClusterInCallService extends InCallService {\n ...\n ```\n2. Register the service in `AndroidManifest.xml`. \n\n ```gdscript\n \u003cservice android:name=\"com.android.car.cluster.sample.ClusterInCallService\"\n android:permission=\"android.permission.BIND_INCALL_SERVICE\"\n android:exported=\"false\"\u003e\n ```\n3. Override onCallAdded and onCallRemoved. \n\n ```verilog\n public void onCallAdded(Call call) {\n ...\n call.registerCallback(mPhoneCallback);\n mPhoneCallback.onStateChanged(call, call.getState());\n }\n public void onCallRemoved(Call call) {\n ...\n call.unregisterCallback(mPhoneCallback);\n }\n ```\n4. Register callbacks to receive call status change events (`Call#registerCallback`). \n\n ```gdscript\n private static class PhoneCallback extends Callback {\n ...\n public void onStateChanged(Call call, int state) {...}\n }\n ```\n5. Use content providers to pull contact information: \n `ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream`).\n\nFor call status monitor sample code, see: \n\n`packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java`\n\nFor content provider sample code, see: \n\n`packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java`.\n\nMedia status\n------------\n\nYou can configure the system to update the media status when it receive events related to a\nchange in MediaMetadata (such as album or song title or cover image) or playback state (buffering,\npause, play, and stop). To update the media status:\n\n1. Use `MediaSessionManager` and get primary controller (`#getActiveSessions(null)[0]`).\n2. Register callbacks (`MediaController#Callback`).\n3. Subscribe to on active session changed `MediaSessionManager#addOnActiveSessionsChangedListener(...)`.\n\nFor details, see:\n\n- [packages/services/Car/+/android-8.1.0_r9/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/MediaStateMonitor.java](https://android.googlesource.com/platform/packages/services/Car/+/android-8.1.0_r9/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/MediaStateMonitor.java)\n- [packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/InstrumentClusterController.java](https://android.googlesource.com/platform/packages/services/Car/+/android-8.1.0_r9/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/InstrumentClusterController.java)"]]