问题标签 [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.
java - 如何正确停止 FusedLocationProviderClient?
我FusedLocationProviderClient
在一个Service
.
我想以正确的方式“停止”它。
使用以下代码好吗?
其余代码
android - 使用 Google API 进行后台位置更新 - Fused Location Provider 不准确
我一直在使用GoogleApiClient
基于间隔和位移的更新来处理和测试后台位置更新。经过几天的测试和分析,我发现了一些我没想到的输出变化。
在使用
setInterval
和setFastestInterval
基于间隔的更新时,假设我将间隔设置为15 分钟,最快间隔设置为10 分钟,90% 的时间我在预期的间隔(10 到 15 分钟)内获得更新。但有时我注意到更新所需的时间比指定的间隔要长得多,例如,差异大约是 30 分钟和 60 分钟。关于为什么会有所不同的任何想法?在使用
setMinimumDisplacement
基于距离的更新时,假设我将Displacement设置为200 米,我只在200 米及以上的静止点上获得更新(在旅行时,即使超过 200 米也不会提供更新)。这是它正常工作的方式吗?
我正在使用PendingIntent
位置请求类型,以便BroadcastReceiver
在后台接收位置更新以获取位置更新。
测试时,定位服务开启,定位模式为HIGH_ACCURACY 。
android - 减少获取用户位置的延迟
我正在编写一个应用程序,其中特定模块需要用户的位置。现在我正在使用 Google 的 Fused Location API,可以在这里找到。
当用户设置中的位置被关闭时,问题就出现了。我写了一个提示更改设置的代码。我收到更改后的设置onActivityResult
。但显然,融合的位置提供者需要一些时间来获取位置。我使用该handler.postDelayed
方法在几秒钟后获取位置(这只是猜测)并且代码似乎工作正常。
所以我想问一下,有没有更好的方法来检索位置或减少延迟?
我的代码如下:
android - 使用 FusedLocationProviderClient、JobScheduler 和 JobService 更新位置
我正在尝试使用带有 JobScheduler 和 JobService 的新 FusedLocationProviderClient 创建后台位置跟踪服务。我在这里读过
我们应该requestLocationUpdates (LocationRequest request, PendingIntent callbackIntent)
用于此目的。我在我的 MainActivity 中安排工作,如下所示:
LocationJobService 类:
任何想法如何提供 PendingIntentrequestLocationUpdates
以及如何从中Location
获得onComplete(@NonNull Task<Void> task)
?
android - 如何检测用户何时使用 FusedLocationProviderClient 关闭 GPS?
现在不推荐使用 FusedLocationProvider API,我正在使用 FusedLocationProviderClient,但我找不到如何检测用户何时关闭位置。有这个听众吗?
先感谢您!
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 关于检测到的内存泄漏的输出:
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.
android - 应用程序进入后台时,FusionLocationProvider 未获取位置更新
我正在使用 FusionLocationProviderClient 在后台定期获取位置更新。它工作正常。但是,奥利奥有一些问题。一旦应用程序进入后台,位置更新就会停止。
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
处理是否安全?
我试图找到另一个来源来验证这一点,但失败了,对博客文章底部的半行并不满意,因此在此处发布问题。
android - FusedLocationProviderClient getLastLocation elapsedRealtimeNanos 主要是当前系统时间
更新 2
我在 Google I/O '18 上与一位 Google 工程师进行了交谈。他告诉我,我可以信任 fusedLocationProvider。如果他用新的时间戳标记最后一个已知位置,则用户可能仍在同一位置。
我想在未来用“移动”设备做一些测试来证明这个说法。
原始问题
我正在向 with 请求最后一个已知位置FusedLocationProviderClient
,getLastLocation()
并想检查最后一个已知位置是否早于 5 分钟以开始新的位置请求。
在我的测试过程中,我发现elapsedRealtimeNanos
应该用来比较的位置有一个奇怪的行为。
出于测试目的,我在一个简单的 Java 线程中每秒请求最后一个已知位置。收到位置后,我检查 elapsedRealtimeNanos 并将它们与SystemClock.elapsedRealtimeNanos()
. 在大多数情况下,最后一个已知位置的年龄也设置SystemClock.elapsedRealtimeNanos()
为,因此差值几乎为 0。这意味着,FusedLocationProvider 告诉我最后一个已知位置的修复是现在,这使得年龄检查不可靠。
这种行为很奇怪,但它变得越来越糟。
当我在测试期间启动并行位置请求或启动 Google 地图时,elapsedRealtimeNanos
最后一个已知位置的位置停止增长,并且仅在找到“真实”新位置时更新到较新的时间。这应该是我期望的默认行为。
我在 HIGH_ACCURACY 和 SENSORS_ONLY 等不同的位置设置中观察到了这种行为。
这是否意味着检查最后一个已知位置的年龄是不可能的?谁能解释这种行为?
更新 1
相同的行为location.getTime()
代码片段:
和(我知道它很乱)
位置更新请求