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

use*_*322 25 android location google-play-services

您可以确定是否有任何提供程序可用于LocationManager,但是可以使用google play services location api完成吗?

当没有被启用,其实"访问我的位置"功能关闭,所有的API调用(连接(),requestLocationUpdates())成功,但你永远不会得到一个onLocationChanged().

看起来很傻,必须同时使用LocationManager和LocationClient.

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

Kri*_*ena 26

我已经梳理了文档,也没有找到任何方法来使用LocationClient来检测是否启用了位置服务.onConnected,onDisconnected和onConnectionFailed似乎与是否启用了位置服务无关.

我目前正在使用LocationClient进行位置请求,但使用旧locationManager.isProviderEnabled(String provider)方法来检测是否启用了位置服务.这对我来说是最佳的,因为即使LocationClient确实提供了一种方式,它也没有区分GPS和网络,我真的希望能够请求用户启用GPS.

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //GPS Provider disabled
    return false;
}
Run Code Online (Sandbox Code Playgroud)

  • `if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER)|| lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){}`我认为这是最完整的方法. (5认同)
  • 谢谢 - 也许谷歌的人会看到这个并修复它 (2认同)

Bla*_*der 12

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

实现并注册LocationCallback并覆盖onLocationAvailability()或调用LocationServices.FusedLocationApi.getLocationAvailability()以检索可用性状态.如果它是错误的,那么您知道除非设备配置发生变化,否则不会传递位置更新.

这种方法实际上非常智能:例如,如果WiFi被禁用或设备处于飞行模式,即使始终启用网络位置提供程序,它也能够确定在仅WiFi设备上不会传送位置更新.