您可以确定是否有任何提供商可以使用LocationManager,但可以使用google play服务位置api吗?所有API调用(connect(),requestLocationUpdates())都会成功,但您永远不会获得onLocationChanged()。安卓支票位置服务已启用播放服务位置api
似乎很难使用LocationManager和LocationClient。
我想我需要的是一些方法来知道onLocationChanged(0将永远被调用。
您可以确定是否有任何提供商可以使用LocationManager,但可以使用google play服务位置api吗?所有API调用(connect(),requestLocationUpdates())都会成功,但您永远不会获得onLocationChanged()。安卓支票位置服务已启用播放服务位置api
似乎很难使用LocationManager和LocationClient。
我想我需要的是一些方法来知道onLocationChanged(0将永远被调用。
我梳理了文档,也没有发现任何方式使用LocationClient来检测,如果位置服务已启用onConnected,onDisconnected和onConnectionFailed似乎并未链接到是否启用位置服务
我目前正在使用LocationClient执行位置请求,但使用旧的locationManager.isProviderEnabled(String provider)
方法来检测位置服务服务已启用,这对我来说是最合适的,因为即使LocationClient确实提供了一种方式,也没有d GPS和网络之间的消失,我真的很想要求用户启用GPS。
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//GPS Provider disabled
return false;
}
现在有检测位置是否有更新可用,因为谷歌播放服务7.3.0的可靠方式:
实现并注册一个LocationCallback
并覆盖onLocationAvailability()
或致电LocationServices.FusedLocationApi.getLocationAvailability()
取回可用状态。如果它是错误的,那么你知道位置更新不会被传递,除非设备配置中有所改变。
这种方法实际上非常聪明:例如,如果WiFi被禁用或设备处于飞行模式,即使网络位置提供商能够确定没有位置更新将在仅WiFi设备上传送始终启用。
返回位置数据的可用性。当isLocationAvailable()返回true时,getLastLocation(GoogleApiClient)返回的位置将在活动LocationRequests指定的提示内合理更新。 据我了解,显示是否有一些位置数据当前可用,而不是位置服务是否启用。 – lujop
Google Play Services 7.0 introduced a Settins Api您可以在其中询问您需要的位置设置,然后查询是否启用或要求用户启用它们。
谢谢 - 也许有人从谷歌会看到这个并修复它 – user1248322
我觉得这很奇怪! – Bear
'if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER)|| lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){}'我认为是最完整的方法。 Doc说: – Diolor