Устройства на базе 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;