Android电源管理

 copy from: StevGuo系列文章翻译之Android电源管理

上图展示了Android电源管理的整体设计框架。Android实现了一个非常简单的电源管理机制,目前,它只支持screen on/off,screen backlight on/off,keyboard backlight on/off,button backlight on/off和调整screen亮度。不支持sleep,standby等更加充分利用CPU能力的模式。电源管理模块通过三个途径接收输入:RPC调用,电池状态改变事件和电源设置改变事件。与其它模块通信时,使用Intent广播或者直接API调用。也提供了重启和关机服务。当电池电量低于某个值时,会自动关闭设备。当没有用户事件时,电源模块会自动使屏幕dim或者off,状态转换如下图: PowerManagerService.java是核心服务。它调用Power.java做具体的工作。PowerManager.java是通过RPC访问PowerManagerService.java的代理。Power.java与JNI通信。Android_os_Power.cpp是对Power.java中JNI接口的实现它调用Power.c做具体的工作。Power.c通过读写下面的文件控制着电源设备驱动: "/sys/android_power/acquire_partial_wake_lock", "/sys/android_power/acquire_full_wake_lock", "/sys/android_power/release_wake_lock", "/sys/android_power/request_state" "/sys/android_power/auto_off_timeout", "/sys/class/leds/lcd-backlight/brightness", "/sys/class/leds/button-backlight/brightness", "/sys/class/leds/keyboard-backlight/brightness" BatteryService.java把自己注册为一个对路径”/sys/class/power_supply”的UEvent监视器,如果这个路径中的信息有改变的话,它通过JNI通过java层次的API发送ACTION_BATTERY_CHANGED广播来把最新的状态信息传递出去。 Com_android_server_BatteryService.cpp是BatteryService.java中JNI的本地实现。它通过下面的文件获得当前电池状态: "/sys/class/power_supply/ac/online" "/sys/class/power_supply/usb/online" "/sys/class/power_supply/battery/status" "/sys/class/power_supply/battery/health" "/sys/class/power_supply/battery/present" "/sys/class/power_supply/battery/capacity" "/sys/class/power_supply/battery/batt_vol" "/sys/class/power_supply/battery/batt_temp" "/sys/class/power_supply/battery/technology" 想在程序当中调用电源模块的话,使用下面的代码: PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock( PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG); wl.acquire(); // ... wl.release();

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值