传感器SensorManager

光照传感器

Android 中每个传感器的用法其实都比较类似,真的可以说是一通百通了。首先第一步要获取到 SensorManager 的实例

SensorManager senserManager = (SensorManager)
getSystemService(Context.SENSOR_SERVICE);

SensorManager 是系统所有传感器的管理器,有了它的实例之后就可以调用getDefaultSensor()方法来得到任意的传感器类型了

Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_LIGHT);

接下来我们需要对传感器输出的信号进行监听,这就要借助 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 这四种值可选,它们的更新速率是依次递增的


senserManager.registerListener(listener, senser, SensorManager.SENSOR_DELAY_NORMAL);

另外始终要记得, 当程序退出或传感器使用完毕时, 一定要调用 unregisterListener ()方法将使用的资源释放掉

sensorManager.unregisterListener(listener);

代码:

public class MainActivity extends Activity {

	
	
	SensorManager sensorManager;
	TextView light;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        light=(TextView) findViewById(R.id.textView1);
        sensorManager=(SensorManager) getSystemService(Context.SENSOR_SERVICE);
        Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
        sensorManager.registerListener(null, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onDestroy() {
    	// TODO Auto-generated method stub
    	super.onDestroy();
    	if (sensorManager!=null) {
			sensorManager.unregisterListener(listener);
		}
    }
    private SensorEventListener listener=new SensorEventListener() {
		
		@Override
		public void onSensorChanged(SensorEvent arg0) {
			// TODO Auto-generated method stub
			// values数组中第一个下标的值就是当前的光照强度
			float value
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值