【问题标题】:Android location listener in Application background应用程序后台的Android位置监听器
【发布时间】:2019-08-17 08:54:54
【问题描述】:

我想在我的应用程序中实现一个位置监听器,它会在后台运行,即使应用程序关闭也是如此。我发现了很多实现位置监听器的结果,但我仍然感到困惑。

我的用例是以所有可能的方式获取位置,无论是 GPS、网络提供商还是任何其他方式。应用需要在后台定期更新位置

我找到了一个类似于下面的示例来获取精确位置:

    LocationManager lm = getSystemService(Context.LOCATION_SERVICE);
    LocationListener ll = new mylocationlistener();
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

以下链接中的更多示例:

https://zgrepcode.com/examples/android/android/location/locationmanager-implementations

这不是很准确,监听器没有在后台服务中工作。

那么这是在后台获取位置的最佳方式吗?我发现的大多数帖子看起来都很旧,我们有更好的方法在较新的 API 中实现后台位置侦听器吗?

我在 StackOverflow 上搜索了相同的内容,但没有找到任何相关的帖子,如果有回答相同问题的帖子,请分享链接。或者让我知道实现它的最佳方法是什么。

提前致谢:-)

【问题讨论】:

    标签: java android geolocation listener locationmanager


    【解决方案1】:

    应用只能每小时接收几次位置更新。谷歌对这些信息非常保护。还有主动 GPS,会消耗大量电池,因此如果手动完成,AGPS 可能是更好的选择。

    每小时仅向后台应用提供几次位置更新。

    如果以下任何一项为 true,则认为应用处于 前台

    • 它有一个可见的活动,无论活动是启动还是暂停。
    • 它有一个前台服务。
    • 另一个前台应用程序连接到该应用程序,方法是绑定到其服务之一或使用其内容提供程序之一。例如,如果前台应用绑定到另一个应用中的以下任何组件,则该其他应用被视为处于前台、输入法编辑器 (IME)、壁纸服务、通知侦听器、语音或文本服务。

    如果这些条件都不为真,则应用程序被认为在后台。

    考虑使用FusedLocationProviderClient,但这依赖于Google Play 服务。这是最好的选择。你可以read more about it here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      相关资源
      最近更新 更多