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

อุปกรณ์ที่ใช้ 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;