问题标签 [fusedlocationproviderclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1972 浏览

java - 如何正确停止 FusedLocationProviderClient?

FusedLocationProviderClient 在一个Service.
我想以正确的方式“停止”它。

使用以下代码好吗?

其余代码

0 投票
2 回答
1975 浏览

android - 使用 Google API 进行后台位置更新 - Fused Location Provider 不准确

我一直在使用GoogleApiClient基于间隔和位移的更新来处理和测试后台位置更新。经过几天的测试和分析,我发现了一些我没想到的输出变化。

  1. 在使用setIntervalsetFastestInterval基于间隔的更新时,假设我将间隔设置为15 分钟最快间隔设置为10 分钟,90% 的时间我在预期的间隔(10 到 15 分钟)内获得更新。但有时我注意到更新所需的时间比指定的间隔要长得多,例如,差异大约是 30 分钟和 60 分钟。关于为什么会有所不同的任何想法?

  2. 在使用setMinimumDisplacement基于距离的更新时,假设我将Displacement设置为200 米,我只在200 米及以上的静止点上获得更新(在旅行时,即使超过 200 米也不会提供更新)。这是它正常工作的方式吗?

我正在使用PendingIntent位置请求类型,以便BroadcastReceiver在后台接收位置更新以获取位置更新。

测试时,定位服务开启定位模式为HIGH_ACCURACY 。

0 投票
0 回答
337 浏览

android - 减少获取用户位置的延迟

我正在编写一个应用程序,其中特定模块需要用户的位置。现在我正在使用 Google 的 Fused Location API,可以在这里找到。

当用户设置中的位置被关闭时,问题就出现了。我写了一个提示更改设置的代码。我收到更改后的设置onActivityResult。但显然,融合的位置提供者需要一些时间来获取位置。我使用该handler.postDelayed方法在几秒钟后获取位置(这只是猜测)并且代码似乎工作正常。

所以我想问一下,有没有更好的方法来检索位置或减少延迟?

我的代码如下:

0 投票
2 回答
3748 浏览

android - 使用 FusedLocationProviderClient、JobScheduler 和 JobService 更新位置

我正在尝试使用带有 JobScheduler 和 JobService 的新 FusedLocationProviderClient 创建后台位置跟踪服务。我在这里读过

我们应该requestLocationUpdates (LocationRequest request, PendingIntent callbackIntent)用于此目的。我在我的 MainActivity 中安排工作,如下所示:

LocationJobService 类:

任何想法如何提供 PendingIntentrequestLocationUpdates以及如何从中Location获得onComplete(@NonNull Task<Void> task)

0 投票
1 回答
231 浏览

android - 如何检测用户何时使用 FusedLocationProviderClient 关闭 GPS?

现在不推荐使用 FusedLocationProvider API,我正在使用 FusedLocationProviderClient,但我找不到如何检测用户何时关闭位置。有这个听众吗?

先感谢您!

0 投票
1 回答
1825 浏览

android - 使用 FusedLocationProviderClient 进行位置更新会产生内存泄漏

我不明白为什么这个非常简单的活动会产生内存泄漏。

它遵循此处给出的准则:https ://developer.android.com/training/location/receive-location-updates.html和此处给出的示例代码:https ://github.com/googlesamples/android-play-location /tree/master/LocationUpdates

我还注意到,如果我不覆盖 LocationCallback 类的 onLocationResult 方法,内存泄漏就会得到解决。但是这样一来,LocationCallback 就完全没用了。

谢谢您的帮助!

这是 LeakCanary 关于检测到的内存泄漏的输出:

0 投票
1 回答
1382 浏览

android - FusedLocationClient doesn't stop searching for gps after request

My FusedLocationProviderClient is not stopping after I call

fusedLocationClient.removeLocationUpdates(locationCallback);

The GPS location icon shows indefinitely in the notification bar until I manually terminate the service.

I am calling stopLocationUpdates in the onDestroy() method as well.

To start it, I am calling:

fusedLocationClient.requestLocatonUpdates(locationRequest, locationCallback, null);

locationCallback being:

Here is stopLocationUpdates():

I can't understand why it doesn't stop.

Any help appreciated.

0 投票
0 回答
126 浏览

android - 应用程序进入后台时,FusionLocationProvider 未获取位置更新

我正在使用 FusionLocationProviderClient 在后台定期获取位置更新。它工作正常。但是,奥利奥有一些问题。一旦应用程序进入后台,位置更新就会停止。

0 投票
1 回答
460 浏览

android - 不再需要手动检查 Google Play 服务版本了吗?

自从我使用 Google Play 服务以来已经有一段时间了,我现在正在实现一个需要位置跟踪的功能。在遵循了一个过时的示例之后GoogleApiClient,我在 Android 开发人员博客上找到了关于新位置 API 的这篇文章:

https://android-developers.googleblog.com/2017/06/reduce-friction-with-new-location-apis.html

引起我注意的是帖子底部写的一句话:

新的 API 会自动为您解决某些连接故障,因此您无需编写代码来提示用户更新 Google Play 服务等。

由于我已经使用GoogleApiAvailabilty我编写了那段代码,我很好奇将其删除并让其FusedLocationProviderClient处理是否安全?

我试图找到另一个来源来验证这一点,但失败了,对博客文章底部的半行并不满意,因此在此处发布问题。

0 投票
2 回答
5663 浏览

android - FusedLocationProviderClient getLastLocation elapsedRealtimeNanos 主要是当前系统时间

更新 2

我在 Google I/O '18 上与一位 Google 工程师进行了交谈。他告诉我,我可以信任 fusedLocationProvider。如果他用新的时间戳标记最后一个已知位置,则用户可能仍在同一位置。

我想在未来用“移动”设备做一些测试来证明这个说法。


原始问题

我正在向 with 请求最后一个已知位置FusedLocationProviderClientgetLastLocation()并想检查最后一个已知位置是否早于 5 分钟以开始新的位置请求。

在我的测试过程中,我发现elapsedRealtimeNanos应该用来比较的位置有一个奇怪的行为。

出于测试目的,我在一个简单的 Java 线程中每秒请求最后一个已知位置。收到位置后,我检查 elapsedRealtimeNanos 并将它们与SystemClock.elapsedRealtimeNanos(). 在大多数情况下,最后一个已知位置的年龄也设置SystemClock.elapsedRealtimeNanos()为,因此差值几乎为 0。这意味着,FusedLocationProvider 告诉我最后一个已知位置的修复是现在,这使得年龄检查不可靠。

这种行为很奇怪,但它变得越来越糟。

当我在测试期间启动并行位置请求或启动 Google 地图时,elapsedRealtimeNanos最后一个已知位置的位置停止增长,并且仅在找到“真实”新位置时更新到较新的时间。这应该是我期望的默认行为。

我在 HIGH_ACCURACY 和 SENSORS_ONLY 等不同的位置设置中观察到了这种行为。

这是否意味着检查最后一个已知位置的年龄是不可能的?谁能解释这种行为?

更新 1

相同的行为location.getTime()

代码片段:

和(我知道它很乱)

位置更新请求