Stan monitorowania

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ń:

  1. Przedłuż android.telecom.InCallService.
    public class ClusterInCallService extends InCallService {
    ...
  2. 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">
  3. 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);
    }
  4. 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) {...}
    }
  5. 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:

  1. Użyj właściwości MediaSessionManager, aby uzyskać kontroler główny (#getActiveSessions(null)[0]).
  2. Zarejestruj wywołania zwrotne (MediaController#Callback).
  3. Subskrybuj aktywną sesję zmienioną na MediaSessionManager#addOnActiveSessionsChangedListener(...).

Szczegółowe informacje znajdziesz w następujących artykułach: