Ein typisches Kombi-Instrument aktualisiert Fahrt-, Anruf- und Medieninformationen, sobald neue Daten vorliegen. ins Spiel. Android bietet die folgende API, damit das Kombi-Instrument eines OEMs Status aktualisieren.
Fahrstatus
Wegbeschreibungen werden während der Navigation 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 Kombi-Instrument.
In einem erweiterten InstrumentClusterRenderingService
sind diese Methoden:
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 (wie das Rendern) hinzufügen, um gewünschte Informationen.
Anrufstatus
So überwachen Sie den Anrufstatus:
android.telecom.InCallService
verlängern.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">
- "onCallAdded" und "onCallRemoved" überschreiben.
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- Registriere Callbacks, um Ereignisse zu erhalten, die den Anrufstatus ändern (
Call#registerCallback
).private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- Contentanbieter verwenden, um Kontaktdaten abzurufen:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Beispielcode für die Anrufstatusüberwachung findest du hier:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Beispielcode für Contentanbieter finden Sie hier:
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 Ereignisse im Zusammenhang mit einem Änderung von MediaMetadata (z. B. Album- oder Songtitel oder Cover-Abbildung) oder Wiedergabestatus (Zwischenspeichern, „Pause“, „Wiedergabe“ und „Stopp“. So aktualisieren Sie den Medienstatus:
MediaSessionManager
verwenden und primären Controller anfordern (#getActiveSessions(null)[0]
)- Registrieren Sie Callbacks (
MediaController#Callback
). - „Bei aktiver Sitzung abonnieren“ wurde geändert
MediaSessionManager#addOnActiveSessionsChangedListener(...)
Weitere Informationen erhalten Sie hier:
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