android中电源管理

来源:互联网 发布:centos没有桌面文件夹 编辑:程序博客网 时间:2024/04/30 09:27

其实试了半天也就弄明白了如何

1.不让屏幕黑

2.用距离传感器控制屏幕的变黑和变亮.

公共的,先加权限.

先给应用加权限:

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

这里要注意一下DEVICE_POWER这个权限是只能给系统应用的.默认给了我们的应用后会报错,需要调整开发工具中对权限检查后的行为

eclipse+gdt 需要在window--preference中,在android的Lint Error Checking中搜索ProtectedPerm  并修改它,由err改为warning

这样修改后在6.0以下系统中就可以了.



第1种:想让屏幕一段时间不黑,就得持有一个能让屏幕一直亮着的锁.

得到这样的锁

PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock liangpingWL = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP, "hahaha");

其中第一个参是锁的级别,也就是说这个锁要让手机一直保持哪些资源可用.屏幕背光,键盘背光,cpu,wifi等.而且还有这个锁释放后手机如何管理电源.这个例子这样写,是:屏幕一直亮着但亮度可以调暗CPU可以省电,锁一但释放就让手机按人家原来的行为模式变化,我们就好象没存在过一样.比如手机设置是15秒黑屏,而我们锁了30秒,那么手机在锁刚一释放时就立马黑屏了. 其实有些级别的锁是允许屏幕黑掉的.各个级别和特性请参考 PowerManager这个类中各个常量的备注.

然后,

保持这个锁

liangpingWL.acquire();
// liangpingWL.acquire(60000);

如果用第一种不指定时间的,就得一定记得什么时候释放此锁.第二种是超时自动释放的.


最后就是释放此锁.

liangpingWL.release();


第2种.想让屏幕在距离传感器认为贴近时就黑屏,在远离时就亮屏.就得这样写.

得到这样的锁

PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock  heipingWL = pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,
"hahaha");

然后,你就想办法一直保持吧.保持的期间,效果有,一但释放距离传感器就不起作用了.




0 0
原创粉丝点击