一、Android的电源管理部分文件路径如下:

frameworks/base/core/java/android/os/PowerManager.java

PowerManager类被APP调用,控制电源设备状态切换等


frameworks/base/services/java/com/android/server/PowerManagerService.java

PowerManagerService属于PowerManager的核心


frameworks/base/core/java/android/os/Power.java

Power与jni接口交互


frameworks/base/core/jni/android_os_power.cpp

此文件是PowerManager的jni接口实现


hardware/libhardware/power/power.c

PowerManager的HAL代码,与电源管理的kernel交互



二、android.os.PowerManager类主要接口:

Android 提供了现成 android.os.PowerManager , 该类用于控制设备的电源状态的切换 .

该类对外有三个接口函数 :

1、void goToSleep(long time); // 强制设备进入 Sleep 状态

Note:

尝试在应用层调用该函数 , 却不能成功 , 出现的错误好象是权限不够 , 但在 Framework 下面的 Service 里调用是可以的 .

2、newWakeLock(int flags, String tag);// 取得相应层次的锁

flags 参数说明 :

PARTIAL_WAKE_LOCK: Screen off, keyboard light off

SCREEN_DIM_WAKE_LOCK: screen dim, keyboard light off

SCREEN_BRIGHT_WAKE_LOCK: screen bright, keyboard light off

FULL_WAKE_LOCK: screen bright, keyboard bright

ACQUIRE_CAUSES_WAKEUP: 一旦有请求锁时强制打开 Screen keyboard light

ON_AFTER_RELEASE: 在释放锁时 reset activity timer

Note:

如果申请了 partial wakelock, 那么即使按 Power , 系统也不会进 Sleep, Music 播放时

如果申请了其它的 wakelocks, Power , 系统还是会进 Sleep

3、void userActivity(long when, boolean noChangeLights);//User activity 事件发生 , 设备会被切换到 Full on 的状态 , 同时Reset Screen off timer.

Sample code:

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);

PowerManager.WakeLock wl = pm.newWakeLock (PowerManager.SCREEN_DIM_WAKE_LOCK, “My Tag”);

wl.acquire();

…….

wl.release();



Note:

1. 在使用以上函数的应用程序中 , 必须在其 Manifest.xml 文件中加入下面的权限 :

<uses-permission android:name="android.permission.WAKE_LOCK" />

<uses-permission android:name="android.permission.DEVICE_POWER" />

2. 所有的锁必须成对的使用 , 如果申请了而没有及时释放会造成系统故障 . 如申请了 partial wakelock, 而没有及时释放 , 那系统就永远进不了 Sleep 模式 .

更多相关文章

  1. Android隐藏状态栏、导航栏
  2. Android NetworkInfo.DetailedState 获取wifi连接状态详情
  3. Android 状态栏通知Notification(转载)
  4. android 网络实时监听网络状态变化 及 网络类型判断
  5. Android Interface Definition Language (AIDL) android接口定义
  6. Android里面各种控件的状态选择器
  7. Android改变wifi状态必须要的权限
  8. Android隐藏状态栏和标题栏,相当于全屏效果

随机推荐

  1. 自动编译 打包 签名 android程序
  2. Android(安卓)cocos2d 弹弓游戏 Catapult
  3. Android(安卓)不透明度16进制值
  4. 解决Content的startActivity方法报错
  5. Android(安卓)单元测试 Error: ShouldNot
  6. AS Gradle构建失败异常:Could not downlo
  7. Android(安卓)Bundle类
  8. android调式用的简单bat
  9. Android各国语言对照表
  10. [Android]加载外部.9图片