Android 光传感器开发详细教程

未经本人授权,不得转载!否则必将维权到底

最近我司产品提出了一个很常见的需求:App 通过手机光感器,获取当前的光线强度。根据光线强弱,弹窗提示用户是否切换白天/夜间模式。网上看了很多的博客,都没有解决我的问题。这个需求应该是挺常见的,故记录一下,供后人参考。

#一、简介
光线感应器( Light Sensor ):光传感器主要用来检测手机周围光的强度,与其他传感器不同的是,该传感器监测手机周围光的强度,且单位为 lux。光传感器的开发与其他各种传感器的开发步骤基本相同,只是监测的是 Sensor.TYPE_LIGHT。如果学会了光感器的开发,开发其他的传感器则只需要改变监听器对象及注册监听的方法,然后根据每个人不同的业务需求,来修改后续的逻辑。
#二、详细开发步骤(其他传感器基本类似)
######1.通过 mContext.getSystemService() 得到传感器管理类

 SensorManager mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);

######2.监测手机上支持的传感器,如果手机没有光传感器,一定要做好容错!!!否则你的业务逻辑会出现空指针异常(其他的传感器同理,一定要先判断手机是否拥有这个传感器)

        //获取手机上支持的所有传感器
        List<Sensor> mList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
        for (Sensor sensor : mList) {
			L.d("KeithXiaoY","名字:" + sensor.getName());
			L.d("KeithXiaoY","type:" + sensorTypes.get(sensor.getType()) + "(" + sensor.getType() +")");
			L.d("KeithXiaoY","vendor:" + sensor.getVendor());
			L.d("KeithXiaoY","version:" + sensor.getVersion());
			L.d("KeithXiaoY","resolution:" + sensor.getResolution());
			L.d("KeithXiaoY","max range:" + sensor.getMaximumRange());
			L.d("KeithXiaoY","power:" + sensor.getPower());
        }

######3.我的需求只需要光传感器,根据上一条打出来传感器的列表,光感器的 Type = 5,所以我做了如下判断:

        //获取手机上支持的传感器
        mList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
        for (Sensor sensor : mList) {
            if (Sensor.TYPE_LIGHT ==  sensor.getType()){
                mIsContains = true ; //这是一个 Boolean 值,true 代表有这个传感器、false 代表没有
                return;
            }
        }

######4.下面就是要注册光传感器了

    /*	第三个参数是传感器数据更新数据的速度
          有以下四个值可选,他们的速度是递增的
          SENSOR_DELAY_UI
         
  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值