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;