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 loại đế sạc này bao gồm đế sạc ô tô, đế sạc tại nhà và đế sạc kỹ thuật số hoặc tương tự. Trạng thái của đế sạc 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ị đượ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 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 đó ở trong đế cắm 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 cắm vào ô tô. Ngược lại, bạn có thể tối đa hoá các bản cập nhật khi ô tô được cắm nếu dịch vụ trong nề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 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ó thì thiết bị được gắn vào loại đế nào.

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

Thông tin chi tiết về trạng thái đế được đưa vào dưới dạng thông tin bổ sung trong một thông báo truyền tin cố định của thao tác ACTION_DOCK_EVENT. Vì nó là cố định, nên bạn có thể gọi registerReceiver(), truyền vào null làm trình thu phát sóng. Đ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 gắn hiện tại của đế sạc từ dữ liệu 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

Khi được gắn vào đế, thiết bị có thể được gắn vào đế sạc ở bất kỳ loại đế nào trong số 4 loại đế sau đây:

  • Ô 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, 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 dạng kỹ thuật số hoặc đồ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;