有谁能告诉我重力sensor, 加速度sensor, 陀螺仪sensor有啥区别?
这两天看这三个sensor, 被搞晕了
我的理解是:
按理来说重力和加速度是一个sensor, 和陀螺仪是完全不同的sensor
陀螺仪是用来检测手机本身各条边, 相对于重心的位置和方向, 所以他有x, y, z , 比如手机是否倾斜, 横屏竖屏等
重力传感器和加速度传感器是一个传感器, 用来检测手机整体向某个方向运动的加速度, 比如当手机掉落时,加速度应等于g
但是
网上很多gsensor的介绍都是下面这种原理:
Accelrator的x,y,z轴的正负向变化:
手机屏幕向上水平放置时: (x,y,z) = (0, 0, -9.81)
当手机顶部抬起时: y减小,且为负值
当手机底部抬起时: y增加,且为正值
当手机右侧抬起时: x减小,且为负值
当手机左侧抬起时: x增加,且为正值
我的问题是:
那这样不就成了, 陀螺仪sensor了么? 这三个x,y,z的值是相对手机重心来算出来的, 都是相对位置对吧?
那么我如何检测手机在某个方向的加速度? 比如手机掉落?
附加问题:
如果说加速sensor和重力sensor是同一个sensor,那么他们的硬件应该也是同一个sensor吧?
但是上层(包括HAL层)对两个sensor的定义是分开的哦,
类型定义分别是 : SENSOR_TYPE_GRAVITY, 和 SENSOR_TYPE_ACCELERATOR
那么当我有一个硬件的gsensor时, 我是否应该在HAL层创建两个sensor,分别是accelerator和gravity?如果不是hal层,那应该是哪层来定义呢?