android检查位置服务启用播放服务位置api

您可以确定是否有任何提供商可以使用LocationManager,但是可以使用Google Play服务位置API来完成吗?

当什么都没有启用,实际上“访问我的位置”是closures的,所有的API调用(connect(),requestLocationUpdates())都成功了,但是你永远不会得到onLocationChanged()。

似乎很愚蠢,必须同时使用LocationManager和LocationClient。

我想我需要的是一些方法来知道onLocationChanged(0 永远不会被调用。

Solutions Collecting From Web of "android检查位置服务启用播放服务位置api"

我梳理了文档,也没有find任何方式使用LocationClient来检测位置服务是否启用。 onConnected,onDisconnected和onConnectionFailed似乎没有链接到位置服务是否启用。

我目前正在使用LocationClient执行位置请求,但使用旧的locationManager.isProviderEnabled(String provider)方法来检测位置服务是否已启用。 这对我来说是最合适的,因为即使LocationClient确实提供了一种方法,但它并不区分GPS和networking,我真的希望能够请求用户启用GPS。

 if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { //GPS Provider disabled return false; } 

现在有一个可靠的方法来检测自Google Play Services 7.3.0以来是否有位置更新:

实现并注册LocationCallback并覆盖onLocationAvailability()或调用LocationServices.FusedLocationApi.getLocationAvailability()来检索可用性状态。 如果它是错误的,那么你知道位置更新不会被传递,除非设备configuration中有所改变。

这种方法实际上非常聪明:例如,即使networking位置提供程序始终处于启用状态,但如果禁用WiFi或设备处于飞行模式,则可以确定没有位置更新将在仅限WiFi的设备上传送。

Google Play Services 7.0 引入了一个Settins Api ,您可以在其中询问您需要的位置设置,然后查询是否已启用或要求用户启用它们。