最近项目中需要检测距离传感器是否可用,具体效果如下:
效果图相对还是非常简单的直接调取api就ok,直接展示代码:
权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
1.首先获取sensorManager
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
//息屏设置
mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, TAG);
2.在Activity的onRsume中去注册传感器
//注册传感器,先判断有没有传感器
if (mSensor != null)
sensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
3.实现SensorEventListener接口
implements SensorEventListener
4.实现onSensorChanged和onAccuracyChanged方法
在onSensorChanged()方法中写入以下代码:
if (event.values[0] == 0.0) {
//关闭屏幕
if (!wakeLock.isHeld()){
wakeLock.acquire();
} else {
//唤醒设备
if (wakeLock.isHeld())
wakeLock.release();
}
5.传感器取消监听和释放息屏
在OnDestory()中写入一下代码:
//传感器取消监听
sensorManager.unregisterListener(this);
//释放息屏
if (wakeLock.isHeld())
wakeLock.release();
wakeLock = null;
mPowerManager = null;
基本到这就可以检验距离传感器是否可用,说简单点就是相当于我们打电话时把手机放耳边会息屏,离开亮屏这么一个操作,还是很简单的。
网友评论