Un tipico quadro strumenti aggiorna le informazioni su guida, chiamate e contenuti multimediali ogni volta che arrivano 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 di guida 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 dell'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) {...} }; } }
È possibile aggiungere azioni personalizzate (come il rendering) a questi metodi per visualizzare le informazioni desiderate.
Stato della chiamata
Per monitorare lo stato della chiamata, attenersi alla seguente procedura:
- 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 le richiamate per ricevere 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 estrarre le informazioni di contatto:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Per il codice di esempio del monitoraggio dello stato delle chiamate, vedere:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Per il codice di esempio del fornitore di contenuti, vedere:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
.
Stato dei media
È possibile configurare il sistema per aggiornare lo stato del supporto quando riceve eventi relativi a una modifica nei MediaMetadata (come il titolo dell'album o del brano o l'immagine di copertina) o lo stato di riproduzione (buffering, pausa, riproduzione e arresto). Per aggiornare lo stato del supporto:
- Utilizza
MediaSessionManager
e ottieni il controller primario (#getActiveSessions(null)[0]
). - Registrare le richiamate (
MediaController#Callback
). - Iscriviti a una sessione attiva modificata
MediaSessionManager#addOnActiveSessionsChangedListener(...)
.
Per i dettagli, vedere:
-
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