如何在android中实现应用程序的电池使用量计算?

时间:2013-03-20 07:51:06

标签: android

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

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

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

2 个答案:

答案 0 :(得分:2)

这是因为Android中对电源管理API的调用是私有的,不会向开发人员公开。这些API仅可通过 Reflection 获得。

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

StackOverflow用户Chris Thompson共享了一个包含工具和应用程序的存储库,用于处理您想要的内容。你可以找到它here

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

此外,您似乎可以使用adb shell dumpsys batteryinfo获取每个应用使用的高级电池统计信息和CPU负载。

当您在strace dumpsys batteryinfo时,一个简单的adb shell可能会提示您dumpsys如何检索这些信息。

答案 1 :(得分:1)

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

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));
  }
}