Theo dõi trạng thái, Theo dõi trạng thái

Cụm công cụ điển hình cập nhật thông tin lái xe, cuộc gọi và phương tiện bất cứ khi nào có dữ liệu mới. Android cung cấp API sau để cho phép cụm công cụ của OEM dễ dàng nhận được trạng thái cập nhật.

Tình trạng lái xe

Các sự kiện chỉ đường lái xe được gửi trong khi việc điều hướng đang diễn ra. 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 công cụ.

Trong InstrumentClusterRenderingService mở rộng, các phương thức này 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 các hành động tùy chỉnh (chẳng hạn như hiển thị) vào các phương thức này để hiển thị thông tin mong muố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. Mở rộng android.telecom.InCallService .
    public class ClusterInCallService extends InCallService {
    ...
    
  2. Đăng ký dịch vụ trong 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ý cuộc gọi lại để nhận các 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 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 phương tiện

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

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

Để biết chi tiết, xem: