Android 裝置可以插入不同類型的座架。包括車用充電座、家用充電座,以及數位或類比充電座。座架狀態通常與充電狀態密切相關,因為許多座架可為座架裝置提供電力。
您的應用程式會影響手機在座架狀態的更新率。當體育新聞應用程式放在桌面座架上時,您可以提高其更新頻率;如果裝置放在車上座架,則可以完全停用更新。反之,當背景服務正在更新路況時,您可以在將車輛插入座架時最大化更新。
裝置架狀態也會以黏滯 Intent
形式廣播,讓您查詢裝置是否已裝入裝置架,以及裝置架的類型。
判斷目前的座架狀態
系統會將座架狀態詳細資料納入 ACTION_DOCK_EVENT
動作的固定式廣播訊息中。由於它是黏性廣播,因此您可以呼叫 registerReceiver()
,並將 null
傳入做為廣播接收器。下列程式碼片段說明如何完成這項程序:
val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter ->
context.registerReceiver(null, ifilter)
}
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);
您可以從 EXTRA_DOCK_STATE
額外資料擷取目前的固定裝置狀態:
val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1
val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED
int dockState -1;
if (dockStatus != null) {
dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
}
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
判斷目前的座架類型
裝置固定在座架上時,可以插入以下四種不同的座架類型:
- 車輛
- 書桌
- 低階 (類比) 桌面
- 高階 (數位) 桌面
第二種選項僅在 Android API 級別 11 中推出,因此如果只想查看這三種桌面類型,建議您檢查所有三種桌面類型,而不是具體來說是數位或類比類型:
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
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;