在Android物联网设备中,使用光线传感器的基本流程如下。
(1)通过一个SensorManager来管理各种感应器,要想获得这个管理器的引用,必须通过如下的代码来实现。
(2)在Android系统中,所有的感应器都属于Sensor类的一个实例,并没有继续细分下去,所以Android对于感应器的处理几乎是一摸一样的。既然都是Sensor类,那么怎么获得相应的感应器呢?这时就需要通过SensorManager来获得,可以通过如下的代码来确定要获得的感应器类型。
通过上述代码获得了光线感应器的引用。
(3)在获得相应的传感器的引用后可以来感应光线强度的变化,此时需要通过监听传感器的方式来获得变化,监听功能通过前面介绍的监听方法实现。Android提供了两个监听方式,一个是SensorEventListener,另一个SensorListener,后者已经在android API上显示过时了。
(4)在Android中注册传感器后,就说明启用了传感器。使用感应器是相当耗电的,这也是为什么传感器的应用没有那么广泛的主要原因,所以必须在不需要的时候及时关掉。在Android中通过如下的注销方法来关闭。
■ unregisterListener(SensorEventListenerlistener)。
■ unregisterListener(SensorEventListenerlistener,Sensor sensor)。
(5)使用SensorEventListener来具体实现,在Android物联网设备中有如下两个实现这个监听器的方法。
■ onAccuracyChanged(Sensor sensor,int accuracy):是反应速度变化的方法,也就是rate
变化时的方法。
■ onSensorChanged(SensorEvent event):是传感器值变化的相应的方法。(www.xing528.com)
读者需要注意的是,上述两个方法会同时响应。也就是说,当感应器发生变化时,这两个方法会一起被调用。上述方法中的accuracy值是4个常量,对应的整数如下。
■ SENSOR_DELAY_NORMAL:3。
■ SENSOR_DELAY_UI:2。
■ SENSOR_DELAY_GAME:1。
■ SENSOR_DELAY_FASTEST:0。
而类SensorEvent有4个成员变量,具体说明如下。
■ Accuracy:精确值。
■ Sensor:发生变化的感应器。
■ Timestamp:发生的时间,单位是纳秒。
光线传感器只需要values[0]的值,其他两个都为0。而values[0]就是开发光线传感器所需要的,单位是:lux(光照度单位)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。