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;