ระบุและตรวจสอบสถานะและประเภทแท่นชาร์จ
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
อุปกรณ์ที่ใช้ 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;
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Determine and monitor the docking state and type\n\nAndroid-powered devices can be docked into different kinds of docks. These\ninclude car docks, home docks, and digital or analog docks. The dock state is\ntypically closely linked to the charging state, as many docks provide power to\ndocked devices.\n\nYour app affects the phone's update rate in the dock state. You can increase\nthe update frequency of a sports news app when it's in the desktop dock, or\ndisable your updates completely if the device is car docked. Conversely, you can\nmaximize your updates while car docked if your background service is updating\ntraffic conditions.\n\nThe dock state is also broadcast as a sticky\n[Intent](/reference/android/content/Intent),\nletting you query whether the device is docked and in which kind of dock if\nso.\n\nDetermine the current docking state\n-----------------------------------\n\nThe dock state details are included as an extra in a\n[sticky broadcast](/topic/security/risks/sticky-broadcast) of the\n[ACTION_DOCK_EVENT](/reference/android/content/Intent#ACTION_DOCK_EVENT)\naction. Because it's sticky, you can call\n[registerReceiver()](/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter)),\npassing in `null` as the broadcast receiver. The following snippet\nshows how to complete this process: \n\n### Kotlin\n\n```kotlin\nval dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter -\u003e\n context.registerReceiver(null, ifilter)\n}\n```\n\n### Java\n\n```java\nIntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);\nIntent dockStatus = context.registerReceiver(null, ifilter);\n```\n\nYou can extract the current docking status from the\n`EXTRA_DOCK_STATE` extra:\n\n\n### Kotlin\n\n```kotlin\nval dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1\nval isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED\n```\n\n### Java\n\n```java\nint dockState -1;\nif (dockStatus != null) {\n dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);\n}\nboolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;\n```\n\nDetermine the current dock type\n-------------------------------\n\nIf a device is docked, it can be docked in any of the following four\ndifferent dock types:\n\n- Car\n- Desk\n- Low-End (Analog) desk\n- High-End (Digital) desk\n\nThe latter two options are only introduced in Android API level 11, so it's\ngood practice to check for all three desk types when you are only interested in\nthe type of dock rather than it being digital or analog specifically: \n\n### Kotlin\n\n```kotlin\nval isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR\nval isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK\n || dockState == EXTRA_DOCK_STATE_LE_DESK\n || dockState == EXTRA_DOCK_STATE_HE_DESK\n```\n\n### Java\n\n```java\nboolean isCar = dockState == EXTRA_DOCK_STATE_CAR;\nboolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||\n dockState == EXTRA_DOCK_STATE_LE_DESK ||\n dockState == EXTRA_DOCK_STATE_HE_DESK;\n```"]]