我可以使用BatteryManager找出总电池百分比。
我正在尝试实现我打开的每个应用程序消耗多少电池电量的逻辑,直到我关闭应用程序。
是否可以使用BatteryManger或需要启动任何其他服务来执行此操作?
我可以使用BatteryManager找出总电池百分比。
我正在尝试实现我打开的每个应用程序消耗多少电池电量的逻辑,直到我关闭应用程序。
是否可以使用BatteryManger或需要启动任何其他服务来执行此操作?
这是因为在 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
。
您可以使用广播接收器来获取有关电池数据的信息,我不知道您多久获取一次该数据,但我认为至少它可以作为一个起点。
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));
}
}