在 Android 中获取电池电量和状态 [英] Get battery level and state in Android
问题描述
如何获取电池电量和状态(插入、放电、充电等)?我研究了开发人员文档,发现了一个 BatteryManager 类.但它不包含任何方法,只包含常量.我什至如何使用它?
How can I get battery level and state (plugged in, discharging, charging, etc)? I researched the developer docs and I found a BatteryManager class. But it doesn't contain any methods, just constants. How do I even use it?
推荐答案
这里是一个代码示例,解释了如何获取电池信息.
Here is a code sample that explains how to get battery information.
总而言之,ACTION_BATTERY_CHANGED
Intent 的广播接收器是动态设置的,因为它无法通过 manifest 中声明的组件接收,只能通过 Context 显式注册.registerReceiver()
.
To sum it up, a broadcast receiver for the ACTION_BATTERY_CHANGED
intent is set up dynamically, because it can not be received through components declared in manifests, only by explicitly registering for it with Context.registerReceiver()
.
public class Main extends Activity {
private TextView batteryTxt;
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context ctxt, Intent intent) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level * 100 / (float)scale;
batteryTxt.setText(String.valueOf(batteryPct) + "%");
}
};
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.main);
batteryTxt = (TextView) this.findViewById(R.id.batteryTxt);
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
}
这篇关于在 Android 中获取电池电量和状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!