อุปกรณ์ที่ทำงานด้วยระบบ Android สามารถเชื่อมต่อกับแท่นชาร์จได้หลายประเภท ซึ่งรวมถึงแท่นชาร์จในรถ แท่นชาร์จในบ้าน และแท่นชาร์จแบบดิจิทัลหรือแอนะล็อก โดยทั่วไปสถานะของแท่นชาร์จจะเชื่อมโยงกับสถานะการชาร์จอย่างใกล้ชิด เนื่องจากแท่นชาร์จจำนวนมากจะจ่ายไฟให้กับอุปกรณ์ที่ชาร์จ
แอปของคุณส่งผลต่ออัตราการอัปเดตของโทรศัพท์ในสถานะแท่นชาร์จ คุณเพิ่มความถี่ในการอัปเดตแอปข่าวกีฬาได้เมื่อวางอยู่บนแท่นชาร์จบนเดสก์ท็อป หรือปิดใช้การอัปเดตทั้งหมดหากวางอุปกรณ์บนแท่นชาร์จในรถยนต์ ในทางกลับกัน คุณสามารถอัปเดตได้สูงสุดขณะที่รถชาร์จอยู่หากบริการที่ทำงานอยู่เบื้องหลังอัปเดตสภาพการจราจร
ระบบจะออกอากาศสถานะแท่นชาร์จเป็นIntent
แบบติดหนึบด้วย ซึ่งจะช่วยให้คุณสอบถามได้ว่าอุปกรณ์อยู่ในแท่นชาร์จหรือไม่ และอยู่ในแท่นชาร์จประเภทใดหากเป็นเช่นนั้น
ระบุสถานะการชาร์จปัจจุบัน
รายละเอียดสถานะแท่นชาร์จจะรวมอยู่ในการออกอากาศแบบติดหนึบของการดำเนินการ ACTION_DOCK_EVENT
เนื่องจากความสามารถในการดึงดูด คุณจึงเรียกใช้ registerReceiver()
ซึ่งส่งผ่าน null
เป็น Broadcast Receiver ได้ ข้อมูลโค้ดต่อไปนี้จะแสดงวิธีทำขั้นตอนนี้ให้เสร็จสมบูรณ์
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);
คุณดึงข้อมูลสถานะการต่อเชื่อมปัจจุบันได้จากส่วน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;
ระบุประเภทแท่นชาร์จปัจจุบัน
หากอุปกรณ์วางอยู่บนแท่นชาร์จ คุณสามารถวางอุปกรณ์ไว้บนแท่นชาร์จที่แตกต่างกัน 4 ประเภทดังต่อไปนี้
- รถยนต์
- โต๊ะทำงาน
- เดสก์โลว์เอนด์ (แอนะล็อก)
- โต๊ะไฮเอนด์ (ดิจิทัล)
ตัวเลือก 2 รายการหลังมีให้บริการใน Android API ระดับ 11 เท่านั้น ดังนั้นคุณจึงควรตรวจสอบเดสก์ทั้ง 3 ประเภทเมื่อสนใจเฉพาะประเภทของแท่นชาร์จ ไม่ได้สนใจว่าจะเป็นแบบดิจิทัลหรืออนาล็อกโดยเฉพาะ
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;