欢迎关注微信公共账号“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();

更多相关文章

  1. Android(安卓)Camera 使用小结
  2. 两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEve
  3. android wifi
  4. [Android] AsyncTask使用实例---加载网络图片
  5. 浅谈android的selector背景选择器
  6. 【Android(安卓)API】Android(安卓)4.1 API官方文档详解
  7. 关于Android四大基本组件介绍与生命周期
  8. Android中一个Activity调用另一个Activity — Intent对象的使用
  9. Android(安卓)UI 之systerm Bar 以及状态栏透明相关的知识点

随机推荐

  1. Android Studio经验积累之常见问题以及解
  2. android 获得手机信息
  3. Android问题与解决
  4. Android(安卓)-- 读取assets文件夹下的资
  5. Linux下android真机调试配置
  6. 四十四、Android之android:layout_weight
  7. Android应用标签栏(Tabs)设计
  8. 屏幕适配问题2
  9. Android Preference置灰显示
  10. android 支持webrtc