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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android检查位置服务启用播放服务位置api相关的知识,希望对你有一定的参考价值。

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

如果没有启用任何内容,实际上“访问我的位置”已关闭,所有API调用(connect(),requestLocationUpdates())都会成功,但您永远不会获得onLocationChanged()。

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

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

答案

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

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

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

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

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

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

另一答案

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

另一答案

这适合我。在亚马逊平板电脑设备和三星s7上测试过

 if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS) {
            //Google Play services are available
    } else {
            //Google Play services are not available on this device
    }

以上是关于android检查位置服务启用播放服务位置api的主要内容,如果未能解决你的问题,请参考以下文章

明确识别是不是在后台启用了android服务位置和gps

如何在android中以编程方式启用位置访问?

位置错误“谷歌播放服务不可用”,反应原生

在不使用 Play Services API 的情况下启用位置/GPS 设置

查找位置:Google Play 位置服务或 Android 平台位置 API

查找位置:Google Play 位置服务或 Android 平台位置 API