一个测试电池状态的actiivity

        如何在一个页面中完整的显示当前电池的状态呢,诸如电压、百分比、电池充电状态等。以下的一个简单程序可达到这个目的。

import android.os.BatteryManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.TextView;

        在页面中将会显示8个状态,所以需要在页面定义如下textview

	private TextView mStatus;	//电池状态
	private TextView mPower;	//充电源
	private TextView mLevel;	//百分比
	private TextView mScale;	//最大量度
	private TextView mHealth;	//电池健康
	private TextView mVoltage;	//电池电压
	private TextView mTechnology;	//电池种类
	private TextView mBatteryid;	//电池ID
	private IntentFilter   mIntentFilter;

          onCreate完成绑定显示控件和注册receiver,关键是响应系统ACTION_BATTERY_CHANGED这个INTENT。

        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);	//添加ACTION_BATTERY_CHANGED的filter
        mStatus = (TextView)findViewById(R.id.status);
        mPower = (TextView)findViewById(R.id.power);
        mLevel = (TextView)findViewById(R.id.level);
        mScale = (TextView)findViewById(R.id.scale);
        mHealth = (TextView)findViewById(R.id.health);
        mTechnology = (TextView)findViewById(R.id.technology);
        mVoltage = (TextView)findViewById(R.id.voltage);
        mBatteryid = (TextView)findViewById(R.id.batteryid);
        registerReceiver(mIntentReceiver, mIntentFilter);

        在mIntentReceiver完成对电池信息的读取

	private BroadcastReceiver mIntentReceiver = new BroadcastReceiver(){
		public void onReceive(Context context, Intent intent) {
			String action = intent.getAction();
			if (action.equals(Intent.ACTION_BATTERY_CHANGED)){
				mLevel.setText(getString(R.string.battery_info_level_label) + ":"+intent.getIntExtra("level", 0));
				mScale.setText(getString(R.string.battery_info_scale_label) + ":"+intent.getIntExtra("scale", 0));
				mVoltage.setText(getString(R.string.battery_info_voltage_label) + ":"+intent.getIntExtra("voltage", 0));
				mBatteryid.setText(getString(R.string.battery_info_id_label) + ":"+intent.getIntExtra("batteryid", 0));
				mTechnology.setText(getString(R.string.battery_info_technology_label) + ":"+intent.getStringExtra("technology"));	//以上五个信息从Intent的参数可以直接获取到
				
				int plugType = intent.getIntExtra("plugged", 0);
				int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN);
				String statusString;
				statusString = getString(R.string.battery_info_status_label)+":";
				if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
                    statusString += getString(R.string.battery_info_status_charging);
                    if (plugType > 0) {
                    			mStatus.setTextColor(0xff0033ff);
                        statusString = statusString + " " + getString(
                                (plugType == BatteryManager.BATTERY_PLUGGED_AC)	//AC充电还是USB充电
                                        ? R.string.battery_info_status_charging_ac
                                        : R.string.battery_info_status_charging_usb);
                    }
                } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) {
                	mStatus.setTextColor(0xffff33ff);
                    statusString += getString(R.string.battery_info_status_discharging);
                } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {
                	mStatus.setTextColor(0xffff33ff);
                    statusString += getString(R.string.battery_info_status_not_charging);
                } else if (status == BatteryManager.BATTERY_STATUS_FULL) {
                	mStatus.setTextColor(0xff33ff00);
                    statusString += getString(R.string.battery_info_status_full);
                } else {
                	mStatus.setTextColor(0xffff3366);
                    statusString += getString(R.string.battery_info_status_unknown);
                }
                mStatus.setText(statusString);
                
                switch (plugType) {
                case 0:
                    mPower.setText(getString(R.string.battery_info_power_label) + ":"+getString(R.string.battery_info_power_unplugged));
                    break;
                case BatteryManager.BATTERY_PLUGGED_AC:
                    mPower.setText(getString(R.string.battery_info_power_label) + ":"+getString(R.string.battery_info_power_ac));
                    break;
                case BatteryManager.BATTERY_PLUGGED_USB:
                    mPower.setText(getString(R.string.battery_info_power_label) + ":"+getString(R.string.battery_info_power_usb));
                    break;
                case (BatteryManager.BATTERY_PLUGGED_AC|BatteryManager.BATTERY_PLUGGED_USB):
                    mPower.setText(getString(R.string.battery_info_power_label) + ":"+getString(R.string.battery_info_power_ac_usb));
                    break;
                default:
                    mPower.setText(getString(R.string.battery_info_power_label) + ":"+getString(R.string.battery_info_power_unknown));
                    break;
                }
                
                int health = intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN);
                String healthString;
                healthString = getString(R.string.battery_info_health_label)+":";
                if (health == BatteryManager.BATTERY_HEALTH_GOOD) {
                    healthString += getString(R.string.battery_info_health_good);
                } else if (health == BatteryManager.BATTERY_HEALTH_OVERHEAT) {
                    healthString += getString(R.string.battery_info_health_overheat);
                } else if (health == BatteryManager.BATTERY_HEALTH_DEAD) {
                    healthString += getString(R.string.battery_info_health_dead);
                } else if (health == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE) {
                    healthString += getString(R.string.battery_info_health_over_voltage);
                } else if (health == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE) {
                    healthString += getString(R.string.battery_info_health_unspecified_failure);
                } else {
                    healthString += getString(R.string.battery_info_health_unknown);
                }
                mHealth.setText(healthString);
			}
		}
		
	};

        完成后在USB充电时截图如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值