โหมดโรงรถจะคงระบบไว้ เพื่อเว้นระยะเวลาที่ไม่มีความเคลื่อนไหวในยานพาหนะ
เพื่อให้งานใน
JobScheduler
ถูกจำกัดด้วย
สามารถดำเนินการไม่มีการใช้งาน
โหมดโรงรถคืออะไร
ในอุปกรณ์ที่เชื่อมต่อ เช่น โทรศัพท์ ผู้ใช้จะต้องอาศัยระบบในการตรวจสอบอุปกรณ์ มีความเสถียร เป็นปัจจุบัน และได้รับการปรับให้เหมาะสม และเพื่อให้บรรลุสถานะดังกล่าว แพลตฟอร์ม Android ให้ ไม่มีการใช้งาน เวลา ระหว่างที่แอปสามารถทำงานเมื่อผู้ใช้ไม่ได้ โต้ตอบกับอุปกรณ์ โทรศัพท์ถือว่าไม่มีการใช้งานเมื่อผู้ใช้ไม่ได้สัมผัส เป็นเวลานานขึ้น (60 นาทีขึ้นไป) และหน้าจอจะปิดลง ต่างจากโทรศัพท์ตรงที่เมื่อไม่มีการใช้งานรถ เครื่องจะปิดซึ่งหมายความว่ารถยนต์ ไม่มี เวลาที่ไม่มีการใช้งาน โหมดโรงรถจะช่วยรับประกันเวลาที่ไม่มีการใช้งานในรถ
เมื่อผู้ใช้ดับรถไว้ ระบบจะเข้าสู่โหมดโรงรถ ขณะที่
รถอยู่ในโหมดโรงรถ ระบบเปิดอยู่ จอแสดงผลปิด และ
เรียกใช้งานที่ไม่มีการใช้งานในคิว JobScheduler
แล้ว หากต้องการใช้โหมดโรงรถ โปรดดู
หลักเกณฑ์การใช้งานอุปกรณ์
หลักเกณฑ์การใช้งานอุปกรณ์
หากต้องการเปิดใช้งานโหมดโรงรถ เมื่อดับรถ ระบบจะแสดง HAL (VHAL) ของยานพาหนะ
ต้องส่ง
AP_POWER_STATE_REQ
โดยมีรัฐ SHUTDOWN_PREPARE
ที่ตั้งค่าพารามิเตอร์เป็น SHUTDOWN_ONLY
หรือ CAN_SLEEP
เพื่อให้สถานะ SHUTDOWN_PREPARE
มีผลบังคับใช้ VHAL ต้องระบุ
(สถานะและพารามิเตอร์เพิ่มเติม) สำหรับคำสั่ง AP_POWER_STATE_REQ
วิธีนี้ช่วยให้อุปกรณ์เข้าสู่โหมดโรงรถ
ซึ่งจะตรวจหางานที่กำหนดเวลาไว้ใน
JobScheduler
และป้องกันไม่ให้ระบบดำเนินการระงับหรือปิดระบบจนกว่างาน
เสร็จสมบูรณ์
การติดตั้งใช้งานอุปกรณ์เชื่อมต่อกับเฟรมเวิร์กของ Android อย่างไร
สำหรับโหมดโรงรถ เฟรมเวิร์กจะขอให้ VHAL ขยายเวลาปิดเครื่อง จนกว่าจะเกินระยะเวลาที่กำหนด หรือดำเนินการกับงานทั้งหมดแล้ว เมื่อระบบปิดการทำงาน ภายใต้สถานการณ์เฉพาะที่กำหนดไว้ ใน CDD นั้น การติดตั้งใช้งานอุปกรณ์อาจทำให้ระบบปิดเร็วขึ้น โปรดดูรายละเอียด เกี่ยวกับข้อกำหนดด้านความเข้ากันได้ของ Android โปรดดู เอกสารคำจำกัดความความเข้ากันได้ (CDD)
หาก VHAL ต้องปิดระบบก่อนที่โหมด Garage จะเสร็จสิ้น VHAL จะเกิดปัญหา
SHUTDOWN_PREPARE
ที่ตั้งพารามิเตอร์เป็น
SHUTDOWN_IMMEDIATELY
หรือSLEEP_IMMEDIATELY
อุปกรณ์
การนำไปใช้งานจะใช้ในกรณีที่เฉพาะเจาะจงเท่านั้น ซึ่งโดยปกติแล้ว
เมื่อทรัพยากรที่จำเป็นต่อการทำให้ระบบทำงานไม่พร้อมใช้งาน สำหรับ
เช่น เมื่อความจุแบตเตอรี่ไม่เพียงพอ
รูปที่ 1 ขั้นตอนของโหมดโรงรถ
นักพัฒนาแอปทำงานกับโหมด Garage อย่างไร
แอปและบริการจะไม่โต้ตอบกับโหมดโรงรถโดยตรง แต่
แอป วางกำหนดเวลางานใน
JobScheduler
งานเหล่านี้ถูกจำกัดโดย
ไม่มีการเคลื่อนไหว จะทำงานในโหมดโรงรถ
โค้ดต่อไปนี้แสดงวิธีกำหนดเวลาให้งานทำงานระหว่างโหมดโรงรถ
public class MyGarageModeJob extends JobService { ... } Context context = ...; int jobId = ...; ComponentName myGarageModeJobName = new componentName(context, MyGarageModeJob.class); JobInfo.Builder infoBuilder = new JobInfo.Builder(jobId, myGarageModeJobName) .setRequiresDeviceIdle(true); // Example of an optional constraint: infoBuilder.setRequiredNetworkType(NetworkType.NETWORK_TYPE_UNMETERED); JobScheduler jobScheduler = (JobScheduler) context .getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(infoBuilder.build());
โหมด Debug Garage
วิธีแก้ไขข้อบกพร่องของโหมด Garage- วิธีเปิดใช้หมวดหมู่การบันทึกที่เกี่ยวข้องกับโหมดโรงรถ
adb shell stop adb shell setprop log.tag.GarageMode VERBOSE adb shell setprop log.tag.Finsky VERBOSE adb shell setprop log.tag.CAR.POWER VERBOSE adb shell setprop log.tag.JobScheduler.Connectivity VERBOSE adb shell start
- วิธีตรวจสอบผลลัพธ์ Logcat เพื่อระบุว่าโหมด Garage กำลังเริ่มต้น
GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE GarageMode: [GarageMode]: Entering GarageMode GarageMode: [Controller]: Sending broadcast with action: com.android.server.jobscheduler.GARAGE_MODE_ON
- หากต้องการหาเอาต์พุต Logcat เพื่อระบุว่าโหมด Garage สิ้นสุดแล้ว (ยกเลิกหรือ
เสร็จสมบูรณ์):
หรือ[GarageMode]: GarageMode was canceled
[GarageMode]: GarageMode completed normally
โหมดโรงรถขึ้นอยู่กับสถานะกำลังไฟฟ้าของรถตามที่อธิบายไว้ ด้านบน
- ตรวจสอบเอาต์พุต Logcat เพื่อระบุว่ามีการป้อนสถานะพลังงานที่ถูกต้อง ดังนี้
CAR.POWER: starting shutdown prepare without Garage Mode GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE GarageMode: [GarageMode]: Entering GarageMode CAR.POWER: send shutdown prepare CAR.POWER: setPowerState=SHUTDOWN_PREPARE(7) param=0