Ein typisches Kombiinstrument aktualisiert Informationen zu Fahrt, Anrufen und Medien, sobald neue Daten eingehen. Android bietet die folgende API, damit das Kombiinstrument eines OEMs ganz einfach den aktuellen Status erhält.
Fahrstatus
Ereignisse für die Fahrtrichtung werden gesendet, während die Navigation aktiv ist. 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 einer erweiterten InstrumentClusterRenderingService
sind dies:
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 die gewünschten Informationen anzuzeigen.
Anrufstatus
So überwachen Sie den Anrufstatus:
- Maximieren 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 Callbacks, um Ereignisse zur Änderung des Anrufstatus (
Call#registerCallback
) zu erhalten.private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- Kontaktdaten über Contentanbieter abrufen:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Beispielcode zum Überwachen des Anrufstatus:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Beispielcode für Contentanbieter:
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 einer Änderung der MediaMetadata (z. B. Album- oder Titelname oder Coverbild) oder des Wiedergabestatus (Pufferung, Pause, Wiedergabe und Stopp) empfangen werden. So aktualisieren Sie den Medienstatus:
- Verwende
MediaSessionManager
und erhalte den primären Controller (#getActiveSessions(null)[0]
). - Registrieren Sie Callbacks (
MediaController#Callback
). - Abonnieren Sie „Bei aktiver Sitzung geändert“
MediaSessionManager#addOnActiveSessionsChangedListener(...)
.
Weitere Informationen erhalten Sie hier: