zoukankan      html  css  js  c++  java
  • Android传感器--光照传感器使用

    Android 设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化。当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛。

    起着这样作用,Android是通过一款光照传感器来获取你周围环境亮度的变化。光照传感器一般在手机的顶部的位置。

    要在程序中使用这款传感器

    (1)首先要获取SensorManager传感器管理器服务:SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);

    (2)获取光照传感器:Sensor liaghtSensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)//Sensor.TYPE_LIGHT 代表光照传感器

    (3)注册和监视光照传感器:

    sensorManager.registerListener(new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
    //监视传感器的改变

    //accuracy 传感器的精度 通过event.accuracy获取

    //values 传感器传回的数值  如event.values[0] 获取光线强度lux

    //timestamp 传感器事件发生的时间(以纳秒为单位)
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    //对传感器精度的改变做出反应
    }
    }, sensor, SensorManager.SENSOR_DELAY_NORMAL);

    一个简单的获取光照传感器光线强度lux的代码:

    public class MainActivity extends Activity {
    	private TextView value_tv;
    	private SensorManager sensorMamager;
    	private Sensor sensor;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		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(new SensorEventListener() {
    			
    			@Override
    			public void onSensorChanged(SensorEvent event) {
    				 //获取精度  
    	            float acc = event.accuracy;  
    	            //获取光线强度  
    	            float lux = event.values[0]; 	
    	            value_tv.setText("acc:"+acc+";"+"lux:"+lux);
    			}
    			
    			@Override
    			public void onAccuracyChanged(Sensor sensor, int accuracy) {
    				// TODO 自动生成的方法存根
    			}
    		}, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    	}
    }
    

    对于一些程序,在改变当前程序屏幕亮度的时候,可以考虑加入光照传感器的判断。

    因为大部分这些程序,会出现这样的一个问题,当(在非自动亮度调节模式)设定屏幕亮度为一个值时,再设置为自动亮度调节模式的时候是无效的。

  • 相关阅读:
    IIS请求筛选模块被配置为拒绝超过请求内容长度的请求(转)
    解决Android AVD启动报错问题
    找新朋友
    【枚举】【SDOI 2011】【bzoj 2241】打地鼠
    Invalidate、RedrawWindow与UpdateWindow的差别
    蓝牙DA14580开发:固件格式、二次引导和烧写
    【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC
    Maven 使用 二——nexus
    Linux程序编译链接动态库版本号的问题
    Key-Value Observing (键值监測)
  • 原文地址:https://www.cnblogs.com/caoRM/p/4872470.html
Copyright © 2011-2022 走看看