android 学习笔记 光照传感器的用法
来源:互联网 发布:手游推广联盟源码 编辑:程序博客网 时间:2024/05/21 21:01
Android 中每个传感器的用法其实都比较类似,真的可以说是一通百通了。首先第一步要获取到SensorManager的实例,方法如下:
SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
SensorManager是系统所有传感器的管理器,有了它的实例之后就可以调用getDefaultSensor() 方法来得到任意的传感器类型了,如下所示:
Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_LIGHT);
这里使用Sensor.TYPE_LIGHT常量来指定传感器类型,此时的Sensor实例就代表着一个光照传感器。
接下来我们需要对传感器输出的信号进行监听,这就要借助SensorEventListener来实现了。SensorEventListener是一个接口,其中定义了onSensorChanged()和onAccuracyChanged()这两个方法,如下所示:
SensorEventListener listener = new SensorEventListener() { @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { } };
当传感器的精度发生变化时就会调用onAccuracyChanged()方法,当传感器监测到的数值发生变化时就会调用onSensorChanged()方法。可以看到onSensorChanged()方法中传入了一个SensorEvent参数,这个参数里又包含了一个values数组,所有传感器输出的信息都是存放在这里的。
下面我们还需要调用SensorManager的registerListener()方法来注册SensorEventListener才能使其生效,registerListener()方法接收三个参数,第一个参数就是SensorEventListener的实例,第二个参数是Sensor的实例,这两个参数我们在前面都已经成功得到了。第三个参数是用于表示传感器输出信息的更新速率,共SENSOR_DELAY_UI、SENSOR_DELAY_NORMAL、SENSOR_DELAY_GAME和SENSOR_DELAY_FASTEST这四种值可选,它们的更新速率是依次递增的。因此,注册一个SensorEventListener就可以写成:
senserManager.registerListener(listener, senser, SensorManager.SENSOR_DELAY_NORMAL);另外始终要记得,当程序退出或传感器使用完毕时,一定要调用unregisterListener()方法将使用的资源释放掉,如下所示:
sensorManager.unregisterListener(listener);
整个项目代码如下所示:
package com.test.lightsensortest;import android.app.Activity;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.view.Menu;import android.view.MenuItem;import android.widget.TextView;public class MainActivity extends Activity {private SensorManager sensorManager;private TextView lightLevel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lightLevel = (TextView) findViewById(R.id.light_level);sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);sensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onDestroy() {super.onDestroy();if (sensorManager != null) {sensorManager.unregisterListener(listener);}}private SensorEventListener listener = new SensorEventListener() {@Overridepublic void onSensorChanged(SensorEvent event) {// values数组中第一个下标的值就是当前的光照强度float value = event.values[0];lightLevel.setText("Current light level is " + value + " lx");}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}};}
0 0
- android 学习笔记 光照传感器的用法
- 【Android】安卓学习笔记之光照传感器的用法
- Android学习笔记(6)-光照传感器
- 2.传感器学习笔记之光照传感器
- Android-传感器-光照传感器
- 【Android】安卓学习笔记之加速度传感器的用法
- Android笔记(十七)光照传感器
- Android传感器之光照传感器
- android 传感器 光照传感器示例
- Android中光照传感器的用法,(检测光照强度的变化)
- android光照、加速度传感器
- Android之传感器(一)光照传感器
- android传感器的学习
- android 传感器学习笔记 一
- Android传感器编程学习笔记
- android 传感器学习笔记 一
- Android学习笔记之传感器
- 光照传感器
- HDU1269-迷宫城堡
- 【坑】javascript中让setTimeout方法间隔时间更为精确
- spring mvc + MyBatis + Easyui
- 1148 -- 小光棍数
- UITableView的使用和点击每个cell跳转到其他controller优化
- android 学习笔记 光照传感器的用法
- UIAlertView在其他页面快速显示?
- Ambari2.1安装hdp2.3
- 1149 -- 光棍节的快乐
- ReactiveCocoa-基础
- 面试之jsp、Servlet相关知识——生命周期,区别等
- Hadoop第9周练习—Hive部署测试(含MySql部署)
- 相关滤波跟踪(MOSSE)
- 1150 -- 寻找最大数