android - 在后台获取准确的中间位置点并计算Android中起始位置和结束位置的距离

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

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

这是我的需求 - 我们正在开发一款跟踪用户行程的应用程序。 该应用程序将开始在后台收集该用户的位置,当用户从应用程序“开始”他的旅行时。后台服务将根据用户在特定时间段内的移动来获取位置。 当用户从应用程序“停止”他的行程时,我们正在计算用户在所有记录位置的帮助下行驶的距离(使用谷歌距离计算 API)。 该应用程序在理想情况下运行良好。 但主要的挑战是—— 在某些情况下,我们无法获取用户的准确位置。影响的场景是 - 没有互联网、2g/3g 的数据计划、GPS 未返回准确数据的某些特定区域等。

不正确的经纬度数据导致不正确的行程距离和路线。这是应用程序的主要问题。

拜托,任何人都可以为此提出最佳替代方案/建议吗? 附言- 我们已经尝试过 GPS、网络、FusedLocationProvider。

编辑 2 --

我们已经根据精度和距离实现了逻辑。得到了更近的点。并且刚刚从谷歌遇到一个有用的 api,它纠正了一些偏离实际道路的位置点。在这里张贴以供其他人引用...

Snap to Roads Api from Google

最佳答案

这是一个复杂的话题。

您必须考虑的一个因素。 Android Oreo 限制了后台服务,你想达到的效果是行不通的。

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

当有人开始旅行时(用户知道),您必须使用前台服务启动持续通知,不要再依赖后台服务了。检查 Google Fit 应用程序中的“开始 Activity ”功能。

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

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

阅读此内容,看看是否对您有帮助。

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

关于android - 在后台获取准确的中间位置点并计算Android中起始位置和结束位置的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45838464/

相关文章:

android - 在gradle中使用Play服务时已经定义了 “theme”属性

android - LocationListener 不提供任何速度更新

android - FusedLocationProviderClient继续显示 “Searching gps”通知

java - 无法实例化 Activity

java - permission.android.MANAGE_USB 在 Jellybean 中有效,但在 Lollipop OS 中无效

php - 运行存储在服务器中的 php 脚本?

java - Android requestLocationUpdates with GPS null

android - 如何在 getMyLocationAddress 方法中的 onLocationChanged 中访问我的当前位置?

java - 我们如何监听 Android 中的位置权限更改(不触发权限请求)?

安卓。提示访问设备的位置