Ein typisches Kombiinstrument aktualisiert Fahr-, Anruf- und Medieninformationen, sobald neue Daten eingehen. Android stellt die folgende API bereit, damit das Kombiinstrument eines OEMs problemlos den aktuellen Status empfangen kann.
Fahrstatus
Während der Navigation werden Fahrtrichtungsereignisse gesendet. Die Datei packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java
enthält abstrakte Methoden für einen Navigations-App-Renderer im Kombiinstrument.
In einem erweiterten InstrumentClusterRenderingService
lauten diese Methoden wie folgt:
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) {...} }; } }
Sie können diesen Methoden benutzerdefinierte Aktionen (z. B. Rendering) hinzufügen, um gewünschte Informationen anzuzeigen.
Anrufstatus
Um den Anrufstatus zu überwachen, führen Sie die folgenden Schritte aus:
- Erweitern Sie
android.telecom.InCallService
.public class ClusterInCallService extends InCallService { ...
- Registrieren Sie den Dienst in
AndroidManifest.xml
.<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- Überschreiben Sie onCallAdded und onCallRemoved.
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- Registrieren Sie Rückrufe, um Anrufstatusänderungsereignisse zu empfangen (
Call#registerCallback
).private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- Verwenden Sie Inhaltsanbieter, um Kontaktinformationen abzurufen:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Den Beispielcode für die Anrufstatusüberwachung finden Sie unter:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Beispielcode für Inhaltsanbieter finden Sie unter:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
.
Medienstatus
Sie können das System so konfigurieren, dass der Medienstatus aktualisiert wird, wenn es Ereignisse im Zusammenhang mit einer Änderung der MediaMetadata (z. B. Album- oder Songtitel oder Coverbild) oder des Wiedergabestatus (Pufferung, Pause, Wiedergabe und Stopp) empfängt. So aktualisieren Sie den Medienstatus:
- Verwenden Sie
MediaSessionManager
und rufen Sie den primären Controller ab (#getActiveSessions(null)[0]
). - Rückrufe registrieren (
MediaController#Callback
). - Abonnieren Sie bei aktiver Sitzung geändert
MediaSessionManager#addOnActiveSessionsChangedListener(...)
.
Einzelheiten finden Sie unter:
-
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