4

BatteryManager 类没有当前的指标:http: //developer.android.com/reference/android/os/BatteryManager.html

然后我发现了这篇文章: Getting the battery current values for the Android Phone 看来作者也发现不可能从 Linux 条目中获得这样的值。

我还将名为 CurrentWidget 的小部件下载到我的 Nexus 7 中。对于当前值,它显示“无数据”。

所以可能需要一个电流传感器来获取当前值,而一些安卓系统只是没有这样的传感器。那么android系统如何知道当前的电池电量呢?也许它只会使用电池的电压来推断(放电过程中电压会降低)?但是这样会非常粗粒度。有人说在 Android 中有一些“技巧”用于在没有当前值的情况下估计电池电量(可能基于电压?)。有没有参考?

PS:由于某种原因,我知道当前值可以记录在 iphone 3GS 上

4

1 回答 1

1

试试这个代码,可能对你有帮助:

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
      @Override
      public void onReceive(Context arg0, Intent intent) {
        // TODO Auto-generated method stub
          //this will give you battery current status
        int level = intent.getIntExtra("level", 0);

        contentTxt.setText(String.valueOf(level) + "%");

        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
        textView2.setText("status:"+status);
        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                            status == BatteryManager.BATTERY_STATUS_FULL;
        textView3.setText("is Charging:"+isCharging);
        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
        textView4.setText("is Charge plug:"+chargePlug);
        boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;

        boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
        textView5.setText("USB Charging:"+usbCharge+" AC charging:"+acCharge);

      }
    };

在主类中使用以下方法注册:

 this.registerReceiver(this.mBatInfoReceiver, 
          new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
于 2013-05-31T04:25:08.083 回答