6

私は現在、特定の充電器のタイプを判断するための信頼できる方法を作ろうとしています。私の場合は、このようなミュージック ドックです。問題は、残念ながら、このドックがドッキングされたときにドック イベントを送信しないことです。

デバイスがドッキングまたはドッキング解除されたときを判断できることに依存してアプリを作成しているため。したがって、これらのイベントを除外して分離する方法が必要です。

  • デバイスは USB コネクタを介して充電中です (個別の充電器はありません)
  • デバイスがコンピュータに接続されていません
  • 遅い充電ドックを標準の充電器から分離する何らかの方法

私のデバイス (LG optimus 4x HD) は、これらのアクションごとに異なる反応を示していることに気付きました。標準の充電器に接続すると通知メッセージは表示されず、コンピューターに接続するとUSBモードが有効になっていることが通知され、ドックに接続すると充電速度が遅いという警告が表示されます.

これらのアクションを分離し、それらに反応する同じ能力を持つシステムを作成する必要があります。これまでは、デバイスが充電器に接続されているか、接続されていない場合に反応する単純なBroadcastReceiverのみを作成しました。ドキュメントにあるコードを使用して、充電状態を監視することもできました。

この特定の充電器入力を決定する方法はありますか?

4

4 に答える 4

4

デバイスがドッキングまたはドッキング解除されるたびに、 ACTION_DOCK_EVENT アクションがブロードキャストされます。デバイスのドック状態の変化を監視するには、以下のスニペットに示すように、ブロードキャスト レシーバーをアプリケーション マニフェストに登録するだけです。

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

デバイスがドッキングされている場合、次の 4 種類のドックのいずれかにドッキングできます。

  • デスク
  • ローエンド (アナログ) デスク
  • ハイエンド(デジタル)デスク

ドック状態の詳細は、ACTION_DOCK_EVENT アクションのスティッキー ブロードキャストにエクストラとして含まれます。粘着性があるため、BroadcastReceiver を登録する必要はありません。次のスニペットに示すように、ブロードキャスト レシーバーとして null を渡して registerReceiver() を呼び出すだけです。

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;

ドックの状態は次の方法で確認できます

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;

編集 :

アプリがまだブロードキャストを受信して​​いない場合は、次のコードを試して手動ブロードキャストを送信し、コードを確認してください。

adb shell am broadcast -a android.intent.action.POWER_CONNECTED -n com.jm.monitoringbatterydemo/.PowerConnectionReceiver

ブロードキャストと受信機の名前を変更します。

于 2013-11-21T07:57:04.397 に答える
0

を使用して電源を特定することは役に立ちますか?

  int   BATTERY_PLUGGED_AC          Power source is an AC charger.
  int   BATTERY_PLUGGED_USB         Power source is a USB port.
  int   BATTERY_PLUGGED_WIRELESS    Power source is wireless.

BatteryManagerから?

于 2013-11-27T13:10:32.933 に答える