État du moniteur

Un cluster d'instruments typique met à jour les informations sur la conduite, les appels et les contenus multimédias chaque fois que de nouvelles données sont reçues. Android fournit l'API suivante pour permettre au combiné d'instruments d'un OEM de recevoir facilement l'état à jour.

État de la conduite

Les événements de direction de conduite sont envoyés pendant la navigation. 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.

État de l'appel

Pour surveiller l'état des appels, procédez comme suit:

  1. Développez android.telecom.InCallService.
    public class ClusterInCallService extends InCallService {
    ...
  2. 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">
  3. Remplacement de onCallAdded et onCallRemoved.
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
  4. Enregistrez des rappels pour recevoir des é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) {...}
    }
  5. 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:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

Pour obtenir un exemple de code de fournisseur de contenu, consultez
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 qu'il mette à jour l'état des contenus multimédias lorsqu'il reçoit des événements liés à une modification de MediaMetadata (titre de l'album ou du titre, ou image de couverture, par exemple) ou de l'état de la lecture (mise en mémoire tampon, pause, lecture et arrêt). Pour modifier l'état du contenu multimédia:

  1. Utilisez MediaSessionManager et obtenez le contrôleur principal (#getActiveSessions(null)[0]).
  2. Enregistrez des rappels (MediaController#Callback).
  3. Abonnez-vous à la modification de la session active MediaSessionManager#addOnActiveSessionsChangedListener(...).

Pour plus d'informations, reportez-vous aux rubriques suivantes :