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勒克斯。

  • 相关阅读:
    记支付宝接口对接,涉及到提取证书SN号的解决方案
    Second Level Cache for Entity Framework 6.1
    记一个dynamic的坑
    使用EntityFramwork[6.1]进行级联保存的时候出现异常
    转:Transform Web.Config when Deploying a Web Application Project
    转:程序员如何增加收入
    超实用的JavaScript技巧及最佳实践(下)
    超实用的JavaScript技巧及最佳实践(上)
    Oracle PL/SQL入门语法点
    轻量级IOC框架:Ninject (下)
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781870.html
Copyright © 2011-2022 走看看