装着状態とタイプを特定して監視する

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;