博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android让手机主动亮屏的代码
阅读量:6700 次
发布时间:2019-06-25

本文共 1833 字,大约阅读时间需要 6 分钟。

我们在做电子阅读器的时候可能会要求屏幕保持常亮,不希望它熄灭。它的原理也是利用系统服务,来操纵底层设备。

一、系统服务——PowerManager

PowerManager.java就是管理我们电源方面的功能的,当然也包括我们屏幕的亮和熄灭。

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

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);// init powerManager

因为PowerManager是系统服务,所以它的生命周期不是应用程序所能控制的;应用程序只能通过系统,向系统请求获取PowerManager服务,然后系统把这个服务的应用给我们用。

 

二、PowerManager.WakeLock

这个内部类可以真正实现控制屏幕

类型 cpu 屏幕 键盘
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

由于它定义了这么多类型,每种类型可以指定相对应的部件工作和不工作。那么我们就可以利用这些类型,从最细粒度来控制我们的屏幕,控制我们的电源,从而让我们的电源工作时间尽可能的延长。

 

三、实际运用

1. 首先加入权限

 

2. 进行初始化

private PowerManager.WakeLock mWakelock;
PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);// init powerManager        mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|                PowerManager.SCREEN_DIM_WAKE_LOCK,"target"); // this target for tell OS which app control screen

 

3. 强制亮屏

mWakelock.acquire(); // Wake up Screen and keep screen lighting

 

4. 取消强制亮屏,释放控制

mWakelock.release(); // release control.stop to keep screen lighting

PS:这里需要注意的是acquire和release必须成对使用

 

5. 有一种情况是类似于来电显示,我们不仅需要让屏幕点亮,而且还想要取消锁屏界面,该怎么做呢?

在AndroidManifest.xml中加上permission 权限:

    // 键盘锁管理器对象        KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);        // 这里参数”kale”作为调试时LogCat中的Tag        KeyguardLock kl = km.newKeyguardLock("kale");        if (km.inKeyguardRestrictedInputMode()) {               // 解锁键盘               kl.disableKeyguard();          }

 

6. 在新版本中上面的代码变得不推荐了,系统给在activity显示时保持常亮提供了一个新的方法,使用方法也相当简单,下面这句只需要加在activity中即可。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 

参考自:

http://blog.csdn.net/pku_android/article/details/7596968

http://bbs.51cto.com/thread-1018050-1.html

你可能感兴趣的文章
CentOS 7 防火墙操作
查看>>
Cling旨在提供一款高性能的C++ REPL
查看>>
用WinForm/WPF代码来为.NET Core 3.0功能投票
查看>>
StringBuffer与StringBuilder
查看>>
hibernate连接数据库配置
查看>>
MySQL的timestamp字段可以使用的范围是多少
查看>>
前端入门教程(七)CSS属性设置
查看>>
20180601]函数与标量子查询2.txt
查看>>
伪共享和缓存行填充,Java并发编程还能这么优化!
查看>>
高性能、高可靠分布式文件系统 go-fastdfs v1.2.0 发布
查看>>
必应(Bing)每日图片获取API
查看>>
Atom飞行手册翻译: 2.7 ~ 2.10
查看>>
redis的配置文件
查看>>
Nginx的Web管理界面收集
查看>>
Java操作MongoDB
查看>>
分布式系统开发工具包 —— 基于Kryo的Java对象序列化
查看>>
nagios监控服务器的搭建
查看>>
Sql server优化50法
查看>>
使用Server 2008新GPO做驱动器映射
查看>>
Java网络编程从入门到精通(5):使用InetAddress类的getHostName方法获得域名
查看>>