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;