以下のサンプル ページのコードをアプリで使用して、デバイスが電源アダプターに接続/切断されたときを監視しています。
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
だから私は私のマニフェストに持っています:
<receiver android:name=".StatusChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
そして、私のクラスは次のようになります。
public class StatusChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean isActive = prefs.getBoolean("isActive", false);
if (isActive){
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
// Do somthing with isCharging here
}
}
ただし、電源が接続されているか切断されているかに関係なく、isCharging は常に false です。イベントを発生させるためにUSBケーブルを接続(切断)し続ける必要があるため、明らかにこれをデバッグするのに問題があります。
電源が接続されるとイベントが発生し、コードが実行される前にステータスが更新されないと思いますが、それを解決する最善の方法がわかりません。何か案は?