传感器(十二)

      传感器
1.SensorManager
 1.sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

2.光照传感器
 1.Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    sensorManager.registerListener(mySensorEventListener,sensor, SensorManager.SENSOR_DELAY_NORMAL);
 2.我们所需要的数据就是存放在 SensorEvent的 values 数组

3.加速度传感器
 1.Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
 2.加速度传感器输出的信息同样也是存放在 SensorEvent 的 values 数组中的,只不过此时的 values 数组中会有三个值, 分别代表手机在  X 轴、 Y 轴和 Z轴方向上的加速度信息。


4.方向传感器
 1.不推荐写法:Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
 values[0]记录着手机围绕 Z轴的旋转角度,
 values[1] 记录着手机围绕 X轴的旋转角度,
 values[2] 记录着手机围绕 Y 轴的旋转角度

 1.推荐写法:事实上,Android 获取手机旋转的方向和角度是通过加速度传感器和地磁传感器共同计算得出的,这也是 Android目前推荐使用 的方式。
 Sensor accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
 Sensor magneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
 sensorManager.registerListener(listener, accelerometerSensor,SensorManager.SENSOR_DELAY_GAME);
 sensorManager.registerListener(listener, magneticSensor,SensorManager.SENSOR_DELAY_GAME);
 由于方向传感器的精确度要求通常都比较高, 这里我们把传感器输出信息的更新速率提高了一些,使用的是 SENSOR_DELAY_GAME。
 接下来在 onSensorChanged()方法中可以获取到 SensorEvent 的 values 数组,分别记录着
 加速度传感器和地磁传感器输出的值。然后将这两个值传入到 SensorManager 的
 getRotationMatrix()方法中就可以得到一个包含旋转矩阵的 R 数组,如下所示:
 SensorManager.getRotationMatrix(R, null, accelerometerValues, magneticValues);
 其中第一个参数 R 是一个长度为 9 的 float 数组,getRotationMatrix()方法计算出的旋转
 数据就会赋值到这个数组当中。 第二个参数是一个用于将地磁向量转换成重力坐标的旋转矩
 阵,通常指定为 null 即可。第三和第四个参数则分别就是加速度传感器和地磁传感器输出的
 values 值。
 得到了 R数组之后,接着就可以调用 SensorManager 的 getOrientation()方法来计算手机
 的旋转数据了,如下所示:
 SensorManager.getOrientation(R, values);
 values 是一个长度为 3 的 float数组, 手机在各个方向上的旋转数据都会被存放到这个数
 组当中。其中 values[0]记录着手机围绕着图 12.3中 Z轴的旋转弧度,values[1]记录着手机围
 绕 X 轴的旋转弧度,values[2]记录着手机围绕 Y 轴的旋转弧度。
 注意这里计算出的数据都是以弧度为单位的, 因此如果你想将它们转换成角度还需要调
 用如下方法:
 Math.toDegrees(values[0]);
 好了,基本的用法就是如此,下面我们来实际操作一下吧。

110634_CiZq_1995545.png

转载于:https://my.oschina.net/u/1995545/blog/393475

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值