• Android电池信息获取


    Android 可以通过BroadcastReceiver来获取电池信息改变的广播(ACTION_BATTERY_CHANGED),从而获取到相关的电池信息。

    电池信息,及其对应的相关常数(参考网址:http://blog.sina.com.cn/s/blog_5d2e69770102vh59.html)

    电池信息 类型 备注
    status int 取得电池的状态,返回的状态类型由 android.os.BatteryManager 类定义的常量所决定,包括:
    电池充电状态( BATTERY_STATUS_CHARGING
    电池放电状态( BATTERY_STATUS_DISCHARGING 
    电池满电状态( BATTERY_STATUS_FULL
    电池不充电状态( BATTERY_STATUS_NOT_CHARGING 
    电池未知状态( BATTERY_STATUS_UNKNOWN
    health int 取得电池的健康状态,返回的状态类型由 android.os.BatteryManager 类定义的常量所决定,包括:
    电池损坏( BATTERY_HEALTH_DEAD
    电池健康( BATTERY_HEALTH_GOOD
    电池过热( BATTERY_HEALTH_OVERHEAT
    电池电压过大( BATTERY_HEALTH_OVER_VOLTAGE
    未知状态( BATTERY_HEALTH_UNKOWN
    未明示故障( BATTERY_HEALTH_UNSPECIFIED_FAILURE 
    present boolean 判断当前是否存在电池
    level int 取得电池的剩余容量
    scale int 取得电池的总容量,通常为 100
    Icon-small int 取得电池对应的图标 ID
    plugged int 连接的电源插座类型,返回的状态由 android.os.BatteryManager 类定义的常量所决定,包括:
    USB 电源( BATTERY_PLUGGED_USB
    交流电电源( BATTERY_PLUGGED_AC
    voltage int 取得电池的电压
    temperature int 取得电池的温度,单位是摄氏度
    technology String 取得电池的类型

    获取电池信息的步骤:

    (1) 创建BroadcastReceiver,用于结束电池信息变化的广播

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            String action = intent.getAction();  
            if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {  
               //TO GET BatteryInfo
            }                
    

    (2) 重写onResume()方法,获取IntentFilter对象,并注册BroadcastReceiver

    	protected void onResume() {
    		IntentFilter filter = new IntentFilter();  
    		filter.addAction(Intent.ACTION_BATTERY_CHANGED);  
    		registerReceiver(mBroadcastReceiver, filter);
    		super.onResume(); 
    	}
    

    (3)程序在后台的时候取消注册BroadcastReceiver

    	protected void onPause() {
    		unregisterReceiver(mBroadcastReceiver); 
    		super.onPause();
    	}
    

     

    实例:

    public class GetBatteryInfo extends Activity {
    	private static final int REFRESH_TIME = 1;
    	private static boolean runtime=false;
    	private TextView mStatus_BatteryInfo;
    	private TextView mPlugged_BatteryInfo;
    	private TextView mLevel_BatteryInfo;
    	private TextView mScale_BatteryInfo;
    	private TextView mVoltage_BatteryInfo;
    	private TextView mTemperature_BatteryInfo;
    	private TextView mTechnology_BatteryInfo;
    	private TextView mHealth_BatteryInfo;
    	private TextView mRuntime_BatteryInfo;
    	private TimeThread timeThread;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		InitView();
    	}
    	
    	private void InitView() {
    		mStatus_BatteryInfo=(TextView)findViewById(R.id.status_BatteryInfo);
    		mPlugged_BatteryInfo=(TextView)findViewById(R.id.plugged_BatteryInfo);
    		mLevel_BatteryInfo=(TextView)findViewById(R.id.level_BatteryInfo);
    		mScale_BatteryInfo=(TextView)findViewById(R.id.scale_BatteryInfo);
    		mVoltage_BatteryInfo=(TextView)findViewById(R.id.voltage_BatteryInfo);
    		mTemperature_BatteryInfo=(TextView)findViewById(R.id.temperature_BatteryInfo);
    		mTechnology_BatteryInfo=(TextView)findViewById(R.id.technology_BatteryInfo);
    		mHealth_BatteryInfo=(TextView)findViewById(R.id.health_BatteryInfo);
    		mRuntime_BatteryInfo=(TextView)findViewById(R.id.runtime_BatteryInfo);
    	}
    
    	@Override
    	protected void onResume() {
    		IntentFilter filter = new IntentFilter();  
    		filter.addAction(Intent.ACTION_BATTERY_CHANGED);  
    		registerReceiver(mBroadcastReceiver, filter);
    		startTimeThread(timeThread);
    		super.onResume(); 
    	}
    	
    	@Override
    	protected void onPause() {
    		stopTimeThread(timeThread);
    		unregisterReceiver(mBroadcastReceiver); 
    		super.onPause();
    	}
    	
    	/**
    	 * @param milliseconds 将ms转化为hh:mm:ss 格式时间
    	 * @return
    	 */
    	private String msToTime(int milliseconds ){
    		int allSeconds=(milliseconds/1000);
    		int hours=allSeconds/3600;
    		String hours_string;
    		int feelSeconds=allSeconds%3600;
    		int mimute=feelSeconds/60;
    		String mimute_string;
    		String second_string;
    		int second=feelSeconds%60;
    		if(hours<10){
    			hours_string="0"+String.valueOf(hours);
    		}else{
    			hours_string=String.valueOf(hours);
    		}
    		if(mimute<10){
    			mimute_string="0"+String.valueOf(mimute);
    		}else{
    			mimute_string=String.valueOf(mimute);
    		}
    		if(second<10){
    			second_string="0"+String.valueOf(second);
    		}else{
    			second_string=String.valueOf(second);
    		}
    		return hours_string+":"+mimute_string+":"+second_string;
    	}
    	
    	private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {  
    		@Override  
    		public void onReceive(Context context, Intent intent) {  
    		String action = intent.getAction();  
    		if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {  
    		int status = intent.getIntExtra("status", 0);  
    		int health = intent.getIntExtra("health", 0);  
    		int level = intent.getIntExtra("level", 0);  
    		int scale = intent.getIntExtra("scale", 0);  
    		int plugged = intent.getIntExtra("plugged", 0);  
    		int voltage = intent.getIntExtra("voltage", 0);  
    		int temperature = intent.getIntExtra("temperature", 0);  
    		String technology = intent.getStringExtra("technology");  
    		mLevel_BatteryInfo.setText(level+"");
    		mScale_BatteryInfo.setText(scale+"");
    		mVoltage_BatteryInfo.setText(voltage+"mV");
    		mTemperature_BatteryInfo.setText(((float)temperature/10)+"℃");
    		mTechnology_BatteryInfo.setText(technology+"");
    		mRuntime_BatteryInfo.setText(msToTime((int) SystemClock.elapsedRealtime()));
    		switch (status) {  
    		case BatteryManager.BATTERY_STATUS_UNKNOWN:  
    		mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_UNKNOWN));  
    		break;  
    		case BatteryManager.BATTERY_STATUS_CHARGING:  
    			mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_CHARGING));  
    		break;  
    		case BatteryManager.BATTERY_STATUS_DISCHARGING:  
    			mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_DISCHARGING));  
    		break;  
    		case BatteryManager.BATTERY_STATUS_NOT_CHARGING:  
    			mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_NOT_CHARGING));  
    		break;  
    		case BatteryManager.BATTERY_STATUS_FULL:  
    			mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_FULL));  
    		break;  
    		}  
    		switch (health) {  
    		case BatteryManager.BATTERY_HEALTH_UNKNOWN:  
    		mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_UNKOWN));
    		break;  
    		case BatteryManager.BATTERY_HEALTH_GOOD:  
    		mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_GOOD));
    		break;  
    		case BatteryManager.BATTERY_HEALTH_OVERHEAT:  
    		mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_OVERHEAT));
    		break;  
    		case BatteryManager.BATTERY_HEALTH_DEAD:  
    		mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_DEAD));
    		break;  
    		case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:  
    		mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_VOLTAGE));
    		break;  
    		case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:  
    		mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_UNSPECIFIED_FAILURE));
    		break;  
    		}  
    		  
    		  
    		switch (plugged) {  
    		case BatteryManager.BATTERY_PLUGGED_AC:  
    		mPlugged_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_plugged_AC));
    		break;  
    		case BatteryManager.BATTERY_PLUGGED_USB:  
    			mPlugged_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_plugged_USB));
    		break;  
    		default:
    			mPlugged_BatteryInfo.setText("");
    		}  
    		}  
    		}  
    	};
    	
    	Handler TimeHandler=new Handler(){
    		@Override
    		public void handleMessage(Message msg) {
    			switch (msg.what) {
    			case REFRESH_TIME:
    				mRuntime_BatteryInfo.setText(msToTime((int) SystemClock.elapsedRealtime()));//获取系统启动时间
    				break;
    			default:
    				break;
    			}
    			
    			super.handleMessage(msg);
    		}
    		
    	};
    	
    	/**
    	 * 打开线程timeThread
    	 * @param timeThread
    	 * @param runtime 运行标志位
    	 */
    	private void startTimeThread(Thread timeThread){
    		if(timeThread==null){
    			runtime=true;
    			timeThread=new TimeThread();
    			timeThread.start();
    		}
    	}
    	
    	/**
    	 * 停止线程
    	 * @param timeThread
    	 */
    	private void stopTimeThread(Thread timeThread){
    		if(timeThread!=null){
    			Thread.currentThread().interrupt();
    			timeThread.interrupt();
    			runtime=false;
    		}
    		
    	}
    	
    	class TimeThread extends Thread{
    		@Override
    		public void run() {
    			while(runtime){
    				try {
    					sleep(1000);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    				Message msg=new Message();
    				msg.what=REFRESH_TIME;
    				TimeHandler.sendMessage(msg);
    			}
    		}
    		
    	}
    	
    }
    

    布局:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFFFF"
        android:clipToPadding="true"
        android:fitsSystemWindows="true"
        android:orientation="vertical" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:background="#5CD8AF"
            android:gravity="center_vertical" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:text="@string/SystemSetBatteryInfo_BatteryInfo_textvie"
                android:textColor="@android:color/white"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_status_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/status_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_plugged_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/plugged_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_level_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/level_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_scale_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/scale_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_voltage_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/voltage_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_temperature_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/temperature_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_technology_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/technology_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_health_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/health_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="#FFFFFF"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="@string/SystemSetBatteryInfo_runtime_textview"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
    
            <TextView
                android:id="@+id/runtime_BatteryInfo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/main_view_color"
                android:textSize="18sp" />
        </LinearLayout>
    
    </LinearLayout>
    

    Strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="app_name">GetBatteryInfo</string>
        <string name="SystemSetBatteryInfo_BatteryInfo_textvie">电池信息</string>
        <string name="SystemSetBatteryInfo_status_textview">电池状态:</string>
        <string name="SystemSetBatteryInfo_plugged_textview">充电方式:</string>
        <string name="SystemSetBatteryInfo_level_textview">电池电量:</string>
        <string name="SystemSetBatteryInfo_scale_textview">电池容量:</string>
        <string name="SystemSetBatteryInfo_voltage_textview">电池电压:</string>
        <string name="SystemSetBatteryInfo_temperature_textview">电池温度:</string>
        <string name="SystemSetBatteryInfo_technology_textview">电池类型:</string>
        <string name="SystemSetBatteryInfo_health_textview">健康状态:</string>
        <string name="SystemSetBatteryInfo_runtime_textview">使用时间:</string>
        <string name="BatteryInfo_status_CHARGING">正在充电</string>
        <string name="BatteryInfo_status_DISCHARGING">正在耗电</string>
        <string name="BatteryInfo_status_FULL">电量充满</string>
        <string name="BatteryInfo_status_NOT_CHARGING ">未充电</string>
        <string name="BatteryInfo_status_UNKNOWN">状态未知</string>
        <string name="BatteryInfo_plugged_USB">USB电源</string>
        <string name="BatteryInfo_plugged_AC">交流电电源</string>
        <string name="BatteryInfo_health_DEAD">电池损坏</string>
        <string name="BatteryInfo_health_GOOD">电池正常</string>
        <string name="BatteryInfo_health_OVERHEAT">电池过热</string>
        <string name="BatteryInfo_health_VOLTAGE ">电池电压过大</string>
        <string name="BatteryInfo_health_UNKOWN">未知状态</string>
        <string name="BatteryInfo_health_UNSPECIFIED_FAILURE">未明示故障</string>
    
    </resources>
    

    colors.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="main_view_color">#1f1f1f</color>
        <color name="main_text_color">#6f6f6f</color>
    </resources>
    

      

  • 相关阅读:
    mysql之四.表介绍
    mysql之三.mysql的工作流程
    mysql之二.mysql中的存储引擎
    mysql之一.初识mysql
    数据及表结构的导出
    迭代器和生成器
    python字符串格式化的几种方式
    关于global 和 nonlocal你需要注意的问题
    请编写一个函数实现将IP地址转换成一个整数
    Python中__repr__和__str__区别
  • 原文地址:https://www.cnblogs.com/caoRM/p/4875523.html
Copyright © 2020-2023  润新知