Monitora lo stato

Un tipico quadro strumenti aggiorna le informazioni di guida, chiamate e contenuti multimediali ogni volta che vengono nuovi dati entra in gioco. Android fornisce la seguente API per consentire al quadro strumenti di un OEM di ricevere lo stato aggiornato.

Stato alla guida

Gli eventi di indicazioni stradali vengono inviati mentre la navigazione è in corso. Il file packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java contiene metodi astratti per un renderer di app di navigazione nel quadro strumenti.

In un InstrumentClusterRenderingService esteso, questi metodi sono i seguenti:

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) {...}
        };
    }
}

Puoi aggiungere azioni personalizzate (ad esempio il rendering) a questi metodi per visualizzare informazioni.

Stato chiamata

Per monitorare lo stato della chiamata:

  1. Estendi android.telecom.InCallService.
    public class ClusterInCallService extends InCallService {
    ...
  2. Registra il servizio in AndroidManifest.xml.
    <service android:name="com.android.car.cluster.sample.ClusterInCallService"
        android:permission="android.permission.BIND_INCALL_SERVICE"
        android:exported="false">
  3. Esegui l'override di onCall added e onCallRemoved.
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
  4. Registra i callback per ricevere gli eventi di modifica dello stato della chiamata (Call#registerCallback).
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
  5. Serviti di fornitori di contenuti per ottenere i dati di contatto:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream).

Per il codice di esempio per il monitoraggio dello stato della chiamata, consulta:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

Per il codice campione del fornitore di contenuti, consulta:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java.

Stato dei contenuti multimediali

Puoi configurare il sistema in modo che aggiorni lo stato dei contenuti multimediali quando riceve eventi relativi a un modifica in MediaMetadata (come il titolo di un album o un brano o l'immagine di copertina) o lo stato di riproduzione (buffering, mettere in pausa, riprodurre e interrompere). Per aggiornare lo stato dei contenuti multimediali:

  1. Usa MediaSessionManager e ottieni il controller principale (#getActiveSessions(null)[0]).
  2. Registra i callback (MediaController#Callback).
  3. L'opzione "Iscriviti a" durante la sessione attiva è stata modificata MediaSessionManager#addOnActiveSessionsChangedListener(...).

Per informazioni dettagliate, vedere le sezioni: