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 nhiều loại đế sạc khác nhau. Bao gồm đế sạc trên ô tô, đế sạc trong nhà và đế sạc kỹ thuật số hoặc tương tự. Trạng thái của đế 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ác thiết bị đã gắn vào đế.

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

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

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

Thông tin chi tiết về trạng thái đế được đưa vào dưới dạng phần bổ sung trong thông báo truyền tin cố định của hành động ACTION_DOCK_EVENT. Vì đây là phương thức cố định nên bạn có thể gọi registerReceiver(), truyền null dưới dạng broadcast receiver. Đoạn mã sau đây 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 đế sạc hiện tại từ phần bổ sung EXTRA_DOCK_STATE:

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 đế, thiết bị có thể được gắn vào bất kỳ loại đế nào trong số 4 loại đế sau đây:

  • Ô tô
  • Chủ đề h́nh máy tính để bàn
  • Bàn làm việc đầu cuối (Analog)
  • Bàn làm việc cao cấp (kỹ thuật số)

Hai lựa chọn sau chỉ được giới thiệu trong API Android cấp 11. Vì vậy, bạn nên kiểm tra cả 3 loại không gian làm việc khi chỉ quan tâm đến loại đế thay vì là loại đế sạc kỹ thuật số hoặc tương tự cụ thể:

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;