我正在开发一款 Android 应用程序,用于在智能手机上记录惯性数据,然后对其进行进一步处理。不同的 Android 设备具有不同的行为,具体取决于将惯性传感器连接到 Android 的固件,这一点非常清楚。不过,我自己无法回答的一件事是,为什么只有 moto g 2nd gen 却显示当应用程序正在录制时我有明显不同数量的传感器样本?
例如,几秒钟的录音,我看到:
~6000 个陀螺仪样本
acc 的~5200 个样本
~2000 个磁力计样本
同时假设我正在记录的 Activity 会一直影响所有传感器,因此我希望均匀地调用 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 的一个传感器和多个传感器的采样率不一致。
关于android - Android 上的加速度计、陀螺仪和磁力计之间的样本数不均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138417/