应用程序在所有情况下的位置感知

Posted

技术标签:

【中文标题】应用程序在所有情况下的位置感知【英文标题】:App location awareness in all contexts 【发布时间】:2018-05-28 16:13:18 【问题描述】:

我需要让我的应用了解用户在 FG 和 BG 中运行的所有活动、片段和服务中的位置。此外,在中国也必须有位置,因此 Google Play 服务的 FusedLocation 似乎不是一个选项。

有没有一种方法可以让应用在不考虑上下文的​​情况下感知位置变化,而无需在每个 act/frag/serv 中创建侦听器并在生命周期中附加和分离?

【问题讨论】:

【参考方案1】:

听起来你想extend the application class。通过这样做,可以公开全局变量和方法。抱歉,对于您的特定情况,该链接不是一个很好的示例,也许您可​​以找到更好的示例。更新清单中的标签 android:name=MyExtendedApplicationClass

【讨论】:

应用程序在后台运行时是否也可用? 好点。您可以使用aidl 接口与服务进行通信,但这会复杂化而不是简化。 ***.com/questions/12381977/… 或从服务中获取应用程序上下文? Google location api是从ui线程调用的,对吗?所以我认为你不会有问题,但我可能是错的。无论如何都要考虑一下。【参考方案2】:

对于您可以使用的中国地图, https://www.mapbox.com/。

注意:他们在 Play 商店中有一个测试应用,在使用 SDK 之前检查一下。

要让您的应用在不使用样板代码的情况下感知位置,请查看 android 中的绑定服务。这些基本上是在后台运行的服务,并从它们启动的任何位置提供输出。

查看android开发文档Bound Services中的代码示例。

您可以拥有一个可以访问位置绑定服务的 BaseActivity。您剩余的活动可以从这个 BaseActivity 继承。我希望您能够弄清楚其余的问题,因为您的问题的确切代码太大而无法作为答案发布。

【讨论】:

以上是关于应用程序在所有情况下的位置感知的主要内容,如果未能解决你的问题,请参考以下文章

后台模式下的 iOS 区域监控

在 iPhone 上构建“查找最近”位置感知应用程序的最佳方法是啥?

在启动时在iOS中启动位置感知后台服务

iOS - 地图应用程序与其他位置感知的第三方应用程序

iBeacon 技术将位置感知应用程序访问权限带入锁定屏幕

机器人学 —— 机器人感知(Location)