Android 位置说明
Android Location Clarification
我正在按需定位提供解决方案,但我发现文档太混乱,我找不到最有效的解决方案。
这是我目前的理解:
LocationManager.getLastKnownLocation()
基本上是一种搭载方法。如果没有其他应用启用位置,您的应用将不会 return 位置。
LocationManager.requestLocationUpdates()
,据我所知,这基本上是为位置更新设置了一个侦听器。实际调用的方法是侦听器的“OnLocationChanged()
”。所以从技术上讲,您可以将您的位置显示代码放在 "onLocationChanged"...
如果是这种情况...我如何实际获取更新的位置?我不想在每次位置更改时都得到更新。我想要按需定位,而不是每当它更新时。我将如何实施?
===
我目前的猜测是...设置监听器后,每当您调用 "getLastKnownLocation" 时,它将是您的监听器创建的更新后的监听器。真的吗?是这样吗?
如果您在 phone 上关闭位置然后再打开它,最后知道的位置将 return 为空。
现在开始获取新位置的实际方法是方法
requestLocationUpdates()
这将更新
getLastKnownLocation()
并且在调用 requestLocationUpdates() 时,
onLocationChanged(Location location)
将被调用以调用您需要对位置对象执行的操作。
因此,在此方法中,您可以管理新位置/位置更改。
如果您只想要一个位置,并且只在调用它时使用,请使用 requestSingleUpdate()
。查看有关它的文档 here。请记住,如果您使用 GPS 并且您在建筑物内,可能需要一些时间才能 return 更新位置。
如果您能够使用 Max kpd (How do I get the current GPS location programmatically in Android?) 上面的评论中所示的 GoogleApiClient,那可能是最佳选择。
如果您不想依赖 Google API 可用,我建议您同时使用这两个选项来改善用户体验。初始调用可能为 null 也可能不为 null,但也可能是也可能不是前一段时间。最初,我会调用 getLastKnownLocation,如果它 returns 在您的应用程序中使用它,updating/initializing 界面。
同时,如果您只想要 1 个,请使用 requestSingleUpdate 请求位置更新,如果您想要重复更新,请使用 requestLocationUpdates,以及当 onLocationChanged 在您的侦听器中触发时,更新您在应用程序中使用的位置以及受其影响的界面中的任何内容。
我正在按需定位提供解决方案,但我发现文档太混乱,我找不到最有效的解决方案。
这是我目前的理解:
LocationManager.getLastKnownLocation()
基本上是一种搭载方法。如果没有其他应用启用位置,您的应用将不会 return 位置。
LocationManager.requestLocationUpdates()
,据我所知,这基本上是为位置更新设置了一个侦听器。实际调用的方法是侦听器的“OnLocationChanged()
”。所以从技术上讲,您可以将您的位置显示代码放在 "onLocationChanged"...
如果是这种情况...我如何实际获取更新的位置?我不想在每次位置更改时都得到更新。我想要按需定位,而不是每当它更新时。我将如何实施?
===
我目前的猜测是...设置监听器后,每当您调用 "getLastKnownLocation" 时,它将是您的监听器创建的更新后的监听器。真的吗?是这样吗?
如果您在 phone 上关闭位置然后再打开它,最后知道的位置将 return 为空。
现在开始获取新位置的实际方法是方法
requestLocationUpdates()
这将更新
getLastKnownLocation()
并且在调用 requestLocationUpdates() 时,
onLocationChanged(Location location)
将被调用以调用您需要对位置对象执行的操作。
因此,在此方法中,您可以管理新位置/位置更改。
如果您只想要一个位置,并且只在调用它时使用,请使用 requestSingleUpdate()
。查看有关它的文档 here。请记住,如果您使用 GPS 并且您在建筑物内,可能需要一些时间才能 return 更新位置。
如果您能够使用 Max kpd (How do I get the current GPS location programmatically in Android?) 上面的评论中所示的 GoogleApiClient,那可能是最佳选择。
如果您不想依赖 Google API 可用,我建议您同时使用这两个选项来改善用户体验。初始调用可能为 null 也可能不为 null,但也可能是也可能不是前一段时间。最初,我会调用 getLastKnownLocation,如果它 returns 在您的应用程序中使用它,updating/initializing 界面。
同时,如果您只想要 1 个,请使用 requestSingleUpdate 请求位置更新,如果您想要重复更新,请使用 requestLocationUpdates,以及当 onLocationChanged 在您的侦听器中触发时,更新您在应用程序中使用的位置以及受其影响的界面中的任何内容。