Xác định và theo dõi trạng thái cũng như loại chân đế

Các thiết bị chạy Android có thể được gắn vào các loại đế khác nhau. Các bao gồm đế sạc cho ô tô, đế sạc trong nhà và đế sạc kỹ thuật số hoặc đồng hồ kim. Trạng thái của đế là thường liên kết chặt chẽ với trạng thái sạc, vì nhiều đế sạc cung cấp điện cho được gắn vào đế sạc.

Ứng dụng của bạn ảnh hưởng đến tốc độ cập nhật của điện thoại ở trạng thái đế. Bạn có thể tăng tần suất cập nhật của một ứng dụng tin tức thể thao khi ứng dụng đó nằm trong thanh dock của máy tính, hoặc tắt hoàn toàn bản cập nhật nếu thiết bị được gắn vào đế trên ô tô. Ngược lại, bạn có thể tối đa hoá các bản cập nhật trong khi ô tô được gắn vào đế sạc nếu dịch vụ nền của bạn đang cập nhật tình trạng giao thông.

Trạng thái đế cũng được truyền dưới dạng một cố định Intent, cho phép bạn truy vấn xem thiết bị có được gắn vào đế sạc hay không và loại đế nào nếu vì vậy.

Xác định trạng thái đế sạc hiện tại

Thông tin bổ sung về trạng thái đế được đưa vào dưới dạng thông tin bổ sung trong phát sóng cố định của ACTION_DOCK_EVENT hành động. Vì nút này cố định, nên bạn có thể gọi registerReceiver(), truyền vào null làm broadcast receiver. Đoạn mã sau cho biết cách hoàn tất quy trình này:

Kotlin

val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter ->
    context.registerReceiver(null, ifilter)
}

Java

IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

Bạn có thể trích xuất trạng thái gắn hiện tại từ EXTRA_DOCK_STATE phụ phí:

Kotlin

val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1
val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED

Java

int dockState -1;
if (dockStatus != null) {
  dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
}
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

Xác định loại đế hiện tại

Nếu được gắn vào đế sạc, thì thiết bị đó có thể được gắn vào đế sạc theo bất kỳ lựa chọn nào sau đây các loại đế khác nhau:

  • Ô tô
  • Bàn
  • Không gian làm việc cấp thấp (Analog)
  • Bàn làm việc cao cấp (Kỹ thuật số)

Hai tuỳ chọn sau chỉ được giới thiệu trong API Android cấp 11, vì vậy để kiểm tra cả 3 loại không gian làm việc khi bạn chỉ quan tâm đến loại đế thay vì là loại đế sạc kỹ thuật số hay đồng hồ kim:

Kotlin

val isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR
val isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK
        || dockState == EXTRA_DOCK_STATE_LE_DESK
        || dockState == EXTRA_DOCK_STATE_HE_DESK

Java

boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
                 dockState == EXTRA_DOCK_STATE_HE_DESK;