SDK中的Android电池

Jer*_*rds 27 android power-management

有没有办法从Android SDK获取电池信息?如电池续航时间等等?我无法通过文档找到它.

plo*_*man 67

这是一个快速示例,它将为您提供所用电池量,电池电压和温度.

将以下代码粘贴到活动中:

@Override
public void onCreate() {
    BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
        int scale = -1;
        int level = -1;
        int voltage = -1;
        int temp = -1;
        @Override
        public void onReceive(Context context, Intent intent) {
            level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
            scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
            temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
            voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
            Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage);
        }
    };
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryReceiver, filter);
}
Run Code Online (Sandbox Code Playgroud)

在我的手机上,每10秒输出一次:

ERROR/BatteryManager(795): level is 40/100 temp is 320, voltage is 3848

所以这意味着电池充满了40%,温度为32.0摄氏度,电压为3.848伏.

  • 这是一个很好的例子,但为什么你把它记录在"错误"级别? (4认同)
  • @GetUsername除了个人偏好之外,没有特别的错误级别日志记录.对于我在发布我的应用程序之前删除的这样的日志记录,我喜欢在错误级别登录,以便很容易看到登录logcat输出的海洋. (2认同)

Jar*_*ard 23

您可以注册一个Intent接收器来接收ACTION_BATTERY_CHANGED的广播:http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_CHANGED.文档说广播是粘性的,所以即使电池状态发生变化,你也可以抓住它.

  • 你能为此发布一些示例代码吗?我不确定如何接收广播意图. (2认同)