在背景中获取准确的中间位置点,并计算Android中起始位置和结束位置的距离

时间:2017-08-23 11:27:46

标签: android android-location android-gps android-fusedlocation

关于这个话题可能有类似的问题,但我需要你对某些特定要求的想法和建议。

这是我的需要 - 我们正在开发一个跟踪用户旅行的应用程序。 应用程序将开始在后台收集该用户的位置,当用户从App.Background Service“开始”他的旅程时,将根据用户在特定持续时间内的移动来获取位置。 当用户“从应用程序停止”他的行程时,我们正在计算用户在所有记录位置的帮助下行进的距离(使用Google距离计算API)。 该应用程序在理想情况下工作正常。 但主要的挑战是 - 在某些情况下,我们无法获取用户的准确和精确位置。影响的场景是 - 没有互联网,2g / 3g的数据计划,GPS没有返回准确数据的某些特定区域等。

lat-long的错误数据会导致错误的行程距离和路线。这是App的主要问题。

请,任何人都可以建议最好的选择/建议吗? 附: - 我们尝试过GPS,网络,FusedLocationProvider。

编辑2 -

我们已经在准确性和距离的基础上实现了逻辑。更接近点。而且刚刚遇到一个来自谷歌的有用api,它纠正了一些与实际道路分散注意力的位置点。在此发布以供其他人参考......

Snap to Roads Api from Google

3 个答案:

答案 0 :(得分:2)

这是一个复杂的话题。

你必须考虑的一个因素。 Android Oreo限制后台服务,您想要实现的目标不会起作用。

我会这样做(这是goolge的推荐)

当有人开始旅行时(用户意识到这一点),您必须使用前台服务启动正在进行的通知,不再依​​赖后台服务。检查功能"开始活动"在Google Fit App中。

至于没有信号或准确的GPS,那么......这是一个地理问题!,你无能为力。或者,也许你可以使用LocationProvider。

FusedLocationProvider融合在每个请求位置更新的应用中。

阅读本文,看看是否对您有帮助。

https://developer.android.com/guide/topics/location/strategies.html

答案 1 :(得分:1)

尝试混合GPS和加速度计

如果您检测到GPS停止工作,请打开加速度计。如果再次打开GPS,请再次计算距离。通过这种方式,您可以拥有GPS部件和加速计的路线。 GPS部件越大,数据就越准确

答案 2 :(得分:1)

How to get more accuracy by GPS_PROVIDER

基本上,如果某个地点的准确性不可接受,请将其丢弃。下一个会更好。