Monitör durumu, Monitör durumu

Tipik bir gösterge paneli, yeni veriler geldiğinde sürüş, çağrı ve medya bilgilerini günceller. Android, bir OEM'in gösterge panelinin güncel durumu kolayca alabilmesini sağlamak için aşağıdaki API'yi sağlar.

Sürüş durumu

Navigasyon devam ederken sürüş yönü etkinlikleri gönderilir. packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java gösterge kümesindeki bir navigasyon uygulaması oluşturucusu için soyut yöntemler içerir.

Genişletilmiş bir InstrumentClusterRenderingService bu yöntemler aşağıdaki gibidir:

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

İstediğiniz bilgileri görüntülemek için bu yöntemlere özel eylemler (oluşturma gibi) ekleyebilirsiniz.

Arama durumu

Çağrı durumunu izlemek için aşağıdaki adımları kullanın:

  1. android.telecom.InCallService genişletin.
    public class ClusterInCallService extends InCallService {
    ...
    
  2. Hizmeti AndroidManifest.xml dosyasına kaydedin.
    <service android:name="com.android.car.cluster.sample.ClusterInCallService"
        android:permission="android.permission.BIND_INCALL_SERVICE"
        android:exported="false">
    
  3. onCallAdded ve onCallRemoved'ı geçersiz kılın.
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
    
  4. Arama durumu değişikliği etkinliklerini almak için geri aramaları kaydedin ( Call#registerCallback ).
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
    
  5. İletişim bilgilerini almak için içerik sağlayıcıları kullanın:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream ).

Çağrı durumu izleme örnek kodu için bkz.:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

İçerik sağlayıcı örnek kodu için bkz.:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java .

Medya durumu

Sistemi, MediaMetadata'daki (albüm veya şarkı adı veya kapak resmi gibi) veya oynatma durumundaki (ara belleğe alma, duraklatma, oynatma ve durdurma) bir değişiklikle ilgili olaylar aldığında medya durumunu güncelleyecek şekilde yapılandırabilirsiniz. Medya durumunu güncellemek için:

  1. MediaSessionManager kullanın ve birincil denetleyiciyi edinin ( #getActiveSessions(null)[0] ).
  2. Geri aramaları kaydedin ( MediaController#Callback ).
  3. Etkin oturuma abone olma değiştirildi MediaSessionManager#addOnActiveSessionsChangedListener(...) .

Ayrıntılar için bkz: