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:
- 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">
- 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); }
- 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) {...} }
- 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:
- Usa
MediaSessionManager
e ottieni il controller principale (#getActiveSessions(null)[0]
). - Registra i callback (
MediaController#Callback
). - L'opzione "Iscriviti a" durante la sessione attiva è stata modificata
MediaSessionManager#addOnActiveSessionsChangedListener(...)
.
Per informazioni dettagliate, vedere le sezioni:
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