首先要说的是,电池管理不是电源管理。算然电源是由电池供给的,但是在逻辑管理中,怎么供电的,和怎么用电的,这两个是分开的。

java代码: 
frameworks/frameworks/base/services/java/com/android/server/Ba 
tteryService.java 
监听Uevent、读取sysfs里中的状态 。
JNI代码: 
frameworks/base/services/jni/com_android_server_BatteryService. 
cpp 
kernel driver代码 
drivers/power/xx_battery.c 

获得电池信息的两种方式(可以3种):

Android.content.BroadcastReceiver类
广播Intent.ACTION_BATTERY_CHANGED

Android.os.BatteryManager类


1.使用广播接收器:

   ●(1) 电池信息的取得,调用registerReceiver()方法。
         第1个参数,设置BroadcastReceiver实例
第2个参数,设置追加了Intent.ACTION_BATTERY_CHANGED处理的IntentFilter实例。

    ●(2) 在BroadcastReceiver的onReceive()事件,接收到的Intent.ACTION_BATTERY_CHANGED,包括下面的信息。
    “status”(int类型)…状态,定义值是BatteryManager.BATTERY_STATUS_XXX。
    “health”(int类型)…健康,定义值是BatteryManager.BATTERY_HEALTH_XXX。
    “present”(boolean类型)
    “level”(int类型)…电池剩余容量
    “scale”(int类型)…电池最大值。通常为100。
    “icon-small”(int类型)…图标ID。
    “plugged”(int类型)…连接的电源插座,定义值是BatteryManager.BATTERY_PLUGGED_XXX。
    “voltage”(int类型)…mV。
    “temperature”(int类型)…温度,0.1度单位。例如 表示197的时候,意思为19.7度。 
    “technology”(String类型)…电池类型,例如,Li-ion等等。

2.获取系统服务的方式:


Constants
int BATTERY_HEALTH_COLD  
int BATTERY_HEALTH_DEAD  
int BATTERY_HEALTH_GOOD  
int BATTERY_HEALTH_OVERHEAT  
int BATTERY_HEALTH_OVER_VOLTAGE  
int BATTERY_HEALTH_UNKNOWN  
int BATTERY_HEALTH_UNSPECIFIED_FAILURE  
int BATTERY_PLUGGED_AC Power source is an AC charger.
int BATTERY_PLUGGED_USB Power source is a USB port.
int BATTERY_PLUGGED_WIRELESS Power source is wireless.
int BATTERY_STATUS_CHARGING  
int BATTERY_STATUS_DISCHARGING  
int BATTERY_STATUS_FULL  
int BATTERY_STATUS_NOT_CHARGING  
int BATTERY_STATUS_UNKNOWN  
String EXTRA_HEALTH Extra for ACTION_BATTERY_CHANGED: integer containing the current health constant.
String EXTRA_ICON_SMALL Extra for ACTION_BATTERY_CHANGED: integer containing the resource ID of a small status bar icon indicating the current battery state.
String EXTRA_LEVEL Extra for ACTION_BATTERY_CHANGED: integer field containing the current battery level, from 0 to EXTRA_SCALE.
String EXTRA_PLUGGED Extra for ACTION_BATTERY_CHANGED: integer indicating whether the device is plugged in to a power source; 0 means it is on battery, other constants are different types of power sources.
String EXTRA_PRESENT Extra for ACTION_BATTERY_CHANGED: boolean indicating whether a battery is present.
String EXTRA_SCALE Extra for ACTION_BATTERY_CHANGED: integer containing the maximum battery level.
String EXTRA_STATUS Extra for ACTION_BATTERY_CHANGED: integer containing the current status constant.
String EXTRA_TECHNOLOGY Extra for ACTION_BATTERY_CHANGED: String describing the technology of the current battery.
String EXTRA_TEMPERATURE Extra for ACTION_BATTERY_CHANGED: integer containing the current battery temperature.
String EXTRA_VOLTAGE Extra for ACTION_BATTERY_CHANGED: integer containing the current battery voltage level.

更多相关文章

  1. 【读书笔记-《Android游戏编程之从零开始》】5.Android(安卓)游
  2. Android自定义气球Overlay的开发
  3. Android开发之获取网络类型(WIFI、2G、3G、4G)和运营商名称
  4. Android中全屏 及 去掉标题栏
  5. 详解Android中的屏幕方向类型
  6. Android布局管理器(贞布局)
  7. Android学习笔记(五)第一个Android(安卓)程序----Hello world
  8. Android之加载图片时自定义进度条
  9. 自定义Android系统服务

随机推荐

  1. Qt on Android(安卓)Episode 2(翻译)
  2. 【转】申请 android google map API key
  3. Android点击事件的实现
  4. Android(安卓)application对象的使用 全
  5. Android(安卓)Studio安装过程问题汇总
  6. android系统信息(内存,cpu,sd卡,电量,版本)的获
  7. Android(安卓)通知机制 Toast和Notificat
  8. Android登陆界面实现清除输入框内容和震
  9. Android(安卓)EditText限制输入文本只能
  10. android things中与标准android系统不同