我可以使用 BatteryManager 找出总电池百分比。
我正在尝试实现我正在打开的每个应用程序消耗了多少电量的逻辑,直到我关闭应用程序。
是否可以使用 BatteryManger 执行此操作或需要启动任何其他服务?
答案 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));
}
}