Typowy klaster przyrządów aktualizuje informacje o ruchu, połączeniach i multimediach za każdym razem, gdy pojawiają się nowe dane wchodzą w interakcję. Android udostępnia poniższy interfejs API, aby umożliwić klastrowi przyrządów OEM otrzymywanie być na bieżąco z aktualnymi informacjami.
Stan jazdy
Zdarzenia wskazówek dojazdu są wysyłane podczas trwania nawigacji. Plik
packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java
zawiera abstrakcyjne metody mechanizmu renderowania aplikacji nawigacyjnej w klastrze przyrządów.
W rozszerzonej InstrumentClusterRenderingService
te metody są następujące:
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) {...} }; } }
Do tych metod możesz dodawać działania niestandardowe (np. renderowanie), aby wyświetlać odpowiednie i informacjami o nich.
Stan połączenia
Aby monitorować stan połączenia:
- Przedłuż:
android.telecom.InCallService
.public class ClusterInCallService extends InCallService { ...
- Zarejestruj usługę w regionie
AndroidManifest.xml
.<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- Zastąpienie onCallDodano i onCallRemoved.
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- Zarejestruj wywołania zwrotne, aby otrzymywać zdarzenia zmiany stanu połączenia (
Call#registerCallback
).private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- Użyj dostawców treści, aby pobrać informacje kontaktowe:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
).
Przykładowy kod monitorowania stanu połączeń znajdziesz tutaj:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Przykładowy kod dostawcy treści znajdziesz tutaj:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
Stan multimediów
Możesz skonfigurować system tak, aby aktualizował stan multimediów po otrzymaniu zdarzeń związanych z zmian w metadanych MediaMetadata (takich jak tytuł albumu, utworu czy okładka) lub stan odtwarzania (buforowanie, wstrzymywanie, odtwarzanie i zatrzymywanie). Aby zaktualizować stan multimediów:
- Użyj aplikacji
MediaSessionManager
i pobierz kontroler główny (#getActiveSessions(null)[0]
). - Zarejestruj wywołania zwrotne (
MediaController#Callback
). - Zmieniono opcję subskrypcji w aktywnej sesji
MediaSessionManager#addOnActiveSessionsChangedListener(...)
Szczegółowe informacje znajdziesz w następujących artykułach:
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