900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Android光线传感器获取光线强弱。LightSensorManager封装类

Android光线传感器获取光线强弱。LightSensorManager封装类

时间:2023-04-14 21:45:10

相关推荐

Android光线传感器获取光线强弱。LightSensorManager封装类

在Android开发中,有时我们需要获知设备所在环境的光线强弱情况,当然这需要我们设备拥有光线传感器

下面是我简单封装的一个光线传感器管理类,主要提供了3个方法:

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

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

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

如果你需要额外的一些方法,可以根据返回的光照强度自行添加。下面是整个LightSensorManager类

[java]view plain copy importandroid.content.Context; importandroid.hardware.Sensor; importandroid.hardware.SensorEvent; importandroid.hardware.SensorEventListener; importandroid.hardware.SensorManager; importandroid.util.Log; publicclassLightSensorManager{ privatestaticfinalbooleanDEBUG=true; privatestaticfinalStringTAG="LightSensor"; privatestaticLightSensorManagerinstance; privateSensorManagermSensorManager; privateLightSensorListenermLightSensorListener; privatebooleanmHasStarted=false; privateLightSensorManager(){ } publicstaticLightSensorManagergetInstance(){ if(instance==null){ instance=newLightSensorManager(); } returninstance; } publicvoidstart(Contextcontext){ if(mHasStarted){ return; } mHasStarted=true; mSensorManager=(SensorManager)context.getApplicationContext().getSystemService(Context.SENSOR_SERVICE); SensorlightSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);//获取光线传感器 if(lightSensor!=null){//光线传感器存在时 mLightSensorListener=newLightSensorListener(); mSensorManager.registerListener(mLightSensorListener,lightSensor,SensorManager.SENSOR_DELAY_NORMAL);//注册事件监听 } } publicvoidstop(){ if(!mHasStarted||mSensorManager==null){ return; } mHasStarted=false; mSensorManager.unregisterListener(mLightSensorListener); } /** *获取光线强度 */ publicfloatgetLux(){ if(mLightSensorListener!=null){ returnmLightSensorListener.lux; } return-1.0f;//默认返回-1,表示设备无光线传感器或者为调用start()方法 } privateclassLightSensorListenerimplementsSensorEventListener{ privatefloatlux;//光线强度 publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){ } publicvoidonSensorChanged(SensorEventevent){ if(event.sensor.getType()==Sensor.TYPE_LIGHT){ //获取光线强度 lux=event.values[0]; if(DEBUG){ Log.d(TAG,"lux:"+lux); } } } } }

对于这个光线强度的值。越暗数值越低,最低应该是0,在白天室内大概有300左右,仅供参考,不知道不同的设备会不会存在一定误差。

调用程序就不贴了,通过log就可以很直接的看得到数据了。这个类在我的自定义相机里自动调节曝光程度使用到了,效果还是有的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。