Android的电源管理部分,在纵向上分为四层:< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> < xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />
第一部分:Application层 主要是利用Android Frameworks提供的API进行应用级的开发,需要注意的是相关权限的申明: < uses-permission android:name="android.permission.WAKE_LOCK" /> < uses-permission android:name="android.permission.DEVICE_POWER" /> 第二部分:Frameworks层 1. / frameworks/base/core/java/android/os/PowerManager.java v PowerManager:提供对设备的电源进行管理 ? 常见锁类型
Flag Value
|
CPU
|
Screen
|
Keyboard
|
PARTIAL_WAKE_LOCK
|
On
|
Off
|
Off
|
SCREEN_DIM_WAKE_LOCK
|
On
|
Dim
|
Off
|
SCREEN_BRIGHT_WAKE_LOCK
|
On
|
Bright
|
Off
|
FULL_WAKE_LOCK
|
On
|
Bright
|
Bright
|
? 附加锁类型:仅仅是对Screen有影响
Flag Value
|
Description
|
ACQUIRE_CAUSES_WAKEUP
|
This flag will force the screen and/or keyboard to turn on immediately.
|
ON_AFTER_RELEASE
|
If this flag is set, the user activity timer will be reset when the WakeLock is released, causing the illumination to remain on a bit longer
|
v WakeLock:电源管理对象锁 v Usage: ? 获取PowerManager实例PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE); ? 获取PowerManager.WakeLock实例mWakeLock=pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TEST"); ? Device On mWakeLock.acquire(); ? Device Off mWakeLock.release(); 2. / frameworks/base/core/java/android/os/Power.java 提供一些电源管理的函数,如reboot()。其是JNI的上层接口,其往下调用android_os_power.cpp 3. / frameworks/base/services/java/com/android/server/PowerManagerService.java 电源管理服务,AIDL接口IPowerManager的实现者。 第三部分:JNI层 /frameworks/base/core/jni/android_os_power.cpp 第四部分:Native层 /hardware/libhardware/power/power.c 与Linux kernel交互 第五部分:Linux驱动层 /drivers/android/power.c 第六部分:使用电源管理注意事项 1. 可在onCreate时设置该界面的电源管理,在onDestroy时取消设置 2. 可在onResume时设置该界面的电源管理,在onPause时取消设置 3. 注意设置是以Activity为单位,不是以应用为单位 4. 注意在AndroidManifest.xml中声明该应用有设置电源管理的权限 5. 注意加锁解锁要成对出现 6. 注意多个用途最好用多个锁,不要一锁多用,以免出错 7. 注意对运行在后台和异常时对锁的处理 8. 注意在网络连接或传输时最好加锁,以免传输被中断 9. 注意加锁以保证程序逻辑 第七部分:参阅资料 1.http://jaymsimusic.javaeye.com/blog/764629 2.http://www.rosoo.net/a/201012/10599.html
|