Skip to content

Most visited

Recently visited

navigation

Determining and Monitoring the Docking State and Type

Устройства под управлением ОС Android можно подключать к нескольким типам док-станций: настольным, которые делятся на цифровые и аналоговые, и автомобильным. В большинстве случаев устройства заряжаются при подключении к док-станции, поэтому состояние подключения к док-станции часто связано с состоянием зарядки.

Насколько состояние подключения к док-станции влияет на частоту обновления, зависит от конкретного приложения. Например, можно увеличить частоту обновлений приложения, показывающего спортивные новости, когда устройство подключено к настольной док-станции, и полностью отключить обновления при подключении к автомобильной. И наоборот, если используется приложение, которое в фоновом режиме загружает данные о дорожной обстановке, то при подключении устройства к автомобильной док-станции следует выполнять обновления максимально часто.

Состояние подключения к док-станции также передается в виде закрепленного намерения Intent, что позволяет запрашивать сведения о наличии подключения к док-станции и ее типе.

Определение текущего состояния подключения к док-станции

Сведения о состоянии подключения к док-станции передаются в качестве дополнительных данных в закрепленном оповещении действия ACTION_DOCK_EVENT. Поскольку это закрепленное намерение, регистрировать BroadcastReceiver не требуется. Достаточно вызвать registerReceiver(), передав null в качестве приемника широковещательных намерений, как показано в коде ниже.

IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

Сведения о текущем состоянии подключения к док-станции можно извлечь из дополнительных данных EXTRA_DOCK_STATE:

int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

Определение типа док-станции

Док-станция, к которой подключено устройство, может быть одного из четырех типов:

Обратите внимание, что последние два типа поддерживаются только на уровне API 11, поэтому, даже если вас не интересует, является ли док-станция цифровой или аналоговой, а интересует только ее тип, рекомендуется выполнять проверку по всем трем типам:

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;

Отслеживание изменений состояния подключения к док-станции и ее типа

При каждом подключении устройства к док-станции или отключении от нее передается действие ACTION_DOCK_EVENT. Чтобы отслеживать состояние подключения к док-станции, достаточно зарегистрировать в манифесте приложения приемник широковещательных намерений, как показано ниже.

<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>

Данные о типе док-станции и о состоянии подключения к ней можно извлечь внутри реализации приемника с помощью методов, описанных в предыдущем шаге.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Следите за новостями от Google Developers в WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)