Android电池电量检测
16lz
2021-12-04
电池的信息,电压,温度,充电状态等等,都是由BatteryService来提供的。电池的这些信息是BatteryService通过广播 主动把数据传送给所关心的应用程序。
应用如果想要接收到BatteryService发送出来的电池信息,则需要注册一个Intent为Intent.ACTION_BATTERY_CHANGED的BroadcastReceiver。
代码如下:
IntentFilter mIntentFilter = new IntentFilter();mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);registerReceiver(mIntentReceiver, mIntentFilter);
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString action = intent.getAction();if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {// 电池状态,返回是一个数字// BatteryManager.BATTERY_STATUS_CHARGING 表示是充电状态// BatteryManager.BATTERY_STATUS_DISCHARGING 放电中// BatteryManager.BATTERY_STATUS_NOT_CHARGING 未充电// BatteryManager.BATTERY_STATUS_FULL 电池满int status = intent.getIntExtra("status", 0); // 电池状态// 电池健康情况,返回也是一个数字// BatteryManager.BATTERY_HEALTH_GOOD 良好// BatteryManager.BATTERY_HEALTH_OVERHEAT 过热// BatteryManager.BATTERY_HEALTH_DEAD 没电// BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE 过电压// BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE 未知错误int health = intent.getIntExtra("health", 0); //电池健康情况int scale = intent.getIntExtra("scale", 0); // 电池最大容量int nVoltage = intent.getIntExtra("voltage", 0); // 电池的电压int level = intent.getIntExtra("level", 0); // 电池的电量,数字int temperature = intent.getIntExtra("temperature", 0); // 电池的温度if (nVoltage != 0) {tv_status.setText("电池电量:" + level + "%");Log.i(TAG, "voltage = " + nVoltage + " level = " + level+ " temperature = " + temperature + "...success");} else {Log.i(TAG, "voltage = " + nVoltage + "...failed");}}}};
小结一下
更多相关文章
- Android(安卓)状态栏透明的一些小结
- 基于Android的Linux内核的电源管理
- Android(安卓)Selector
- Android(安卓)之 Notification
- Android(安卓)沉浸式状态栏完美解决方案
- Android(安卓)Activity生命周期管理
- 详解 Android(安卓)的 Activity 组件
- Wifi启动流程分析
- Android中Adapter中edittext,checkbox记住状态解决方案