Status überwachen

Ein typisches Kombi-Instrument aktualisiert Fahrt-, Anruf- und Medieninformationen, sobald neue Daten vorliegen. ins Spiel. Android bietet die folgende API, damit das Kombi-Instrument eines OEMs Status aktualisieren.

Fahrstatus

Wegbeschreibungen werden während der Navigation gesendet. Die Datei packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java enthält abstrakte Methoden für einen Navigations-App-Renderer im Kombi-Instrument.

In einem erweiterten InstrumentClusterRenderingService sind diese Methoden:

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) {...}
        };
    }
}

Sie können diesen Methoden benutzerdefinierte Aktionen (wie das Rendern) hinzufügen, um gewünschte Informationen.

Anrufstatus

So überwachen Sie den Anrufstatus:

  1. android.telecom.InCallService verlängern.
    public class ClusterInCallService extends InCallService {
    ...
  2. Registrieren Sie den Dienst in AndroidManifest.xml.
    <service android:name="com.android.car.cluster.sample.ClusterInCallService"
        android:permission="android.permission.BIND_INCALL_SERVICE"
        android:exported="false">
  3. "onCallAdded" und "onCallRemoved" überschreiben.
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
  4. Registriere Callbacks, um Ereignisse zu erhalten, die den Anrufstatus ändern (Call#registerCallback).
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
  5. Contentanbieter verwenden, um Kontaktdaten abzurufen:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream).

Beispielcode für die Anrufstatusüberwachung findest du hier:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

Beispielcode für Contentanbieter finden Sie hier:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java.

Medienstatus

Sie können das System so konfigurieren, dass der Medienstatus aktualisiert wird, wenn Ereignisse im Zusammenhang mit einem Änderung von MediaMetadata (z. B. Album- oder Songtitel oder Cover-Abbildung) oder Wiedergabestatus (Zwischenspeichern, „Pause“, „Wiedergabe“ und „Stopp“. So aktualisieren Sie den Medienstatus:

  1. MediaSessionManager verwenden und primären Controller anfordern (#getActiveSessions(null)[0])
  2. Registrieren Sie Callbacks (MediaController#Callback).
  3. „Bei aktiver Sitzung abonnieren“ wurde geändert MediaSessionManager#addOnActiveSessionsChangedListener(...)

Weitere Informationen erhalten Sie hier: