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;
現在のホルダータイプを特定する
デバイスをホルダーに装着している場合は、次の 4 種類のホルダーのいずれかでホルダーに装着できます。
- 車
- デスク
- ローエンド(アナログ)デスク
- ハイエンド(デジタル)デスク
後半の 2 つのオプションは Android API レベル 11 でのみ導入されているため、デジタルまたはアナログのホルダーではなく、ホルダーの種類にのみ関心がある場合は、3 つのデスクタイプすべてを確認することをおすすめします。
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;