PowerManager屏幕休眠断网与距离感应器P-Sensor
来源:互联网 发布:英语演讲主题 知乎 编辑:程序博客网 时间:2024/05/01 16:11
PowerManager屏幕休眠断网与距离感应器P-Sensor
。
1. 应用程序获取PowerManager服务, 我们可以这样书写:
2. goToSleep()方法, 这个方法可以强制我们的屏幕熄屏。我们可以这样调用:
在上面拿到pm对象之后,这样调用 pm.goToSleep(SystemClock.uptimeMillis());
三. 定时熄灭屏幕
有时屏幕休眠状态会造成断网,
那么这里,还可以介绍一个控制屏幕的方法就是PowerManager.WakeLock顾名思义,WakeLock这个东西就是亮屏控制,这里说的亮屏,它定义了几种类型的亮屏。如下:
类型cpu屏幕键盘PARTIAL_WAKE_LOCKonoffoffSCREEN_DIM_WAKE_LOCKondimoffSCREEN_BRIGHT_WAKE_LOCKonBrightoffFULL_WAKE_LOCKonBrightBright
//做我们的工作,在这个阶段,我们的屏幕会持续点亮
//释放锁,屏幕熄灭。
那么这里我们也可以这样使用,就是多少时间后熄灭屏幕
首先点亮屏幕
嗯,延迟10s后熄灭屏幕。。。。
那么,这里要注意的是acquire()和release()要成对调用哦!也就是说,你申请了亮屏,过段时间,你要是释放它。
P-Sensor,距离感应器,可以感应手机和人体距离。具体使用用途是在通话过程中打开P-Sensor时靠近脸时屏幕熄灭,第三方apk无法调用,只能系统开发调用
参考http://blog.csdn.net/wds1181977/article/details/18005665
http://bbs.51cto.com/thread-1021568-1.html
Android4.2源码Phone的模块的P-Sensor的控制的类在DisplayPowerController.java
路径:framework/base/services/java/com/android/server/power/DisplayPowerController.java中的:
打开P-Sensor(正确的说法是获得锁)
释放P-Sensor
这个mProximityWakeLock.acquire();和mProximityWakeLock.release(flags);只是申请这个锁,和释放这个锁,防止其他的调用其中mProximityWakeLock.acquire();会辗转调用到PowerManagerService.java的enableProximityLockLocked()方法,顾名思义,这个方法是打开P-Sensor,是的!这个方法会去判断当前手机有没有P-Sensor,如果有的话,就会去向SensorManager注册一个P-Sensor监听器,那么当P-Sensor检测到手机和人体距离发生改变时,就会调用我们PowerManagerService.java的监听器.同样,当电话挂断时,电话模块会去调用mProximityWakeLock.release(flags), 这样就会取消P-Sensor监听器.
ok.. 那么接下来就是分析PowerManagerService里面这个P-Sensor是怎么工作的。
代码里面我已经有一些注释,下面来用文字描述下。
a. 首先会拿到这测距离变化的距离,float distance = event.values[0];
b. 检测这次距离变化和上次距离变化时间差,如果小于系统设置的阈值,则不会去熄灭屏幕。过于频繁的操作系统会忽略掉。所以,如果你感觉P-Sensor不够灵敏,就可以修改这个系统默认值
代码:
如果你改的很小,就会发现P-Sensor会变得灵敏很多。。。
c. 嗯,如果P-Sensor检测到这次距离变化小于系统默认值,且这次是一次正常的变化,那么就应该去熄灭屏幕:
复制内容到剪贴板
代码:
这里的active是true,同样,在这里它还会判断P-Sensor是否可以用,如果不可用,则返回。。忽略这次距离变化
复制内容到剪贴板
代码:
如果一切都满足,则调用:
复制内容到剪贴板
代码:
熄灭屏幕。。
- PowerManager屏幕休眠断网与距离感应器P-Sensor
- PowerManager屏幕休眠断网与距离感应器P-Sensor
- Android距离感应器P-Sensor浅析
- Android距离感应器P-Sensor浅析
- 手机自动休眠与距离感应器失效的问题
- android距离感应器控制屏幕灭屏白屏
- Android -- 距离感应器控制屏幕灭屏白屏
- 屏幕关闭原因以及p-sensor
- 屏幕关闭原因以及p-sensor
- 4.16-1 感应器Sensor
- 通过距离感应器获取实际距离[FAQ04538][Sensor]java层获得P_sensor距离传感器当前真实值,不止0,1
- Android 4.4中的距离/接近传感器 P-sensor(一)
- Android感应器Sensor的使用
- Android重力感应器Sensor编程
- Android重力感应器Sensor编程
- Android Sensor感应器介绍(一)
- Android4.2距离感应器
- iOS距离感应器
- 三、OpenStack入门 之 各组件解析
- Android网络通信的六种方式
- 随机选十个0-1000的数并求和
- 深度评测xcgui
- 使用自定义域名访问github上的pages
- PowerManager屏幕休眠断网与距离感应器P-Sensor
- 10个随机数的和
- hdu 【4198】Quick out of the Harbour
- 关于tableView你不知道的那些事
- 输入法查找—JAVA
- .net高并发的解决方案
- dev gridview 明细行系列操作
- jsoncpp库
- SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 解决方法