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
Android让手机主动亮屏的代码的更多相关文章
- python3:判断手机的亮屏状态
在用python对手机做一些自动化操作时,常常会判断手机的亮屏状态,知晓手机的亮屏状态后才好做进一步的动作,如给屏幕解锁等. 用于了解手机的亮屏情况,有一个adb命令可用: adb shell du ...
- 基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
在ipad.iphone网页开发中,我们很可能需要判断是横屏或者竖屏.下面就来介绍如何用 jQuery 判断iPad.iPhone.Android是横屏还是竖屏的方法 其实主要是通过window.or ...
- js控制手机保持亮屏的库,解决h5移动端,自动息屏问题
一些说明:我用Laya(ts)开发小游戏,有需要保持手机屏幕常亮的需求(非必须的),然后作为小白的我就在网上找到了这个库,大概了解下,应该是通过播放空视频的原理来保持手机屏幕常亮,然后就放到项目中试了 ...
- Jquery实现手机上下滑屏滑动的特效代码
要引入两个jquery插件 可以去网上下载 <script src="jquery-1.11.1.min.js"></script><script s ...
- 解决Android手机 屏幕横竖屏切换
Android中当屏幕横竖屏切换时,Activity的生命周期是重新加载(说明当前的Activity给销毁了,但又重新执行加载),怎么使屏幕横竖屏切换时,当前的Activity不销毁呢? 1. 在An ...
- Android 动态注册 亮屏、息屏广播
/***************************************************************************** * Android 动态注册 亮屏.息屏广 ...
- 【Android】Android 手机忘记锁屏密码的解决办法
对于忘记Android锁屏密码的筒子们,除重新刷包或者wipe data外,还可用adb来删除密码: 方法很简单 1.手机连接电脑,不要打开数据连接,在充电模式下进行. 2.在电脑上,解压adb.zi ...
- Android Notification实现推送消息过程中接受到消息端有声音及震动及亮屏提示
在Android Notification状态栏通知一文中,简单实现了消息的推送效果,这里就接着上文说一下,当用户接受到消息时的提示效果 // 5-增加震动及声音及亮屏 notification.de ...
- android API版本对应的系统版本及Android获取手机和系统版本等信息的代码
学了这么久的Android,竟然一直对其API对应的名称关系一值搞不清楚,现在网上认真看了下资料,转载一个觉得写得不错的作者的文章,记下来: [背景] 之前折腾android期间,慢慢地知道了,And ...
随机推荐
- 利用 Vmware 安装 Linux 虚拟机
之前写过一篇利用MS系的 Hyper-v 安装 Ubuntu 的教程,这里给出使用 Vmware 安装 Linux 的教程.(ps:Hyper-v 的体验感不太好,而且不够大众化) 1.准备工作 1. ...
- .NetCore源码阅读笔记系列之Security (二) 自定义认证实践
通过前面对AddCookie 或者 AddOpenIdConnect 等了解,其实里面都实现了一个AuthenticationHandler<TOptions>的认证处理,接下来我们来简单 ...
- Divide by Zero 2018 and Codeforces Round #474 (Div. 1 + Div. 2, combined)
思路:把边看成点,然后每条边只能从下面的边转移过来,我们将边按照u为第一关键字,w为第二关键字排序,这样就能用线段树维护啦. #include<bits/stdc++.h> #define ...
- 如何使用 Java 删除 ArrayList 中的重复元素
如何使用 Java 删除 ArrayList 中的重复元素 (How to Remove Duplicates from ArrayList in Java) Given an ArrayList w ...
- Spark streaming的正确使用。。
转自http://bit1129.iteye.com/blog/2198531 代码如下: package spark.examples.streaming import java.sql.{Prep ...
- centos 6.x x86 源码安装git-2.3.0
(1) 添加rpmforge源 wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686 ...
- q.size()
在队列中,q.empty()比q.size()要慢,如果可能就用q.size(); 比如spfa的 while(q.size()>0) better than while(!q.empty())
- 【教程】Tomcat 的catalina.out 日志按照自定义日期格式进行切割
本文简单介绍在使用cronolog对tomcat的日志进行自定义日期格式的切割,方便日志的整理和遇到问题日志的排查! 安装cronolog 安装cronolog的方法网上有很多,这里也简单的介绍一下. ...
- Nmap扫描教程之基础扫描详解
Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...
- Linux usb 驱动程序范例
linxu_usb驱动之框架 USB骨架程序可以被看做一个最简单的USB设备驱动的实例. 首先看看USB骨架程序的usb_driver的定义 [cpp] view p ...