zoukankan      html  css  js  c++  java
  • Android光线传感器

    光线传感器可以用来感知周围的光线环境变化。借助这个原理,我们可以开发一个光线探测器。

    MainActivity.java代码

    package com.sdutacm.sensor;
    
    import android.content.Context;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity implements SensorEventListener{
    
        private SensorManager sensorManager;
    
        private Sensor sensor;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            getSensorManager();
        }
    
    
        @Override
        public void onSensorChanged(SensorEvent event) {
            //Sensor 发生变化时,在次通过event.values获取数据
    //        float x = event.values[0];
    //        float y = event.values[0];
    //        float z = event.values[0];
            float light = event.values[0];
            Log.d("Light","当前的光线强度为:"+light+"勒克斯");
            Toast.makeText(this,"当前的光线强度为:"+light+"勒克斯",Toast.LENGTH_SHORT).show();
    
    //        if(x>20 || y>20 || z>20){
    //            Toast.makeText(this,"欢迎使用摇一摇",Toast.LENGTH_SHORT).show();
    //        }
        }
    
        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
    
        }
    
        public void getSensorManager() {
            sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
            /**
             * 传入的参数决定传感器的类型
             * Senor.TYPE_ACCELEROMETER: 加速度传感器
             * Senor.TYPE_LIGHT:光照传感器
             * Senor.TYPE_GRAVITY:重力传感器
             * SenorManager.getOrientation(); //方向传感器
             */
            sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            if(sensorManager != null){
                //一般在Resume方法中注册
                /**
                 * 第三个参数决定传感器信息更新速度
                 * SensorManager.SENSOR_DELAY_NORMAL:一般
                 * SENSOR_DELAY_FASTEST:最快
                 * SENSOR_DELAY_GAME:比较快,适合游戏
                 * SENSOR_DELAY_UI:慢
                 */
                sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_NORMAL);
            }
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            if(sensorManager != null){
                //解除注册
                sensorManager.unregisterListener(this,sensor);
            }
        }
    
    }
    

    event.values返回的数组的第一个值就是光线强度值,单位是勒克斯。勒克斯是照度的国际单位(SI),又称弥烛光,1流明的光通量均匀分布在1一平方米面积上的照度就是一勒克斯,可以标作勒[克斯],简称勒,简作lx
    .适宜于阅读的照度约为600勒克斯,如果你在阅读我的文章或者在编写程序,那么运行此程序,在控制台上观察周围的光线强度,看看是否适合阅读。如果是阴天,将手机放置屋外时,光照强度会瞬间变得很低,不再适合阅读和其他工作。将手机放置到抽屉时,光线强度会很快变成0勒克斯。

  • 相关阅读:
    岭回归和LASSO
    涉及到的知识点有页连接符的使用、批量修改元器件属性等知识
    OrCAD中分立器件的Symbol绘制
    OrCAD来新建原理图工程、设置原理图页面、新建原理图库
    python控制TLP2041高压电源源码(modbus rtu,try捕获异常使用)
    pyqt5分离ui主线程到子线程
    modbus rtu协议
    pcb接地设计
    PSPICE参数扫描+光标跟踪曲线改变+窗口分多个坐标系
    ad 导入logo
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781871.html
Copyright © 2011-2022 走看看