אפשר לחבר מכשירים מבוססי Android לסוגים שונים של אביזרי עגינה. הן כוללות תחנות עגינה לרכב, תחנות עגינה לבית ותחנות עגינה דיגיטליות או אנלוגיות. בדרך כלל, מצב העגינה קשור הדוק למצב הטעינה, מכיוון שתחנות עגינה רבות מספקות חשמל למכשירים שנמצאים בעגינה.
האפליקציה משפיעה על קצב העדכון של הטלפון במצב 'אביזר'. אתם יכולים להגביר את תדירות העדכונים של אפליקציית חדשות ספורט כשהיא במטען השולחני, או להשבית את העדכונים לגמרי אם המכשיר במטען ברכב. לעומת זאת, אם שירות הרקע מעדכן את תנאי התנועה, תוכלו למקסם את העדכונים בזמן שהרכב מחובר.
מצב העגינה גם מופיע כהודעה קבועה Intent
, שמאפשרת לבדוק אם המכשיר מחובר לעגינה ואם כן, באיזה סוג עגינה.
קביעת מצב העגינה הנוכחי
הפרטים של מצב העגינה כלולים כתוספת בשידור במיקום קבוע של פעולת ACTION_DOCK_EVENT
. מכיוון שהוא במיקום קבוע, אפשר להפעיל את registerReceiver()
ולהעביר אותו ב-null
כמקלט השידור. קטע הקוד הבא מראה איך להשלים את התהליך:
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;
קביעת סוג העגינה הנוכחי
אם מכשיר מחובר למטען, אפשר לחבר אותו לאחד מארבעת סוגי המטענים הבאים:
- רכב
- שולחן כתיבה
- שולחן עבודה ברמה נמוכה (אנלוגי)
- שולחן עבודה דיגיטלי (דיגיטלי) יוקרתי
שתי האפשרויות האחרונות מוצגות רק ב-Android API ברמה 11, כך שמומלץ לבדוק את כל שלושת הסוגים של שולחנות העבודה הווירטואליים אם אתם מתעניינים רק בסוג האביזר העגינה ולא בפורמט דיגיטלי או אנלוגי ספציפי:
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;