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

时间:2019-03-26 21:08:22

标签: java android geolocation listener locationmanager

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

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

预先感谢:-)

2 个答案:

答案 0 :(得分:0)

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

  

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

如果以下任何一项为 true ,则认为该应用位于前景中:

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

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

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

答案 1 :(得分:0)

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