安卓距离传感器

最近项目中需要检测距离传感器是否可用,具体效果如下:


相对还是非常简单的直接调取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;

基本到这就可以检验距离传感器是否可用,说简单点就是相当于我们打电话时把手机放耳边会息屏,离开亮屏这么一个操作,还是很简单的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章