【问题标题】:Generating one location while the phone is not moving在手机不移动时生成一个位置
【发布时间】:2013-01-28 07:02:50
【问题描述】:

我想知道我如何在手机不移动超过 10 米的情况下使用 gps 或网络提供商生成一个位置,这意味着您在家或在同一个地方.

我猜 minTime 参数并不重要(当然是说 requestLocationUpdates 方法),minDistance 是应该产生差异的参数。 我试图将值设置为 100m,但我在我没有移动的情况下不断获取位置(可能 1 米..在我睡觉时进行了测试)所以我不断提高值并在 500 米处停了下来!因为它变得无用了。

也许有一种方法可以检查两个位置之间的距离?或者接收有关手机移动的信息?

【问题讨论】:

  • 您的具体问题是什么?你能把这个具体化吗?无论如何,你看过开发者指南developer.android.com/guide/topics/location/strategies.html 吗?
  • 我把它加粗了,我已经读过这页好几遍了,我仍然无法回答我的问题。
  • “生成一个位置”究竟是什么意思?您想越来越精确地确定您的位置吗?还是您只是想进行一些修复?
  • 我想生成一个位置,如果手机移动超过 50 米以生成另一个位置。这样我就可以在家里用手机移动,只会生成一个位置。如上所述,minDistance 参数不能解决此问题。
  • 我引用的文档给出了一些如何处理这个问题的建议。您应该添加一些逻辑,如果准确性高于前一个位置,则只接受新位置。如果您没有移动,GPS 硬件应该会检测到这一点。为此实现自己的逻辑通常不是一个好主意。

标签: java android


【解决方案1】:

请记住,GPS 精度约为 +/- 20 米。再加上由于环境条件导致的可用卫星信号可能出现的波动,这意味着报告的位置会发生一定程度的变化,即使对于固定设备也是如此。

minDistance 对您不起作用的唯一原因是,它正在为您提供 报告的位置 小于您请求的最小距离的位置。 LocationManager 只能与报告的职位一起工作;它没有其他方法可以确定设备是否真的在移动。

如果您检查您在LocationListener 中获得的数据,并且您可以证明设备忽略了minDistance 参数,请将错误报告给您的设备制造商。另一方面,如果问题是由于 GPS 子系统认为设备正在移动(因此位置差异超过 minDistance)而导致您正在获得修复,那么这是 GPS 和您的硬件的限制,并且存在对此你无能为力。

【讨论】:

  • 可以尝试使用其他传感器来检测运动,但这似乎是一种相当肮脏的解决方法。
  • 我不认为第一种情况是相关的,因为我在 2 台高级设备 Galaxy s3 和 Note 2 上测试了我的应用程序。所以你说的是不可能生成 1 个位置,而手机没有移动更多 X 米(它不必那么准确.. 我什至使用 500m 作为 minDistance 参数)。
  • @ImriPersiado:“我认为第一个案例无关紧要,因为我在 Galaxy s3 和 Note 2 这两个高级设备上测试了我的应用程序。” -- “高级设备”与固件错误无关。
  • @ImriPersiado:“所以你的意思是,当手机没有移动超过 X 米时,不可能生成 1 个位置”——不,我是说你需要查看实际数据来确定您的困难的根源。
  • @ImriPersiado:您查看数据。如果修复之间的距离低于minDistance,则minDistance 将被忽略。 Location 上有一个 distanceTo() 方法,可以方便地告诉您两个 Location 对象之间的距离(以米为单位)。
猜你喜欢
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
相关资源
最近更新 更多