我的应用程序有一张地图,当用户长按时,我需要当前的手机位置才能显示在地图上。作为@Chen advised,看起来getCurrentLocation()是在我的情况下使用的正确方法。请注意,我不想使用LocationListener,因为我希望用户可以控制何时更新其位置。
此外,我选择了这个手动位置更新,因为@ Shai-Almog discouraged location polling。因此,在阅读此post后,我首先将超时设置为20秒,如下所示,以获取当前的电话位置:
Dialog ip = new InfiniteProgress().showInifiniteBlocking();
Location currentLocation = locationManager.getCurrentLocationSync(
ParametresGeneraux.LOCATION_TIMEOUT_MILLI);
// We try to get something
if (currentLocation == null) {
currentLocation = locationManager.getLastKnownLocation();
}
ip.dispose();
但这还不够,最后一个已知位置是#34;总是"提供(虽然小位置图标出现在工具栏中,但我连续5次都没算)。所以我把它设置为40秒,但实际的当前位置也没有在这两倍大的时间之后(仅提供距离> 2km的最后已知位置)。
但是,如果我在Android(KitKat)上启动Google地图,则该位置即时准确。然后如果我回到我的应用程序并按下地图,则会找到当前位置。实际上我发现post处理谷歌地图和Android API之间的准确性差异,但它与上/中国有关,而不是欧盟(法国)。
因此我的问题有两个:
首先,如何在Google地图和Codename One之间的相同设备上产生如此巨大的差异?
然后,如果我没有设置超时getCurrentLocation()
,当用户厌倦等待时,如何中断位置搜索?
任何帮助表示赞赏,
BR
答案 0 :(得分:1)
如果启用了Google地图位置服务,则即时位置将起作用。如果您启用或禁用了android.playService
构建提示之一,则还必须启用android.playService.location=true
以获取地图使用的快速位置服务。