Android编程基于距离传感器控制手机屏幕熄灭的方法详解
作者:飘走的我 时间:2022-02-20 10:49:05
本文实例讲述了Android编程基于距离传感器控制手机屏幕熄灭的方法。分享给大家供大家参考,具体如下:
在现实生活中,打电话的时候手机挨着自己的头,屏幕会熄灭,这是为了不让自己的头按到什么手机键~
这个功能可以使用距离传感器来实现
P-Sensor距离感应器,可以感应手机和人体距离。具体使用用途是在通话过程中打开P-Sensor,那么当手机屏幕贴近用户脸部时,就会自动感应出手机和人体距离是多少。当小于某一个值时,就会熄灭屏幕,不再接收用户触摸屏幕事件,从而有效的防止通话过程中误触摸事件的出现。
具体实现代码如下:
public class MainActivity extends Activity implements SensorEventListener{
public static final String TAG = "SensorTest";
private SensorManager sensorManager;
private TextView tv;
private PowerManager localPowerManager = null;// 电源管理对象
private WakeLock localWakeLock = null;// 电源锁
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
tv = (TextView) findViewById(R.id.tv);
localPowerManager = (PowerManager) getSystemService(POWER_SERVICE);
// 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
localWakeLock = this.localPowerManager.newWakeLock(32, "hahaha");// 第一个参数为电源锁级别,第二个是日志tag
}
@Override
protected void onResume() {
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),
SensorManager.SENSOR_DELAY_UI);
super.onResume();
}
@Override
protected void onPause() {
sensorManager.unregisterListener(this);
super.onPause();
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float[] values = event.values;
switch (event.sensor.getType()) {
case Sensor.TYPE_PROXIMITY:
tv.setText(values[0] + "");
if (values[0] == 0.0) {// 贴近手机
System.out.println("hands up");
Log.d(TAG, "hands up in calling activity");
if (localWakeLock.isHeld()) {
return;
} else {
localWakeLock.acquire();// 申请设备电源锁
}
} else {// 远离手机
System.out.println("hands moved");
Log.d(TAG, "hands moved in calling activity");
if (localWakeLock.isHeld()) {
return;
} else {
localWakeLock.setReferenceCounted(false);
localWakeLock.release(); // 释放设备电源锁
}
break;
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}
仔细想想,是不是屏幕熄灭的时候需要手机自带的电源~
所以需要加上权限:
<uses-permission android:name="android.permission.DEVICE_POWER"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
效果图我就不贴了,需要真机测试
另外,关于Android权限控制可点击此处查看详细描述
附:完整实例代码点击此处本站下载。
希望本文所述对大家Android程序设计有所帮助。
来源:http://blog.csdn.net/qq_33642117/article/details/52016285
标签:Android,距离传感器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SSM框架搭建图文教程(推荐)
2023-11-10 20:39:07
![](https://img.aspxhome.com/file/2023/1/59061_0s.png)
C# 抓取网页内容的方法
2022-09-13 04:50:10
Java中简单实用Quartz概述
2021-09-09 14:16:30
深入Android HandlerThread 使用及其源码完全解析
2023-11-30 19:16:56
![](https://img.aspxhome.com/file/2023/4/138614_0s.gif)
C# SkinEngine控件 给窗体添加皮肤的方法
2021-10-21 23:32:08
![](https://img.aspxhome.com/file/2023/5/102145_0s.jpg)
C#利用异或算法实现加密解密
2022-08-15 14:48:51
![](https://img.aspxhome.com/file/2023/0/116460_0s.png)
WPF实现带筛选功能的DataGrid
2022-05-07 07:48:56
![](https://img.aspxhome.com/file/2023/0/76430_0s.png)
android耳机左右声道接反具体修正方法
2021-05-27 21:16:38
Android性能优化之Bitmap图片优化详解
2023-08-06 02:54:23
![](https://img.aspxhome.com/file/2023/1/106841_0s.png)
Java实现小型图书馆管理系统
2021-06-14 04:27:35
![](https://img.aspxhome.com/file/2023/8/64878_0s.jpg)
Flutter基于Dart Unwrapping Multiple Optional小技巧
2023-07-05 11:44:19
C# Color.FromArgb()及系统颜色对照表一览
2021-05-24 08:21:02
![](https://img.aspxhome.com/file/2023/8/81158_0s.jpg)
C#动态webservice调用接口
2023-10-18 07:22:00
Springmvc Controller接口代码示例
2023-11-28 10:13:25
Android 简单实现倒计时功能
2023-06-27 11:35:40
![](https://img.aspxhome.com/file/2023/5/91035_0s.jpg)
Java在Excel中创建透视表方法解析
2021-11-03 05:49:45
![](https://img.aspxhome.com/file/2023/5/62955_0s.png)
关于eclipse安装spring插件报错An error occurred while collecting items to be installed...解决方案
2023-05-27 03:34:45
![](https://img.aspxhome.com/file/2023/1/78351_0s.png)
Android开发之ListView列表刷新和加载更多实现方法
2021-06-20 06:28:30
![](https://img.aspxhome.com/file/2023/9/94949_0s.png)
Android应用程序四大组件之使用AIDL如何实现跨进程调用Service
2022-02-03 13:24:15
![](https://img.aspxhome.com/file/2023/4/122224_0s.png)
Android开发之SQLite的使用方法
2022-11-12 05:26:38
![](https://img.aspxhome.com/file/2023/4/138074_0s.png)