Typowy zestaw wskaźników aktualizuje informacje o prowadzeniu pojazdu, rozmowach i multimediach, gdy tylko pojawią się nowe dane. Android udostępnia te interfejsy API, aby umożliwić urządzeniom OEM łatwe otrzymywanie aktualnego stanu.
Stan jazdy
Zdarzenia dotyczące wskazówek nawigacji są wysyłane podczas nawigacji. Plik
packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java
zawiera abstrakcyjne metody dla modułu renderowania aplikacji nawigacyjnej w klusterze przyrządów.
W rozszerzonym InstrumentClusterRenderingService
są to:
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) {...} }; } }
Aby wyświetlić odpowiednie informacje, możesz do tych metod dodać działania niestandardowe (np. renderowanie).
Stan połączenia
Aby sprawdzać stan połączeń:
- Przedłuż
android.telecom.InCallService
.public class ClusterInCallService extends InCallService { ...
- Zarejestruj usługę w
AndroidManifest.xml
.<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- Zastąpić metody onCallAdded 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łączenia:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
Przykładowy kod dla dostawców treści:
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 ze zmianą metadanych multimediów (np. tytułu albumu, tytułu utworu lub okładki) lub stanu odtwarzania (buforowanie, wstrzymanie, odtwarzanie i zatrzymanie). Aby zaktualizować stan multimediów:
- Użyj właściwości
MediaSessionManager
, aby uzyskać kontroler główny (#getActiveSessions(null)[0]
). - Zarejestruj wywołania zwrotne (
MediaController#Callback
). - Subskrybuj aktywną sesję zmienioną na
MediaSessionManager#addOnActiveSessionsChangedListener(...)
.
Szczegółowe informacje znajdziesz w następujących artykułach: