android-getLastKnownLocation不是实际位置

android-getLastKnownLocation不是实际位置,第1张

概述在我的应用程序中,我将AlarmManager设置为每隔一段时间运行一次IntentService,以对我的服务器进行WebService调用,以发送您的当前位置警报启动时,我还将启动一个具有LocationManager的服务,以在本地跟踪位置.当我对服务器进行Web服务调用时,我使用locationManager=(LocationM

在我的应用程序中,我将AlarmManager设置为每隔一段时间运行一次IntentService,以对我的服务器进行WebService调用,以发送您的当前位置

警报启动时,我还将启动一个具有LocationManager的服务,以在本地跟踪位置.

当我对服务器进行Web服务调用时,我使用

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);        Criteria criteria = new Criteria();        criteria.setAccuracy(Criteria.ACCURACY_FINE);        String provIDer = locationManager.getBestProvIDer(criteria, true);        Location lastKNownLocation = locationManager.getLastKNownLocation(provIDer);

因为我只需要该时间点的位置,下一次再次调用该Web服务时,我才需要再次获取它.但是,即使我在后台运行的服务使用GPS并获得正确的位置,它也会出现,

locationManager.getLastKNownLocation(provIDer);

当我使Web服务获取位置时,它给了我一个过时的位置,而不是当前位置.现在我想,因为我已经有一个运行在另一个服务中的locationmanager,所以每次调用onLocationChanged时,getLastKNownLocation都会被更新到正确的位置,但是显然不是这种情况,这对我来说毫无意义.

所以现在我的问题是如何才能在我的IntentService中获得正确的位置,因为我不能依赖getLastKNownLocation

我不需要每次更改位置都知道位置,我只需要知道在进行Web服务调用时的位置,因此启动另一个位置管理器似乎不是一个好主意.我唯一能想到的解决方案是将其他服务中的位置存储在SharedPreferences中,然后仅抓取其中的任何内容,但这似乎有点Hacky,但我不喜欢Hacky.

有任何想法吗?

解决方法:

androID的最后一个已知位置仅在任何应用请求位置时才更新(应用可以是您的,也可以是设备上的其他任何位置).您必须实现位置侦听器,然后使用locationmanger.requestLocationUpdates(provIDer,minTime,mindistance,locationListener)来请求位置更新. AndroID系统将根据您的请求获取位置更新,并为所有要使用的应用设置lastKNownLocation.

我能想到未设置lastKNownLocation的唯一原因是androID系统无法获取位置.检查是否已启用请求位置更新的提供程序.您也可以使用被动提供程序在其他应用程序的位置请求上requests带,并仅在特定超时时间内没有更新时才主动寻找位置(这种方法应该比不断尝试获取昂贵的位置更新更好).

总结

以上是内存溢出为你收集整理的android-getLastKnownLocation不是实际位置全部内容,希望文章能够帮你解决android-getLastKnownLocation不是实际位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1074849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存