【发布时间】:2014-02-04 03:23:12
【问题描述】:
我设计了一个应用程序,它可以使用加速度计跟踪我何时移动,并且可能会根据我可能达到的各种阈值来振动手机。我面临的问题之一是这种振动会直接破坏加速度计数据。
This 回答建议使用低通滤波器,但我认为这不适用于此应用程序(我需要相对较快的响应时间,并且振动会导致数据出现较大的尖峰)。
我目前使用的解决方案是在手机振动之前将标志设置为 true,调用 postDelayed 函数,该函数将在一定时间(1 秒以内)后将其设置回 false,然后在onSensorChanged 函数,如果标志为真则返回。
换句话说:
isPhoneVibrating = true; // Start to vibrate
phoneVibrator.vibrate(VibratePattern, -1);
mHandler.postDelayed(vibrateSensorOff, 1000); // 1 seconds wait before making false
vibrateSensorOff 只包含
isPhoneVibrating = false;
就像我说的,在 onSensorChanged 函数中,如果标志 isPhoneVibrating 为真,我会返回。
我不喜欢这个解决方案,因为我需要在这个应用程序的各种状态下管理这个额外的标志。还有其他不需要额外标志的可能解决方案吗?
【问题讨论】: