c# - Windows Phone 加速度计抖动

标签 c# windows-phone-8

我想从 Windows Phone 8 中每 10 毫秒获取一次加速度计读数,但我却观察到一些抖动:读数之间的间距为 8、10、12、9 等。所以大约是 10,但不完全是。

我想知道是否有人可以建议一种获得更可靠读数的方法。

我的代码的核心如下所示:

var accelerometer = Windows.Devices.Sensors.Accelerometer.GetDefault();
accelerometer.ReadingChanged += accelerometer_ReadingChanged;
accelerometer.ReportInterval = 10;

手机报告的 MiminumReportingInterval 为 10,因此应该没问题。我的回调只是将号码添加到列表中,最后我将通过网络发送该列表。

我正在查看 AccelerometerReadingChangedEventArgs.Timestamp 中的时间,我发现间隔并不总是 10 毫秒。以下是最新测量中的时间:105,118,128,134,146,157,163,177,187,198,208,213,232,238,245,255,263,279,285,295,303,313,324,334,345,355,363,37 5,385

那么:我可以做些什么来获得更精确的间隔测量吗?或者这只是这个特定硬件所能做到的最好的?

最佳答案

a great article on Windows Phone Developer Blog其中详细介绍了加速度计。

本文的要点之一是,是的,值流可能而且很可能会“不稳定”,因此您应该实现某种过滤方法。其中一种方法是低通滤波器。

滤波后的数据越平滑,实际变化与读取之间的延迟就会越大。换句话说,如果您在游戏中使用加速度计作为“方向盘”,大量过滤将导致汽车迟转,但不过滤可能会导致汽车抖动。因此,最好的方法是将其设置在两者之间,具体取决于用例。

关于c# - Windows Phone 加速度计抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22029995/

相关文章:

c# - 搜索字符串并替换字符串的部分内容

c# - 用图案替换开关/外壳

visual-studio-2012 - Windows Phone SDK8 安装疑难解答

C# Bouncy CaSTLe 无法解密,异常 : pad block corrupted

c# - 无法在 C# 中将类型 'System.EventHandler' 隐式转换为 'System.Windows.RoutedEventHandler'

c# - 播放SpeechSynthesizer时如何播放IMFMediaEngine背景音频

c# - 生成颜色渐变

c# - 持续运行的服务器

c# - 如何仅搜索和替换完全匹配的字符串

ios - Windows Phone 8中使用Microphone Recorder录制的音频文件无法在iPhone上播放