Theo dõi trạng thái

Một cụm đo lường thông thường sẽ cập nhật thông tin về hoạt động lái xe, cuộc gọi và nội dung nghe nhìn mỗi khi có dữ liệu mới xuất hiện. Android cung cấp API sau đây để cho phép cụm đo lường của OEM nhận trạng thái được cập nhật một cách dễ dàng.

Trạng thái lái xe

Hệ thống sẽ gửi sự kiện chỉ đường lái xe trong khi đang đi theo chỉ dẫn. Tệp packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java chứa các phương thức trừu tượng cho trình kết xuất ứng dụng điều hướng trong cụm đo lường.

Trong InstrumentClusterRenderingService mở rộng, các phương thức này sẽ như sau:

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

Bạn có thể thêm thao tác tuỳ chỉnh (chẳng hạn như kết xuất) vào các phương thức này để hiển thị những thao tác mong muốn của bạn.

Trạng thái cuộc gọi

Để theo dõi trạng thái cuộc gọi, hãy làm theo các bước sau:

  1. Gia hạn android.telecom.InCallService.
    public class ClusterInCallService extends InCallService {
    ...
  2. Đăng ký dịch vụ này trên AndroidManifest.xml.
    <service android:name="com.android.car.cluster.sample.ClusterInCallService"
        android:permission="android.permission.BIND_INCALL_SERVICE"
        android:exported="false">
  3. Ghi đè onCallAdded và onCallRemoved.
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
  4. Đăng ký lệnh gọi lại để nhận sự kiện thay đổi trạng thái cuộc gọi (Call#registerCallback).
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
  5. Sử dụng nhà cung cấp nội dung để lấy thông tin liên hệ:
    ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream).

Để biết mã mẫu giám sát trạng thái cuộc gọi, hãy xem:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java

Để biết mã mẫu của trình cung cấp nội dung, hãy xem:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java

Trạng thái nội dung nghe nhìn

Bạn có thể định cấu hình hệ thống để cập nhật trạng thái của nội dung nghe nhìn khi nhận được các sự kiện liên quan đến thay đổi về MediaMetadata (chẳng hạn như tên đĩa nhạc hoặc bài hát hoặc ảnh bìa) hoặc trạng thái phát (lưu vào bộ đệm, tạm dừng, phát và dừng). Cách cập nhật trạng thái của nội dung nghe nhìn:

  1. Sử dụng MediaSessionManager và tải bộ điều khiển chính (#getActiveSessions(null)[0]).
  2. Đăng ký lệnh gọi lại (MediaController#Callback).
  3. Đã thay đổi đăng ký trong phiên đang hoạt động MediaSessionManager#addOnActiveSessionsChangedListener(...).

Để biết chi tiết, hãy xem: