Skip to content

Most visited

Recently visited

navigation

装着状態とホルダータイプを特定および監視する

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;

現在のホルダータイプを特定する

端末を装着する場合、次の 4 つのホルダータイプのいずれかで装着できます。

最後の 2 つのオプションは Android の API レベル 11 のみに導入されたため、ホルダーが具体的にデジタルかアナログかではなくホルダーのタイプのみがわかればいい場合は、3 つすべてを確認することをお勧めします。

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!

WeChat で Google Developers をフォローする

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)