Überwachungsstatus,Überwachungsstatus

Ein typisches Kombiinstrument aktualisiert Fahr-, Anruf- und Medieninformationen, sobald neue Daten eingehen. Android stellt die folgende API bereit, damit das Kombiinstrument eines OEMs problemlos den aktuellen Status empfangen kann.

Fahrstatus

Während der Navigation werden Fahrtrichtungsereignisse 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 Kombiinstrument.

In einem erweiterten InstrumentClusterRenderingService lauten diese Methoden wie folgt:

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 (z. B. Rendering) hinzufügen, um gewünschte Informationen anzuzeigen.

Anrufstatus

Um den Anrufstatus zu überwachen, führen Sie die folgenden Schritte aus:

  1. Erweitern Sie android.telecom.InCallService .
    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. Überschreiben Sie onCallAdded und onCallRemoved.
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
    
  4. Registrieren Sie Rückrufe, um Anrufstatusänderungsereignisse zu empfangen ( Call#registerCallback ).
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
    
  5. Verwenden Sie Inhaltsanbieter, um Kontaktinformationen abzurufen:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream ).

Den Beispielcode für die Anrufstatusüberwachung finden Sie unter:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

Beispielcode für Inhaltsanbieter finden Sie unter:
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 es Ereignisse im Zusammenhang mit einer Änderung der MediaMetadata (z. B. Album- oder Songtitel oder Coverbild) oder des Wiedergabestatus (Pufferung, Pause, Wiedergabe und Stopp) empfängt. So aktualisieren Sie den Medienstatus:

  1. Verwenden Sie MediaSessionManager und rufen Sie den primären Controller ab ( #getActiveSessions(null)[0] ).
  2. Rückrufe registrieren ( MediaController#Callback ).
  3. Abonnieren Sie bei aktiver Sitzung geändert MediaSessionManager#addOnActiveSessionsChangedListener(...) .

Einzelheiten finden Sie unter: