Eclair中电池电量的读取首先需要Kernel的支持,kernel将所得到的电池信息放到/sys/class/power_supply/Battery 中,由Eclair中frameworks/base/services/jni文件夹下的com_android_server_BatteryService.cpp进行读取。
总路径的定义:
#define POWER_SUPPLY_PATH "/sys/class/power_supply"
在int register_android_server_BatteryService(JNIEnv* env)中对每个特定路径赋值
如给定batteryCapacityPath的路径:
snprintf(path, sizeof(path), "%s/%s/capacity", POWER_SUPPLY_PATH, name);
if (access(path, R_OK) == 0)
gPaths.batteryCapacityPath = strdup(path);
最后在static void android_server_BatteryService_update(JNIEnv* env, jobject obj)中读取路径文件中的信息
setIntField(env, obj, gPaths.batteryCapacityPath, gFieldIds.mBatteryLevel);
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/magicyu2/archive/2009/12/10/4977498.aspx
在我们的板子上,电源部分,ac是由max8677控制的,DC是由ds2786控制的。