androidはバッテリーの電力量を表示します


原文導入:http://blog.csdn.net/it_farmer2010/article/details/6334051
大丈夫な时、もっと勉強して、毎日少し進歩して、自分がこの毎日変化している技術環境についていくようにして、あまり話さないで、コードをつけます.
直接コードをつけましょう.
package com.jli.battery;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.BitmapFactory;
import android.os.BatteryManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;

public class Main extends Activity {
	private ImageView tvBatteryChanged;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tvBatteryChanged = (ImageView)findViewById(R.id.test);
        //          
        registerReceiver(new BatteryBroadcastReceiver(), new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    }
    
    /**        */
    class BatteryBroadcastReceiver extends BroadcastReceiver{
    	  int intLevel = 0;  
          int intScale = 0;
          String BatteryV=null;//  
          String BatteryT=null;//  
          String BatteryStatus=null;//    
          String BatteryStatus2=null;//      
          String BatteryTemp=null; //      
       
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){
    			intLevel = intent.getIntExtra("level", 0);
    			intScale = intent.getIntExtra("scale", 100);
   				int curPower = (intLevel * 100 / intScale)/25;//       
   				switch (curPower) {
				case 0:
					tvBatteryChanged.setImageBitmap(BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.power0));
					break;
				case 1:
					tvBatteryChanged.setImageBitmap(BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.power1));
					break;
				case 2:
					tvBatteryChanged.setImageBitmap(BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.power2));
					break;
				case 3:
					tvBatteryChanged.setImageBitmap(BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.power3));
					break;
				case 4:
					tvBatteryChanged.setImageBitmap(BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.power4));
					break;
				}
   				String action = intent.getAction();  
   	            /* 
   	             *       action ACTION_BATTERY_CHANGED,    onBatteryInfoReceiver() 
   	             */  
   	            if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {  
   	                Log.d("Battery V", "" + intent.getIntExtra("voltage", 0));    //       
   	                Log.d("Battery T", "" + intent.getIntExtra("temperature", 0));     //       
   	                BatteryV = "     :" + intent.getIntExtra("voltage", 0);  
   	                BatteryT = "     :" + (intent.getIntExtra("temperature", 0)*0.1);  
   	                switch (intent.getIntExtra("status",BatteryManager.BATTERY_STATUS_UNKNOWN)) {  
		   	                case BatteryManager.BATTERY_STATUS_CHARGING:  
		   	                    BatteryStatus = "    ";  
		   	                    break;  
		   	                case BatteryManager.BATTERY_STATUS_DISCHARGING:  
		   	                    BatteryStatus = "    ";  
		   	                    break;  
		   	                case BatteryManager.BATTERY_STATUS_NOT_CHARGING:  
		   	                    BatteryStatus = "   ";  
		   	                    break;  
		   	                case BatteryManager.BATTERY_STATUS_FULL:  
		   	                    BatteryStatus = "   ";  
		   	                    break;  
		   	                case BatteryManager.BATTERY_STATUS_UNKNOWN:  
		   	                    BatteryStatus = "     ";  
		   	                    break;  
		   	                }  
   	                switch (intent.getIntExtra("plugged", BatteryManager.BATTERY_PLUGGED_AC)) {  
		   	                case BatteryManager.BATTERY_PLUGGED_AC:  
		   	                    BatteryStatus2 = "AC  ";  
		   	                    break;  
		   	                case BatteryManager.BATTERY_PLUGGED_USB:  
		   	                    BatteryStatus2 = "USB  ";  
		   	                    break;  
   	                }  
   	              switch (intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN)) {  
	   	                case BatteryManager.BATTERY_HEALTH_UNKNOWN:  
	   	                    BatteryTemp = "    ";  
	   	                    break;  
	   	                case BatteryManager.BATTERY_HEALTH_GOOD:  
	   	                    BatteryTemp = "    ";  
	   	                    break;  
	   	                case BatteryManager.BATTERY_HEALTH_DEAD:  
	   	                    BatteryTemp = "     ";  
	   	                    break;  
	   	                case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:  
	   	                    BatteryTemp = "      ";  
	   	                    break;  
	   	                case BatteryManager.BATTERY_HEALTH_OVERHEAT:  
	   	                    BatteryTemp =  "    ";  
	   	                    break;  
	   	                }  
   	            }  
   	        
   				
   	         ListView lv = (ListView)findViewById(R.id.batteryListView);
   	         String [] batterys={BatteryV,BatteryT,"    :"+BatteryStatus,"      :"+BatteryStatus2,"      :"+BatteryTemp};
   	         lv.setAdapter(new ArrayAdapter(Main.this, android.R.layout.simple_list_item_1,batterys));
   				
   				
   				
    		}
    	}

    }

}

そしてAndroidManifestでxmlはバッテリ検出権限を申請します.
  <uses-permission android:name="android.permission.BATTERY_STATS" />

最後に効果図を見てみましょう.
android 显示电池电量_第1张图片
注:一番上のImageViewは、現在の電力検出とは異なり表示されている画像です.