Monitora stato

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

Stato di guida

Gli eventi relativi alle indicazioni stradali vengono inviati durante la navigazione. Il file packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java contiene metodi astratti per un visualizzatore 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 le informazioni desiderate.

Stato della chiamata

Per monitorare lo stato delle chiamate, segui questi passaggi:

  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. Sostituisci onCallAdded 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. Utilizza i fornitori di contenuti per recuperare i dati di contatto:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream).

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

Per il codice di esempio 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 una variazione di MediaMetadata (ad esempio il titolo dell'album o del brano o l'immagine di copertina) o allo stato di riproduzione (buffering, pausa, riproduzione e interruzione). Per aggiornare lo stato dei contenuti multimediali:

  1. Utilizza MediaSessionManager e ricevi il controller primario (#getActiveSessions(null)[0]).
  2. Registra i callback (MediaController#Callback).
  3. Abbonamento alla sessione attiva modificato MediaSessionManager#addOnActiveSessionsChangedListener(...).

Per informazioni dettagliate, vedere le sezioni: