Monitorowanie stanu

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:

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

  1. Użyj aplikacji MediaSessionManager i pobierz kontroler główny (#getActiveSessions(null)[0]).
  2. Zarejestruj wywołania zwrotne (MediaController#Callback).
  3. Zmieniono opcję subskrypcji w aktywnej sesji MediaSessionManager#addOnActiveSessionsChangedListener(...)

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