距离感应器实现锁频教程
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent(MainActivity. this , MyService. class );
startService(intent);
}
}
|
然后就是MyService.java 主要内容
public class MyService extends Service {
private SensorManager mManager;
private Sensor mSensor = null ;
private SensorEventListener mListener = null ;
private PowerManager localPowerManager = null ;
private PowerManager.WakeLock localWakeLock = null ;
@Override
public void onCreate() {
//获取系统服务POWER_SERVICE,返回一个PowerManager对象
localPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
//获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
localWakeLock = this .localPowerManager.newWakeLock( 32 , "MyPower" );
//获取系统服务SENSOR_SERVICE,返回一个SensorManager对象
mManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
//获取距离感应器对象
mSensor = mManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
//注册感应器事件
mListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float [] its = event.values;
if (its != null
&& event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
System.out.println( "its[0]:" + its[ 0 ]);
//经过测试,当手贴近距离感应器的时候its[0]返回值为0.0,当手离开时返回1.0
if (its[ 0 ] == 0.0 ) { // 贴近手机
System.out.println( "手放上去了..." );
if (localWakeLock.isHeld()) {
return ;
} else
localWakeLock.acquire(); // 申请设备电源锁
} else { // 远离手机
System.out.println( "手拿开了..." );
if (localWakeLock.isHeld()) {
return ;
} else
localWakeLock.setReferenceCounted( false );
localWakeLock.release(); // 释放设备电源锁
} }
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//注册监听
mManager.registerListener(mListener, mSensor,
SensorManager.SENSOR_DELAY_GAME);
return super .onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
//取消监听
mManager.unregisterListener(mListener);
super .onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return null ;
}
}
|
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals( "android.intent.action.SCREEN_OFF" )) {
} else if (action.equals( "android.intent.action.SCREEN_ON" )) {
}
}
}
|
/**
* Get a wake lock at the level of the flags parameter. Call
* {@link WakeLock#acquire() acquire()} on the object to acquire the
* wake lock, and {@link WakeLock#release release()} when you are done.
*
* {@samplecode
*PowerManager pm = (PowerManager)mContext.getSystemService(
* Context.POWER_SERVICE);
*PowerManager.WakeLock wl = pm.newWakeLock(
* PowerManager.SCREEN_DIM_WAKE_LOCK
* | PowerManager.ON_AFTER_RELEASE,
* TAG);
*wl.acquire();
* // ...
*wl.release();
* }
*
* @param flags Combination of flag values defining the requested behavior of the WakeLock.
* @param tag Your class name (or other tag) for debugging purposes.
*
* @see WakeLock#acquire()
* @see WakeLock#release()
*/
public WakeLock newWakeLock( int flags, String tag)
{
return new WakeLock(flags, tag);
}
|
这个方法将创建WakeLock对象,通过调用此对象的方法你就可以方便的去控制电源的状态。方法如下:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag" );
wl.acquire();
屏幕将停留在设定的状态,一般为亮、暗状态
wl.release();
释放掉正在运行的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
距离感应器实现锁频教程相关推荐
- android Phone 距离感应器锁的实现
android手机在正常打电话的过程中,靠近面部会灭屏,这个主要是PhoneApp中的mProximityWakeLock的作用.这个锁是在PhoneApp中被初始化的. if ((pm.getSup ...
- android距离感应器控制黑屏,白屏
最近在做一个网络通话的apk,功能和手机打sim卡电话一样.虽然只做java部分,但也遇到很多问题,其中一个就是模拟通话时的状态,要控制屏幕锁屏.我知道是通过手机上的距离感应器来实现,但也搞了好久,今 ...
- android距离感应器控制屏幕灭屏白屏
最近在做一个网络通话的apk,功能和手机打sim卡电话一样.虽然只做java部分,但也遇到很多问题,其中一个就是模拟通话时的状态,要控制屏幕锁屏.我知道是通过手机上的距离感应器来实现,但也搞了好久,今 ...
- PowerManager屏幕休眠断网与距离感应器P-Sensor
PowerManager.java . 1. 应用程序获取PowerManager服务, 我们可以这样书写: PowerManager pm = (PowerManager) getSystemSe ...
- cpu锁频(cpu锁频软件)
NOKIA6680可以锁频吗?怎样锁频 你要找到专用的6680锁频软件才行.或者拿到手机维修店去,让他们帮你解决,现在很多维修店都有这服务的. 刚卖的E8400是不是没锁频的啊?CPU倍频6.0到9. ...
- cpu被锁频解除方法_CPU如何去锁频 CPU去锁频的方法
今天给大家带来CPU如何去锁频,CPU去锁频的方法,让您轻松解决问题. CPU怎么去锁频,你可知道吗?下面将由学习啦小编带大家来解答这个疑问吧,希望对大家有所收获! cpu锁频方法一 这里需要从CPU ...
- Android4.2距离感应器
先说现象,现象就是来电话,接通电话,把手机屏幕靠近脸部,遮挡住P-sensor,屏幕变黑了,不遮挡住P-sensor,屏幕就点亮了.接着我们来看看代码流程. 距离感应器与屏幕休眠可参考 http:// ...
- 因特尔显卡自定义分辨率_电脑显示器分辨率超频教程:1080P超2K分辨率的方法...
我们玩过CPU超频.显卡超频.内存超频等,相信不少用户还没有尝试过显示器超频,其实在前段时间,装机之家为广大爱好者发布了一篇[电脑显示器刷新率怎么超频?电脑显示器提高屏幕刷新率超频教程]文章,我们将一 ...
- 3Dmax制作锁模型教程
3Dmax制作锁模型教程 3Dmax如何制作锁模型?今天小编就和大家讲解一下3Dmax软件的实用知识点之锁模型,其实利用放样工具.切角长方体组合完成的.方法简单易懂,但愿你未来的项目中有所借鉴,那么以 ...
最新文章
- 计算机专业每年都有国企招老吗,这十大专业在国企中最受欢迎,待遇高、前景好,有你的专业吗?...
- 浏览器保存密码后自动填充问题
- 如何有效抵抗电脑辐射
- idea中的markdown文档如何插入图片
- 代理管家app_亲亲小保社保管家app2021下载_亲亲小保社保管家app最新版下载
- 数字图像处理基础与应用学习,第二章
- 剑指offer面试题22. 链表中倒数第k个节点(链表)
- [导入]16:50论坛终于恢复了
- 如何确定地址_小规模公司注册地址 创业者该如何选择
- C# 中用 PadLeft、PadRight 补足位数
- Android微信emoji表情,Android 软键盘和emoji表情切换方案,和微信几乎一样的体验...
- 如何将Vue中表格数据,以Excel格式导出?报saveAs错误如何解决?
- Jwt入门教程:实战( 三) | 使用Springboot基于拦截器和redis的Jwt判断用户登录以及安全校验
- 设置来电铃声、卡2来电铃声、短信铃声、提示铃声、闹铃铃声
- 个人如何获取美团外卖推广链接
- Latex学习(一)更改页边距
- 7.node.js的Buffer(缓冲区)的合并(concat)、比较(compare)、拷贝(copy)和裁剪(slice)以及如何转化为JSON对象
- 薛兆丰经济学思维研究:权利的经济学讨论
- 分水岭:知识的深度拓展
- MT4跟单软件更新至v4.23.0——HOOKSWORK多帐户跨平台