我想就磁力计上的采样率和抖动寻求一些帮助。我正在与一些人一起开展一个涉及高速磁场采样应用的项目。尽管我们已经开发了一种算法来解决我们遇到的抖动和其他问题,但我们希望以某种方式提高采样率,同时,如果可能的话,尝试减少采样抖动。提高采样率将使我们能够为我们的应用程序获得更好的结果。我们使用的是三星 Nexus S,根据我们进行的测试,我们观察到采样率在 15 毫秒到 20 毫秒之间,有时在 50 毫秒左右达到峰值(这是在连续事件之间)。
我们采用了不同的方法来尝试开发这些问题的解决方案,但迄今为止没有任何成功。首先,我们考虑修改当前的磁力计(AK8973)设备驱动程序,但我们很快意识到瓶颈不存在,因为设备驱动程序直接实现了正确的传感器操作模式、数据读取并尊重传感器硬件时序约束。作为第二种选择,我们使用 Android NDK 开发了一个小代码来获取样本,以将在连续事件之间(即样本之间)获得的时间与在 Java 级别开发的代码进行比较。可悲的是,结果几乎相同。作为最后的选择,我们目前正试图了解 API 如何处理事件并将其传递给 Java。也就是说,如果瓶颈在那里,我们' d 尝试更改代码以解决问题。但是,我们不确定瓶颈是在底层硬件还是软件 API 中。
我们用于 NDK 的代码基于 Android 文档 (NativeActivity) 提供的示例以及我们通过谷歌搜索 (google 群组和其他文章) 遇到的一些其他示例。我们发现的文章非常有趣(Native Sampling , Sensor Sampling Performance)。尽管据报道原生采样可以提供更好的性能,但在我们的例子中似乎没有发生。
我们想知道是否真的有可能获得更高的采样率,或者是否有人已经开发了解决方案。瓶颈是在软件层面还是硬件层面?在上面引用的文章中,提到自定义库 (FreeMotion) 能够提供更好的性能结果,作为原始传感器库的替代,因为它直接与驱动程序一起使用。有没有人使用过这个库,如果是,你能提供给我们你的结果吗?