Un groupe d'instruments classique met à jour les informations sur la conduite, les appels et les contenus multimédias chaque fois que de nouvelles données sont disponibles entre en jeu. Android fournit l'API suivante pour permettre au cluster d'instruments d'un OEM de recevoir facilement à jour.
État du trajet
Des événements d'itinéraire sont envoyés lorsque la navigation est en cours. 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 cluster d'instruments.
Dans une InstrumentClusterRenderingService
étendue, 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 l'affichage) à ces méthodes pour afficher les résultats des informations.
État de l'appel
Pour surveiller l'état d'un appel, procédez comme suit:
- Prolongez
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">
- Ignorer 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 des rappels pour recevoir les événements de modification de l'état de l'appel (
Call#registerCallback
).private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- Utilisez des fournisseurs de contenu pour extraire les coordonnées:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Pour obtenir un exemple de code de surveillance de l'état des appels, consultez les pages suivantes:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Pour obtenir un exemple de code de fournisseur de contenu, consultez les pages suivantes:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
État du contenu multimédia
Vous pouvez configurer le système pour mettre à jour l'état du contenu multimédia lorsqu'il reçoit des événements liés à Modification de l'élément MediaMetadata (titre de l'album ou de la chanson, image de couverture, etc.) ou de l'état de la lecture (mise en mémoire tampon, pause, lecture et arrêt). Pour mettre à jour l'état d'un contenu multimédia:
- Utiliser
MediaSessionManager
et obtenir le contrôleur principal (#getActiveSessions(null)[0]
). - Enregistre des rappels (
MediaController#Callback
). - La valeur "S'abonner à sur la session active" a été modifiée
MediaSessionManager#addOnActiveSessionsChangedListener(...)
Pour plus d'informations, reportez-vous aux rubriques suivantes :
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