【发布时间】:2015-08-01 15:44:00
【问题描述】:
我正在使用 Google Play 服务来获取用户的当前位置。基本上我使用http://www.androidhive.info/2015/02/android-location-api-using-google-play-services/ 的代码来获取位置。所以这就是我的问题:
1) 我可以毫无问题地在我的 Xperia Mini(运行 ICS)上获取当前用户位置。如果我没有启用 GPS,我会收到(预期)的位置不是那么准确,但我仍然会得到它。如果我启用 GPS,我将(再次,预期)接收到更准确的位置。
2) 但是当我尝试在 Zenfone C (Running KitKat) 上运行我的应用程序时,如果我没有启用定位,我将永远无法获得任何定位。 getLastLocation 和 onLocationChanged 将始终返回 null。只有在我启用位置后,我才能获得位置。但是在我禁用位置并再次尝试 getLastLocation 后,它会再次返回 null。
我的 Zenfone C 上出现的情况让我很困惑,因为据我了解,即使我们没有启用位置/GPS,我们仍然可以从移动网络或 wifi 三角测量中获取当前位置,因为那是我的 Xperia Mini 发生了什么,我认为这应该是所有 Android 设备的标准?或者某些Android设备上的启用位置开/关有其他含义吗?也许在某些设备上,当位置关闭时,我们无法获取位置。这里有人可以解释一下吗?
谢谢
【问题讨论】:
-
定位模式开启时有多种子模式。 UI 在不同的 Android 版本中有所不同。看看这个答案中的截图:stackoverflow.com/a/30580898您是否完全关闭了定位模式,或者您是否在仍有有效位置时禁用了 GPS?
-
嗯,现在无法检查,因为手机目前不在我身边。但是,我假设大多数用户只会使用通知栏上显示的位置切换开关,而不会详细了解实际打开/关闭的内容。假设是这种情况,如果他/她禁用了她的位置,似乎没有万无一失/确定的方法可以在某些手机型号上获得用户的大致位置?
-
定位模式设置为关闭后,设备将无法获取新位置,但有可能在定位模式设置为开启时,一台设备已缓存位置。跨度>
-
@DanielNugent 我想即使关闭 GPS,只要用户仍然打开互联网(移动数据或 wifi),我们应该能够正确获取他/她的位置?
-
不,需要启用网络位置才能从移动数据或 wifi 获取位置。请注意,如果您使用切换按钮,它会启用/禁用网络位置和 GPS。您可以使用子模式仅启用一个