私の意図は、AndroidデバイスのUSB /電源ケーブルの現在のステータスを[設定]に保存することです:接続/切断。開発者サイトから、そのステータスを取得するための2つのインテントがあることがわかります:ACTION_POWER_CONNECTED/DISCONNECTED。そのため、Developersで公開されているものと同じコードを使用しました。
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
セクション「充電状態の変化の監視」を参照してください。
マニフェスト
<receiver android:name=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
Javaコード
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
Toast.makeText(context, "pvr = " + usbCharge + ", " + acCharge + "," + isCharging, Toast.LENGTH_SHORT).show();
}
}
USBケーブルをIN/OUTに差し込むと、ブロードキャストは常に正しく送信され、PowerConnectionReceiverに取り込まれますが、常に同じ結果になります(=ケーブルが差し込まれます)。
Galaxy Nexus 4.1.1 / 4.2.1でテストしました-Toastで常に2xFALSEが発生します(chargePlug = FALSE、usbCharge = FALSE)。
intent.getIntExtra(BatteryManager.EXTRA_PLUGGED、-1)が常にデフォルト値「-1」を返すのはなぜですか?
ありがとうございました。
ps。レシーバーをJavaに登録すると、すべて正常に動作します
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
...サービス中またはアクティビティ中。しかし、Android Developersサイトによると、正しい値を返すために上記のコードを作成することは前提条件ではありません。