android电池管理

来源:互联网 发布:驱动下载软件 编辑:程序博客网 时间:2024/04/30 10:49
 

开发环境

Window 7

Eclipse helios

MB525 defy  Android 2.1-update1


羽化博客的第三篇,由于这个星期兄弟过来玩,所以决定选个简单的程序来写博客,Android技术群里面也有人问过,网上资料也很多,原来写这个程序目的就是随便试试,这次一切从简吧~ ~好了 送上程序代码:

 

com.LB里面主程序Battery代码:

view plaincopy to clipboardprint?
  1. package com.LB;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.BroadcastReceiver;  
  5. import android.content.Context;  
  6. import android.content.Intent;  
  7. import android.content.IntentFilter;  
  8. import android.os.BatteryManager;  
  9. import android.os.Bundle;  
  10. import android.widget.TextView;  
  11.   
  12. public class Battery extends Activity   
  13. {  
  14.     private int BatteryN;       //目前电量  
  15.     private int BatteryV;       //电池电压  
  16.     private double BatteryT;        //电池温度  
  17.     private String BatteryStatus;   //电池状态  
  18.     private String BatteryTemp;     //电池使用情况  
  19.   
  20.     public TextView TV;  
  21.       
  22.     @Override  
  23.     public void onCreate(Bundle savedInstanceState)   
  24.     {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.main);  
  27.   
  28.         // 注册一个系统 BroadcastReceiver,作为访问电池计量之用这个不能直接在AndroidManifest.xml中注册  
  29.         registerReceiver(mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));  
  30.           
  31.         TV = (TextView)findViewById(R.id.TV);  
  32.           
  33.     }  
  34.       
  35.     /* 创建广播接收器 */  
  36.     private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver()   
  37.     {  
  38.         public void onReceive(Context context, Intent intent)   
  39.         {  
  40.             String action = intent.getAction();  
  41.             /* 
  42.              * 如果捕捉到的action是ACTION_BATTERY_CHANGED, 就运行onBatteryInfoReceiver() 
  43.              */  
  44.             if (Intent.ACTION_BATTERY_CHANGED.equals(action))   
  45.             {  
  46.                 BatteryN = intent.getIntExtra("level"0);    //目前电量  
  47.                 BatteryV = intent.getIntExtra("voltage"0);  //电池电压  
  48.                 BatteryT = intent.getIntExtra("temperature"0);  //电池温度  
  49.                   
  50.                 switch (intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN))   
  51.                 {  
  52.                 case BatteryManager.BATTERY_STATUS_CHARGING:  
  53.                     BatteryStatus = "充电状态";  
  54.                     break;  
  55.                 case BatteryManager.BATTERY_STATUS_DISCHARGING:  
  56.                     BatteryStatus = "放电状态";  
  57.                     break;  
  58.                 case BatteryManager.BATTERY_STATUS_NOT_CHARGING:  
  59.                     BatteryStatus = "未充电";  
  60.                     break;  
  61.                 case BatteryManager.BATTERY_STATUS_FULL:  
  62.                     BatteryStatus = "充满电";  
  63.                     break;  
  64.                 case BatteryManager.BATTERY_STATUS_UNKNOWN:  
  65.                     BatteryStatus = "未知道状态";  
  66.                     break;  
  67.                 }  
  68.                   
  69.                 switch (intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN))   
  70.                 {  
  71.                 case BatteryManager.BATTERY_HEALTH_UNKNOWN:  
  72.                     BatteryTemp = "未知错误";  
  73.                     break;  
  74.                 case BatteryManager.BATTERY_HEALTH_GOOD:  
  75.                     BatteryTemp = "状态良好";  
  76.                     break;  
  77.                 case BatteryManager.BATTERY_HEALTH_DEAD:  
  78.                     BatteryTemp = "电池没有电";  
  79.                     break;  
  80.                 case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:  
  81.                     BatteryTemp = "电池电压过高";  
  82.                     break;  
  83.                 case BatteryManager.BATTERY_HEALTH_OVERHEAT:  
  84.                     BatteryTemp =  "电池过热";  
  85.                     break;  
  86.                 }  
  87.         TV.setText("目前电量为" + BatteryN + "% --- " + BatteryStatus + "\n" + "电压为" + BatteryV + "mV --- " + BatteryTemp + "\n" + "温度为" + (BatteryT*0.1) + "℃");  
  88.             }  
  89.         }  
  90.     };  
  91. }  


layout的xml代码

view plaincopy to clipboardprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView  
  8.     android:id = "@+id/TV"  
  9.     android:layout_width="fill_parent"  
  10.     android:layout_height="wrap_content"  
  11.     />  
  12. </LinearLayout>  


好了,很简单的代码,至于为什么要传入数值怎么写大家可以看看帮助文档里面的BatteryManager  ---  The BatteryManager class contains strings and constants used for values in theACTION_BATTERY_CHANGED Intent. 原来看mars的视频里面学到的最重要的不是如何开发Android而是学会使用帮助文档,也推荐大家看看这个学习视频,自我认为看视频比看书学得快-0-

原创粉丝点击