我在这两个源代码中发现了两个例子,但是sensorEvent.java说"当设备平躺在桌子上并从其左侧向右推时,x加速度值为正"和sensorListener.java说"当设备从其左侧向右推时,x加速度值为负(设备对向左推施加反作用力)"。你可以向上滚动看看坐标系的定义是什么你会发现它们是一样的。所以我很困惑
因为我做了一个实验,只是把我的手机向左推到右边,我看到x轴是上升的。
那么,是有一个错误的例子,还是我错过了什么?
这里是sensorEvent.java和sensorListener.java
据我所知,SensorEvent
中的陈述是正确的-由您自己的实验说明。SensorListener
已经被弃用很长一段时间了(至少两年了——它已经被SensorEventListener
取代了),所以你应该假设非弃用的语句是正确的。
我的猜测是,在Android的早期,加速值是镜像的,因为这两个类中提到的其他例子之间的区别类似于你所困惑的:
当前(在sensovent中):
当设备平放于桌面上时,加速度值为+9.81;对应于设备的加速度(0 m/s^2)减去重力(-9.81 m/s^2)。
已弃用(在SensorListener):
当设备平放于桌上时,加速度值为-STANDARD_GRAVITY,对应于设备在重力作用下施加在桌子上的力。
-STANDARD_GRAVITY
解析为-(9.80665)= -9.80665,与SensorEvent中给出的正值正好相反。