android电池管理软件,Android实现电池管理系统

一、Android 电池服务

Android电池服务,用来监听内核上 的电池事件,并将最新的电池数据上 给系统,系统收到新数据后会去更新电池显示状态、剩余电量等信息。如果收到过温 警和低电 警,系统会自动触发关机流程,保护电池和机器不受到危害。

Android电池服务的启动和运行流程:

healthd的具体调用流程深入分析android5.1 healthd这篇文章讲得很清楚。

三、驱动

Android电源管理底层用的是Linux

power_supply框架,内核提供给电池驱动的接口是结构体power_supply结构体。

struct power_supply {

const char *name;

enum power_supply_type type;

enum power_supply_property *properties;

size_t num_properties;

char **supplied_to;

size_t num_supplicants;

int (*get_property)(struct power_supply *psy,

enum power_supply_property psp,

union power_supply_propval *val);

int (*set_property)(struct power_supply *psy,

enum power_supply_property psp,

const union power_supply_propval *val);

int (*property_is_writeable)(struct power_supply *psy,

enum power_supply_property psp);

void (*external_power_changed)(struct power_supply *psy);

void (*set_charged)(struct power_supply *psy);

/* For APM emulation, think legacy userspace. */

int use_for_apm;

/* Driver private data */

void *drv_data;//add by bhj

/* private */

struct device *dev;

struct work_struct changed_work;

spinlock_t changed_lock;

bool changed;

struct wake_lock work_wake_lock;

struct delayed_work deferred_register_work;

#ifdef CONFIG_LEDS_TRIGGERS

struct led_trigger *charging_full_trig;

char *charging_full_trig_name;

struct led_trigger *charging_trig;

char *charging_trig_name;

struct led_trigger *full_trig;

char *full_trig_name;

struct led_trigger *online_trig;

char *online_trig_name;

struct led_trigger *charging_blink_full_solid_trig;

char *charging_blink_full_solid_trig_name;

#endif

};

内核主要通过get_property这个函数指针来获得驱动中的有关电池的信息,而这个函数在内核中只给出了声明,我们在写驱动的时候要自己实现这个函数,即将自己写的函数赋值给这个函数指针,当内核需要驱动中电源信息的时候就回调这个get_property函数。另外,我们写驱动程序的时候又要给用户提供接口,内核中提供给用户的接口就是sysfs,通过读取sysfs文件系统中文件内容,就可以得到电源的信息。内核主要通过两个文件power_supply_class.c和power_supply_core.c,我们调用其中的函数就可以把电源(电池,USB或AC)的信息展现给用户,有关电源的属性写在/sys/class/powersupply文件夹下(此文件夹为程序运行后所生成的)。

电池系统从底层向Framework层上 数据的流程:

415d9d0e77e4d66852b472bdea54ec8a.png

相关资源:克隆软件下载-其它工具类资源

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月20日
下一篇 2021年4月20日

相关推荐