Android Power Management 实现
2010-03-24 05:13:00 来源:WEB开发网Android Framework层面:
其主要代码文件如下:
frameworksasecorejavaandroidosPowerManager.java
frameworksaseservicesjavacomandroidserverPowerManagerService.java
frameworksasecorejavaandroidosPower.java
frameworksasecorejniandroid_os_power.cpp
hardwarelibhardwarepowerpower.c
其中PowerManagerService.java是核心, Power.java提供底层的函数接口,与JNI层进行交互, JNI层的代码主要在文件android_os_Power.cpp中,与Linux kernel交互是通过Power.c来实现的, Andriod跟Kernel的交互主要是通过sys文件的方式来实现的,具体请参考Kernel层的介绍.
这一层的功能相对比较复杂,比如系统状态的切换,背光的调节及开关,Wake Lock的申请和释放等等,但这一层跟硬件平台无关,而且由Google负责维护,问题相对会少一些,有兴趣的朋友可以自己查看相关的代码.
Kernel层:
其主要代码在下列位置:
drivers/android/power.c
其对Kernel提供的接口函数有
EXPORT_SYMBOL(android_init_suspend_lock); //初始化Suspend lock,在使用前必须做初始化
EXPORT_SYMBOL(android_uninit_suspend_lock); //释放suspend lock相关的资源
EXPORT_SYMBOL(android_lock_suspend); //申请lock,必须调用相应的unlock来释放它
EXPORT_SYMBOL(android_lock_suspend_auto_expire);//申请partial wakelock, 定时时间到后会自动释放
EXPORT_SYMBOL(android_unlock_suspend); //释放lock
EXPORT_SYMBOL(android_power_wakeup); //唤醒系统到on
EXPORT_SYMBOL(android_register_early_suspend); //注册early suspend的驱动
EXPORT_SYMBOL(android_unregister_early_suspend); //取消已经注册的early suspend的驱动
提供给Android Framework层的proc文件如下:
"/sys/android_power/acquire_partial_wake_lock" //申请partial wake lock
"/sys/android_power/acquire_full_wake_lock" //申请full wake lock
"/sys/android_power/release_wake_lock" //释放相应的wake lock
"/sys/android_power/request_state" //请求改变系统状态,进standby和回到wakeup两种状态
Tags:Android Power Management
编辑录入:coldstar [复制链接] [打 印]更多精彩
赞助商链接