لتوفير فترات من وقت الخمول في المركبات، يحافظ وضع Garage على النظام نشطًا بحيث يمكن تنفيذ المهام في JobScheduler المقيدة بالخمول .
ما هو وضع المرآب؟
في الأجهزة المتصلة مثل الهواتف، يعتمد المستخدمون على النظام لضمان استقرار الأجهزة وتحديثها وتحسينها. ولتحقيق هذه الحالة، يوفر نظام Android نافذة زمنية خاملة يمكن للتطبيقات خلالها تنفيذ المهام عندما لا يتفاعل المستخدم مع الجهاز. يعتبر الهاتف خاملاً عندما لا يلمسه المستخدم لمدة طويلة (60 دقيقة أو أكثر) ويتم إيقاف تشغيل الشاشة. على عكس الهاتف، عندما لا يتم استخدام السيارة، يتم إيقاف تشغيلها، مما يعني أن السيارة ليس لديها نافذة زمنية خاملة . يضمن وضع المرآب وقت الخمول في السيارة.
عندما يقوم المستخدم بإيقاف تشغيل السيارة، يدخل النظام في وضع المرآب. عندما تكون السيارة في وضع Garage، يتم تشغيل النظام، ويتم إيقاف تشغيل الشاشة، ويتم تنفيذ المهام الخاملة في قائمة انتظار JobScheduler. لتنفيذ وضع Garage، راجع إرشادات تنفيذ الجهاز أدناه.
إرشادات تنفيذ الجهاز
لتنشيط وضع المرآب، عند إيقاف تشغيل السيارة، يجب أن ترسل مركبة HAL (VHAL) AP_POWER_STATE_REQ
مع الحالة SHUTDOWN_PREPARE
مع تعيين المعلمة على SHUTDOWN_ONLY
أو CAN_SLEEP
.
لكي تكون الحالة SHUTDOWN_PREPARE
فعالة، يجب أن يحدد VHAL المعلمتين (الحالة والمعلمة الإضافية) للأمر AP_POWER_STATE_REQ
. يؤدي ذلك إلى تمكين الجهاز من الدخول إلى وضع Garage، الذي يكتشف المهام المجدولة في JobScheduler ويمنع النظام من الاستمرار في التعليق أو إيقاف التشغيل حتى تكتمل المهام.
كيف تتصل تطبيقات الأجهزة بإطار عمل Android؟
بالنسبة لوضع Garage، يطلب إطار العمل من VHAL تمديد وقت إيقاف التشغيل حتى يتم تجاوز المدة المطلوبة أو يتم تنفيذ جميع المهام، وفي ذلك الوقت سيتم إيقاف تشغيل النظام. في ظل ظروف محددة محددة في CDD، يمكن لتطبيقات الأجهزة إيقاف تشغيل النظام عاجلاً. (للحصول على تفاصيل حول متطلبات توافق Android، راجع مستند تعريف توافق Android (CDD) .) إذا كان يجب على VHAL إيقاف تشغيل النظام قبل اكتمال وضع Garage، فيمكن لـ VHAL إصدار SHUTDOWN_PREPARE
مع تعيين المعلمة على SHUTDOWN_IMMEDIATELY
أو SLEEP_IMMEDIATELY
. يمكن لتطبيقات الأجهزة استخدام هذا في ظل ظروف محددة فقط ، عادةً عندما تكون الموارد اللازمة للحفاظ على تشغيل النظام غير متوفرة. على سبيل المثال، عندما تكون سعة البطارية غير كافية.
كيف يعمل مطورو التطبيقات مع Garage Mode؟
لا تتفاعل التطبيقات والخدمات بشكل مباشر مع وضع Garage. وبدلاً من ذلك، تقوم التطبيقات بجدولة المهام في JobScheduler . يتم تنفيذ تلك المهام المقيدة بالخمول أثناء وضع المرآب.
يوضح التعليمة البرمجية التالية كيفية جدولة مهمة ليتم تشغيلها أثناء وضع Garage:
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());
تصحيح وضع المرآب
لتصحيح وضع المرآب:- لتمكين فئات التسجيل ذات الصلة بوضع المرآب:
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