繁体   English   中英

应用程序后台的Android位置监听器

[英]Android location listener in Application background

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

我的用例是以所有可能的方式获取位置,无论是 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 上搜索了相同但没有找到任何相关帖子,如果有回答相同问题的帖子,请分享链接。 或者让我知道实现它的最佳方法是什么。

提前致谢 :-)

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

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

一个应用程序被认为是在前台 ,如果以下任一为

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

如果所有这些条件都不成立,则认为该应用程序处于后台。

考虑使用FusedLocationProviderClient ,但是它依赖于Google Play服务 这是最好的选择。 您可以在这里了解更多信息

我使用Jobscheduler制作了一个应用程序。 工作正常。 但是,当其他应用程序(例如)导航sw正在使用位置管理器时,就会发生冲突。 我现在正在寻找解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM