在安卓系统中,是否有一种方法可以获取电池电流?

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系统如何知道当前电池电量?也许它只是使用电池电压来推断(voltage在放电过程中会降低)?但是这可能非常粗略。有人说在Android中有一些“技巧”可以估算电池电量而不需要电流值(可能基于电压?)。是否有任何参考资料?
PS:由于某种原因,我知道iPhone 3GS可以记录电流值。

小部件说它硬编码了数据路径,因此它不能在每个手机上运行。 - StoneBird
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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接