Android让手机主动亮屏的代码

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

一、系统服务——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. 首先加入权限

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

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 权限:

<uses-permissionandroid:name="android.permission.DISABLE_KEYGUARD" />
    // 键盘锁管理器对象
        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

时间: 2024-08-05 11:12:02

Android让手机主动亮屏的代码的相关文章

python3:判断手机的亮屏状态

在用python对手机做一些自动化操作时,常常会判断手机的亮屏状态,知晓手机的亮屏状态后才好做进一步的动作,如给屏幕解锁等.  用于了解手机的亮屏情况,有一个adb命令可用: adb shell dumpsys window polic 分别在灭屏和亮屏的情况下run这个adb command,看打印出的info有何不同? 从图中可看出, 亮屏和灭屏的状态,有几行是有明显不一样的.任挑一行用来作为check数据都是可以的,为了简便,我们挑最明显最短的: mAwake=false为详细明了解che

安卓手机来电亮屏流程分析

来电亮屏流程分析 本文档是针对手机来电时候自主点亮屏幕这一流程的分析,很自然的就将其分为2个阶段,第一个是来电,第二个是点亮屏幕. 来电的流程: 来电消息是从RIL层接收到的,然后才开始传递上来. AT      : RING AT      : AT< RING AT      : RIL_URC_READER:RING AT      : RIL_URC_READER Enter processLine use-Rlog/RLOG-RIL: Nw URC:RING use-Rlog/RLOG

js控制手机保持亮屏的库,解决h5移动端,自动息屏问题

一些说明:我用Laya(ts)开发小游戏,有需要保持手机屏幕常亮的需求(非必须的),然后作为小白的我就在网上找到了这个库,大概了解下,应该是通过播放空视频的原理来保持手机屏幕常亮,然后就放到项目中试了下,确实是有用的,能达到屏幕常亮的效果,可惜就是fps从稳定的60帧变为40(或者更低)-60之间摇摆不定,画面很卡,看来我这个游戏是用不了,要找下别的方法,也或者是我使用不当,不过感觉这个库还是很厉害,故记录分享下,转载地址:https://github.com/richtr/NoSleep.js

Jquery实现手机上下滑屏滑动的特效代码

要引入两个jquery插件 可以去网上下载 <script src="jquery-1.11.1.min.js"></script><script src="js/jquery.touchSwipe.min.js"></script> 代码如下: <!DOCTYPE html > <html ><head><meta charset="UTF-8">&

Android新姿势:截屏代码整理

今天做项目要用到android截屏功能,一开始我还庆幸看过一些博客的文章,自信能轻松解决...- - 结果坑了一天才搞了个差不多的交差...哎! 关于android截屏的代码,大致有3种方法,有兴趣的看下去吧. 方法一: 网上看了很多文章,大多用的是这样的方法,直接把一个View转换成Bitmap,然后保存到sd卡. /** * 根据view来生成bitmap图片,可用于截图功能 */ public static Bitmap getViewBitmap(View v) { v.clearFoc

检测手机屏幕是否亮屏解锁

通过adb命令获取手机是否锁屏状态,可以通过下面指令:1.adb shell dumpsys window policy^|grep isStatusBarKeyguard2.adb shell dumpsys window policy^|grep mShowingLockscreen 运行第1条命令,获取到结果,如下: isStatusBarKeyguard=false mFocusedWindow=Window{3c2b801 u0 com.tencent.mm/com.tencent.m

JS 判断ipad android 等移动设备横竖屏代码 源码--AangJava

废话不多说,直接进入正题! <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> <title> JS 判断ipad android 等移动设备横竖屏代码 源码--AangJava</

你的Android手机能投屏到电脑上吗?方法我都给你列出来了

共享屏幕正在一步一步的进入到我们的生活中,从最原始的手机-电视屏幕共享到现在的手机-电脑屏幕共享,这一规模正在逐步的扩散至全球的各个角落中,随之的手机型号的不同,从symbian-Windows phone-Firefox OS-Android.iOS,这些型号一代又一代的被淘汰,如今市面上最大的两个手机巨头就是Android和iOS. 你的手机可以投屏到电脑上吗?你的手机能投屏到电脑上吗?面对这样的问题,你们的回答是什么呢? 以下是Android与iOS投屏到电脑上的方法,Android与iO

Android 如何将手机屏幕投屏到PC端

现如今每人都拥有一部属于自己的手机,手机和我们也是形影不离,安卓用户也是有很多,那么Android 如何将手机屏幕投屏呢?使用工具: 手机&投屏迅捷录屏大师 方法/步骤:1.首先分别在手机和电脑上安装迅捷录屏大师,然后能在桌面上会出现这个软件的图标,如图所示:2.下载安装完成之后,我们在手机上打开这款软件,点击底部菜单栏的[投屏],进入投屏页面.如图所示:3.然后我们点击[扫一扫投屏],将扫描框对准电脑上的二维码开始扫描,如图所示:4.扫描连接成功之后,电脑屏幕上就会显示手机屏幕上的画面内容了.