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:
- Estendi
android.telecom.InCallService
.public class ClusterInCallService extends InCallService { ...
- 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">
- 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); }
- 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) {...} }
- 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:
- Utilizza
MediaSessionManager
e ricevi il controller primario (#getActiveSessions(null)[0]
). - Registra i callback (
MediaController#Callback
). - Abbonamento alla sessione attiva modificato
MediaSessionManager#addOnActiveSessionsChangedListener(...)
.
Per informazioni dettagliate, vedere le sezioni: