כדי לציין פרקי זמן של חוסר פעילות בכלי רכב, מצב החנייה משאיר את המערכת
ערות, כדי שעבודות
JobScheduler
מוגבל עם
ניתן לבצע חוסר פעילות.
מה זה מצב חנייה?
במכשירים מחוברים כמו טלפונים, המשתמשים מסתמכים על המערכת כדי לוודא שהמכשירים יציבים, עדכניים ומשופרים. כדי להגיע למצב הזה, פלטפורמת Android מספקת לא פעיל שעה חלון שבמהלכו אפליקציות יכולות לבצע משימות כשהמשתמש לא מבצע אותן לקיים אינטראקציה עם המכשיר. טלפון נחשב לא פעיל כשהמשתמש לא נוגע למשך זמן ארוך (60 דקות או יותר) והמסך כבוי. בניגוד לטלפון, כשמכונית לא בשימוש היא כבויה, כלומר הרכב ל- אין זמן לא פעיל חלון. מצב החניה מבטיח את משך הזמן ללא פעילות ברכב.
כשמשתמש מכבה את הרכב, המערכת עוברת למצב 'מוסך'. אומנם
הרכב במצב חנייה, המערכת מופעלת, המסך כבוי
משימות לא פעילות בתור JobScheduler
מתבצעות. כדי להטמיע את 'מצב החניה':
הנחיות להטמעת מכשירים.
הנחיות להטמעת מכשירים
כדי להפעיל את מצב החניה (VHAL) כשמכבים את הרכב,
חייב לשלוח
AP_POWER_STATE_REQ
עם המדינה SHUTDOWN_PREPARE
בפרמטר שמוגדר ל-SHUTDOWN_ONLY
או CAN_SLEEP
.
כדי שהמצב SHUTDOWN_PREPARE
יפעל, ה-VHAL חייב לציין
(מצב והפרמטר הנוסף) לפקודה AP_POWER_STATE_REQ
. כך המכשיר יכול להיכנס למצב חנייה,
שמזהה משימות מתוזמנות
JobScheduler
ומונעת מהמערכת להמשיך בהשעיה או בכיבוי עד שהמשימות
הושלמו.
איך הטמעות מכשירים מתחברים ל-framework של Android?
במצב חנייה, ה-framework מבקש ל-VHAL להאריך את זמן הכיבוי עד לחריגה ממשך הזמן הדרוש או לביצוע כל המשימות, המועד שבו המערכת תכבה. בנסיבות ספציפיות שהוגדרו ב-CDD, הטמעות של מכשירים יכולות לכבות את המערכת מוקדם יותר. לפרטים בדרישות התאימות של Android, עיינו במאמר על מסמך הגדרת תאימות (CDD).
אם ה-VHAL חייב לכבות את המערכת לפני שמצב החניה מסתיים, VHAL יכול
SHUTDOWN_PREPARE
בפרמטר שמוגדר כ-
SHUTDOWN_IMMEDIATELY
או SLEEP_IMMEDIATELY
. Device (מכשיר)
יכולים להשתמש בו בנסיבות ספציפיות בלבד, בדרך כלל
כאשר המשאבים הנדרשים כדי להמשיך את הפעילות של המערכת אינם זמינים. עבור
לדוגמה, כשקיבולת הסוללה לא מספיקה.
איור 1. תהליך עבודה במצב החניה
איך מפתחי אפליקציות עובדים עם מצב החניה?
לאפליקציות ולשירותים אין אינטראקציה ישירה עם 'מצב חנייה'. במקום זאת,
אפליקציות מתזמנות עבודות ב:
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());
מצב מוסך ניפוי באגים
כדי לנפות באגים במצב חנייה:- כדי להפעיל קטגוריות רישום ביומן שרלוונטיות למצב החניה:
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 כדי לציין שמצב החניה מתחיל:
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 מציין שמצב החניה הסתיים (בוטל או
הושלם):
או[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