Android 传感器篇:(三)位置传感器(Position sensors)

这篇文章主要介绍位置传感器相关的内容。

其中在这个系列的第一篇讲了方向传感器,所以这里就不讲这一块的内容,感兴趣的移步: 

Android 传感器篇:(一)方向传感

1:总述 

首先先看下位置传感器都有哪些,以及返回的值和单位:

其中TYPE_ORIENTATION已经废弃。
坐标系还是不变的如下:

2:游戏旋转矢量传感器

该传感器与旋转矢量传感器相同,唯一的区别就是它不使用地磁场。所以相对来说相对旋转更准确一些。

因此,Y 轴不指向北,而是指向其他参照坐标。该参考坐标可以漂移与陀螺仪沿 Z 轴漂移时的幅度相同数量级的幅度。

具体调用:

SensorManager sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor gameRotation=sensorManager.getDefaultSensor(Sensor.TYPE_GAME_ROTATION_VECTOR);

3:地磁场旋转矢量传感器

 地磁旋转矢量传感器与旋转矢量传感器类似,但它使用磁力计而不是陀螺仪。

 调用:

SensorManager sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor geomagnetic=sensorManager.getDefaultSensor(Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR);

4:地磁场传感器

android 平台通过两个传感器来确定设备的位置:

1:加速度计accelerometer

2:  地磁场传感器

磁场传感器(也称为磁力计)可报告沿 3 个传感器坐标轴测量的环境磁场。

单位是微特斯拉 (uT)。地磁场传感器是基于硬件的。

SensorManager sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor magnetic_field=sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

 5:未校准的地磁计

与地磁场传感器类似,但是没有经过硬铁校准。

未校准磁场传感器可报告环境磁场以及硬铁校准估值。

具体可看下返回值:

单位依旧是微特斯拉 (uT)。

在概念上看,未校准的测量结果是校准测量结果和偏差估值之和:

_uncalibrated = _calibrated + _bias

6:接近传感器

接近传感器可报告从传感器到最近的可见表面的距离。

某些接近传感器返回表示“近”或“远”的二进制值。在这种情况下,传感器通常在远状态报告其最大范围值,在近状态报告较小值。

调用如下:

 SensorManager sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
 Sensor proximity=sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

另外可以通过sensor.getMaximumRange()方法获取传感器的最大范围。

例如:我在测试的时候,当手机表面没有物体时,value[0]返回的值就是getMaximumRange的值,当我的手放到手机上方后,返回的是最小值0.

 

demo截图如下:

最后附上地址:

demo地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值