【发布时间】:2019-02-24 02:12:29
【问题描述】:
我正在构建一个应该能够报告用户确切位置的应用程序。只需要一个位置,即我不需要连续跟踪设备。
我希望位置尽可能准确,可以稍等片刻以确定位置(最多 1-2 分钟)。
我一直在查看FusedLocationProviderClient.getLastLocation(),但由于我希望位置尽可能准确和更新,因此它不符合我的需求。
所以我开始考虑改用FusedLocationProviderClient.requestLocationUpdates(),这似乎是一个更好的选择。
但我不确定如何最好地配置我的LocationRequest 以获得尽可能好的准确性。例如,使用setNumUpdates() 会更好,这样我只收到一个更新并将其用作我的位置,还是应该接收多个更新以希望获得更好的准确性(例如,GPS 锁定到更多卫星)?我在想,如果我使用第二种方法,我可以从每个位置更新中查看getAccuracy() 的值,并且只保留最准确的那个。不利的一面是,如果设备正在移动并且我持续接收更新一分钟左右,则第一个位置可能具有最高的准确度,但由于它已有一分钟的历史,因此不再准确。
如上所述,我只需要一个高度准确的位置,如果需要,应用程序可以等待 1-2 分钟。在这种情况下,最好的方法是什么?
【问题讨论】:
-
让它不断更新会增加您获得准确位置的机会,但不能保证。什么被认为是“准确的位置”?如果由于您无法控制的因素而无法获得准确的位置会发生什么,即。不是在一个可以买到好的卫星锁的地方吗?硬件不好或根本不工作的设备怎么办?关闭位置权限的用户怎么办?这些都是你需要考虑的因素
标签: android android-location locationmanager fusedlocationproviderapi android-fusedlocation