我想检测手机何时在运动,但不是所有的运动。例如拿起或挥动手机不应触发。
理想情况下,我希望在电话/人处于>“步行”状态时运行代码。我有什么选择?
您可以在具有加速度计和数字罗盘的手机中结合使用它们来确定速度和方向。
如果您只需要确定此人是否在行走,那么您只需要加速度计即可。只需处理其输出的脚步声。
网上有很多关于使用加速度计检测脚步的教程。
您还可以从 Wifi-Networks 和 Cell Towers 获取您的位置。Android 中的所有位置提供程序都是android.location.LocationProvider的子类。这可能是一个很好的起点。我不知道其中任何一个最适合您,因为它们的“范围”可能有数百英尺宽。
Android 加速度计为我们提供了使用 SensorEvent 类了解加速度的功能。所以使用类的对象,并处理 onSensorChanged(),来确定设备中的移动。
x = sensorEvent.values[0]; 表示 x 方向的加速度。
因此,您可能感兴趣的是,求 x、y 和 z 方向的加速度,并尝试计算最后 10 个此类样本的平均值和标准差。处理标准偏差肯定会让你找到正确的点!如果它变为 0,则表示设备静止。如果 SD>0.5 超过 15 秒左右......这意味着设备正在持续移动!如果您需要更多帮助,请让我知道!
干杯,尼廷