Un groupe d'instruments typique met à jour les informations de conduite, d'appel et multimédia chaque fois que de nouvelles données arrivent. Android fournit l'API suivante pour permettre au groupe d'instruments d'un OEM de recevoir facilement un état à jour.
Statut de conduite
Les événements de direction de conduite sont envoyés pendant que la navigation est en cours. Le fichier packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java
contient des méthodes abstraites pour un moteur de rendu d'application de navigation dans le combiné d'instruments.
Dans un InstrumentClusterRenderingService
étendu, ces méthodes sont les suivantes :
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) {...} }; } }
Vous pouvez ajouter des actions personnalisées (telles que le rendu) à ces méthodes pour afficher les informations souhaitées.
Statut de l'appel
Pour surveiller l'état des appels, procédez comme suit :
- Étendez
android.telecom.InCallService
.public class ClusterInCallService extends InCallService { ...
- Enregistrez le service dans
AndroidManifest.xml
.<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- Remplacez onCallAdded et onCallRemoved.
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- Enregistrez les rappels pour recevoir les événements de changement de statut d’appel (
Call#registerCallback
).private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- Utilisez des fournisseurs de contenu pour extraire les informations de contact :
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Pour obtenir un exemple de code du moniteur d’état des appels, voir :
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Pour obtenir un exemple de code du fournisseur de contenu, consultez :
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
.
Statut des médias
Vous pouvez configurer le système pour mettre à jour l'état du média lorsqu'il reçoit des événements liés à un changement dans les MediaMetadata (tels que le titre de l'album ou de la chanson ou l'image de couverture) ou l'état de lecture (mise en mémoire tampon, pause, lecture et arrêt). Pour mettre à jour l'état du média :
- Utilisez
MediaSessionManager
et obtenez le contrôleur principal (#getActiveSessions(null)[0]
). - Enregistrez les rappels (
MediaController#Callback
). - Abonnez-vous à la session active modifiée
MediaSessionManager#addOnActiveSessionsChangedListener(...)
.
Pour plus de détails, voir :
-
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