安卓距離傳感器

最近項目中需要檢測距離傳感器是否可用,具體效果如下:


相對還是非常簡單的直接調取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;

基本到這就可以檢驗距離傳感器是否可用,說簡單點就是相當於我們打電話時把手機放耳邊會息屏,離開亮屏這麼一個操作,還是很簡單的。

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