[我知道这与 2010 年提出的问题重复,但该问题从未真正得到答案]
我正在将我的一些 Windows Phone 应用程序转换为 Android。这些应用程序都围绕运动跟踪。在 WP7 中,位置观察器有一个“MovementThreshold”属性,用于设置 GPS 需要多少移动才能触发移动事件。通常,我们希望步行时的阈值较低,而在喷气式飞机中的阈值较高。它可以通过这样的代码进行节流,如果速度发生变化,每次我们移动时都会改变它。
if (mph < 7) watcher.MovementThreshold = 5;
else if (mph < 15) watcher.MovementThreshold = 20;
else if (mph < 30) watcher.MovementThreshold = 100;
else if (mph < 50) watcher.MovementThreshold = 400;
else if (mph < 100) watcher.MovementThreshold = 800;
else if (mph < 120) watcher.MovementThreshold = 1200;
else if (mph < 200) watcher.MovementThreshold = 2400;
else if (mph < 400) watcher.MovementThreshold = 4800;
else watcher.MovementThreshold = 9000;
目前在我的应用程序的 Android 版本中,当我的位置服务启动时,我会进行以下调用... locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locLstnr);
第三个参数是 minDistance(现在设置为零),听起来很像 WP7 中的 MovementThreshold。
我的第一个问题是:我可以像在我的 WP7 应用中限制 MovementThreshold 一样限制我的 Android 应用中的 minDistance 吗?我的第二个问题是:什么样的调用最有效地进行节流?- 我会重复上述 requestLocationUpdates 调用更改 minDistance 参数吗?谢谢,加里