4

我可以使用BatteryManager找出总电池百分比。

我正在尝试实现我打开的每个应用程序消耗多少电池电量的逻辑,直到我关闭应用程序。

是否可以使用BatteryManger或需要启动任何其他服务来执行此操作?

4

2 回答 2

3

这是因为在 Android 中对电源管理 API 的调用是私有的,不会暴露给开发人员。这些 API 只能通过Reflection获得。

Android 内部使用的有关从电源管理获取统计信息的主要包保存在com.android.internal.os.*(例如com.android.internal.os.BatteryStatsImpl)中。

StackOverflow 用户 Chris Thompson 共享了一个存储库,其中包含用于处理所需内容的工具和应用程序。你可以在这里找到它。

你可以从他所做的事情中启发自己,并在此基础上建立一些东西。

此外,您似乎可以使用adb shell dumpsys batteryinfo.

一个简单strace dumpsys batteryinfo的过程adb shell可能会提示您如何检索这些信息dumpsys

于 2013-03-20T08:02:41.280 回答
0

您可以使用广播接收器来获取有关电池数据的信息,我不知道您多久获取一次该数据,但我认为至少它可以作为一个起点。

public class Main extends Activity {

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
   @Override
   public void onReceive(Context arg0, Intent intent) {
      int level = intent.getIntExtra("level", 0);
      //Do stuff with level
   }
};

@Override
public void onCreate(Bundle data) {
   super.onCreate(data);
   setContentView(R.layout.main);
   this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
  }
}
于 2013-03-20T08:37:41.043 回答