获取环境光

import android.content.Context;

import android.hardware.Sensor;

import android.hardware.SensorEvent;

import android.hardware.SensorEventListener;

import android.hardware.SensorManager;

import android.util.Log;

/**

* <h2>光线传感器管理者

* 1.start():启动,在获取光照强度前调用。

* 2.stop():停止,在不再需要获取光照强度后调用。

* 3.getLux():获取光照强度,单位为勒克斯(lux)。

* 如果你需要额外的一些方法,可以根据返回的光照强度自行添加

* */

public class LightSensorManager {

private static final boolean DEBUG =true;

    private static final String TAG ="标签";

    private static LightSensorManager instance;

    private SensorManager mSensorManager;

    private LightSensorListener mLightSensorListener;

    private boolean mHasStarted =false;

    private LightSensorManager() {

}

/**

    * 创建一个光线传感器实例

    */

    public static LightSensorManager getInstance() {

if (instance ==null) {

instance =new LightSensorManager();

        }

return instance;

    }

/**

    * 启动光线传感器,在获取光照强度前调用

    * <p>功能:打开环境光

    * @param context 上下文

    */

    public void start(Context context) {

if (mHasStarted) {

return;

        }

mHasStarted =true;

        mSensorManager = (SensorManager)context.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);

        Sensor lightSensor =mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); // 获取光线传感器

        if (lightSensor !=null) {// 光线传感器存在时

            mLightSensorListener =new LightSensorListener();

            mSensorManager.registerListener(mLightSensorListener, lightSensor,

                    SensorManager.SENSOR_DELAY_NORMAL); // 注册事件监听

        }

}

/**

    * 停止,在不再需要获取光照强度后调用。

    * <p>功能:关闭环境光

    */

    public void stop() {

if (!mHasStarted ||mSensorManager ==null) {

return;

        }

mHasStarted =false;

        //注销传感器

        mSensorManager.unregisterListener(mLightSensorListener);

    }

/**

    * 功能:获取光线强度

    */

    public float getLux() {

if (mLightSensorListener !=null) {

return mLightSensorListener.lux;

        }

return -1.0f; // 默认返回-1,表示设备无光线传感器或者为调用start()方法

    }

private class LightSensorListener implements SensorEventListener {

private float lux; // 光线强度

        @Override

        public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

@Override

        public void onSensorChanged(SensorEvent event) {

if (event.sensor.getType() ==Sensor.TYPE_LIGHT) {

// 获取光线强度

                lux =event.values[0];

                if (DEBUG) {

Log.d(TAG, "lux : " +lux);

                }

}

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容