Android 传感器--光照传感器详解及使用
Android设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化。当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛。
起着这样作用,Android是通过一款光照传感器来获取你周围环境亮度的变化。光照传感器一般在手机的顶部的位置。
要在程序中使用这款传感器
(1)首先要获取SensorManager传感器管理器服务:SensorManagersensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
(2)获取光照传感器:SensorliaghtSensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)//Sensor.TYPE_LIGHT代表光照传感器
(3)注册和监视光照传感器:
sensorManager.registerListener(newSensorEventListener(){
@Override
publicvoidonSensorChanged(SensorEventevent){
//监视传感器的改变
//accuracy传感器的精度通过event.accuracy获取
//values传感器传回的数值如event.values[0]获取光线强度lux
//timestamp传感器事件发生的时间(以纳秒为单位)
}
@Override
publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){
//对传感器精度的改变做出反应
}
},sensor,SensorManager.SENSOR_DELAY_NORMAL);
一个简单的获取光照传感器光线强度lux的代码:
publicclassMainActivityextendsActivity{
privateTextViewvalue_tv;
privateSensorManagersensorMamager;
privateSensorsensor;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
value_tv=(TextView)findViewById(R.id.value_tv);
//获取SensorManager对象
sensorMamager=(SensorManager)getSystemService(SENSOR_SERVICE);
//获取Sensor对象
sensor=sensorMamager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorMamager.registerListener(newSensorEventListener(){
@Override
publicvoidonSensorChanged(SensorEventevent){
//获取精度
floatacc=event.accuracy;
//获取光线强度
floatlux=event.values[0];
value_tv.setText("acc:"+acc+";"+"lux:"+lux);
}
@Override
publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){
//TODO自动生成的方法存根
}
},sensor,SensorManager.SENSOR_DELAY_NORMAL);
}
}
对于一些程序,在改变当前程序屏幕亮度的时候,可以考虑加入光照传感器的判断。
因为大部分这些程序,会出现这样的一个问题,当(在非自动亮度调节模式)设定屏幕亮度为一个值时,再设置为自动亮度调节模式的时候是无效的。
以上就是对Android传感器光照传感的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!