ระบุและตรวจสอบสถานะและประเภทแท่นชาร์จ

อุปกรณ์ที่ทำงานด้วยระบบ 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;