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 = 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;