我正在开发一个Android应用程序,它将惯性数据记录在智能手机上,然后进一步处理它。不同的Android设备具有不同的行为,具体取决于将惯性传感器连接到Android的固件,这一点非常清楚。我自己无法回答的一件事是,为什么只有 moto g 第二代显示,当应用程序录制时,我的传感器样本数量明显不同?
例如,几秒钟的录制,我看到:
-
~6000个陀螺仪样本
-
ACC 的 ~5200 个样品
-
~2000个磁力计样品
还假设我正在记录的活动始终影响所有传感器,因此我希望均匀调用onSensorChange函数。我尝试过的所有其他智能手机(5 或 6 种不同的智能手机)都会发生这种情况。
任何建议为什么磁电机似乎不像其他传感器那样频繁地更改值,以便onSensorChange记录它?
显而易见的答案是因为固件,但是您知道如何减轻我所看到的效果吗?
谢谢大家!
这个问题真的很老,但我想为了社区,我会回答它:
我在一家专门从事智能手机传感器处理的初创公司担任应用程序开发人员。 我们有几个第二代Moto G,我们发现它们在为一个传感器和跨传感器提供统一的采样率方面做得非常糟糕。
为了缓解这些问题,每次从加速度计获取样本时,我们都会使用最新数据一次编写一整行样本。 如果自上次加速计采样以来,任何其他传感器上都没有新样本,则相同的值将打印两次。
即。
Accel (3-axis) | Gyro (3-axis)
0,0,0|0,0,0
<new accelerometer sample>
1,1,1|0,0,0
<5 gyro samples and 1 accelerometer>
2,2,2|5,5,5
...
无论如何,希望这对某人有所帮助!
TLDR;第二代Moto G在一个传感器和多个传感器上的采样率不一致。