【问题标题】:Monitor Battery level on android phone在安卓手机上监控电池电量
【发布时间】:2013-02-04 17:12:24
【问题描述】:

如何以编程方式监控我的 Android 设备上的电池电量?我已经阅读了 stackoverflow 上发布的示例和 BatteryManager 文档,我们需要在其中为 ACTION_BATTERY_CHANGED 注册接收器。我的问题是我需要持续监控电池电量。当我使用ACTION_BATTERY_CHANGED 意图时,更新保持在一个恒定值,直到我退出并重新启动我的应用程序。有没有办法在我的应用运行期间监控电池电量?

【问题讨论】:

  • 你用过EXTRA_LEVEL吗?

标签: android performance intentfilter batterymanager


【解决方案1】:

尝试使用下面的代码,如果你运行它,你会得到不同的电池信息。您还可以获得更多信息,但因此您应该在 android api 中为电池拍摄正确的命令。

    public void getActualData(){

    IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    Intent batteryStatus = this.registerReceiver(null, ifilter);

    //are we charging / charged?
    int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
    boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;

    if(isCharging == true){
        tvCharged.setText("CHARGING");
    }else{
        tvCharged.setText("NOT CHARGING");
    }

    //how are we charging
    int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
    boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
    boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;

    if(usbCharge == true){
        tvHowCharging.setText("USB");
    }else{
        tvHowCharging.setText("ELECTRICAL OUTLET");
    }

    //get battery level and print it out
    int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    tvLevelOutput.setText(level + " / 100");
    pbLevel.setProgress(level);
    pbLevel.invalidate();

    //get battery temperatur
    int temp = batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
    tvTempOutput.setText(temp + "Grad");
    pbTemp.incrementProgressBy(temp);
    pbTemp.invalidate();

    //get battery voltage
    int voltage = batteryStatus.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
    tvVoltageOutput.setText(voltage + " V");
    pbVoltage.incrementProgressBy(voltage);
    pbVoltage.invalidate();
}

【讨论】:

  • 它解决了您的问题吗?然后别忘了标记为已解决
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
相关资源
最近更新 更多