Monitoruj status, Monitoruj status

Typowy zestaw wskaźników aktualizuje informacje dotyczące jazdy, połączeń i multimediów za każdym razem, gdy napływają nowe dane. System Android udostępnia następujący interfejs API, dzięki któremu zestaw wskaźników OEM może łatwo uzyskać aktualny stan.

Stan jazdy

Zdarzenia dotyczące kierunku jazdy są wysyłane w trakcie trwania nawigacji. Plik packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java zawiera abstrakcyjne metody renderowania aplikacji nawigacyjnej w zestawie wskaźników.

W rozszerzonej usłudze InstrumentClusterRenderingService metody te 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żna dodać akcje niestandardowe (takie jak renderowanie), aby wyświetlić żądane informacje.

Stan połączenia

Aby monitorować stan połączenia, wykonaj następujące kroki:

  1. Rozszerz 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ąp 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 statusu 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 monitora stanu połączenia można znaleźć w artykule:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

Aby zapoznać się z przykładowym kodem dostawcy treści, zobacz:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java .

Stan mediów

Można skonfigurować system tak, aby aktualizował stan multimediów po odebraniu zdarzeń związanych ze zmianą w MediaMetadata (takich jak tytuł albumu lub utworu albo zdjęcie na okładce) lub stanem odtwarzania (buforowanie, pauza, odtwarzanie i zatrzymanie). Aby zaktualizować stan multimediów:

  1. Użyj MediaSessionManager i uzyskaj główny kontroler ( #getActiveSessions(null)[0] ).
  2. Zarejestruj wywołania zwrotne ( MediaController#Callback ).
  3. Subskrybuj po zmianie aktywnej sesji MediaSessionManager#addOnActiveSessionsChangedListener(...) .

Aby uzyskać szczegółowe informacje, zobacz: