0

我正在尝试使用 Fusedlocationservice 获取当前位置。

在我的 gradle 文件中,我把 playservice 版本放在下面

compile 'com.google.android.gms:play-services:9.4.0'

现在,如果设备中有最新版本的 google playservice,那么它运行良好。它给出了适当的位置。

但是,如果设备的版本较低,则它不会给出当前位置。

它还在 logcat 中给出警告,如下所示:

W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9452000 but found 6184738

因此,必须在设备中安装最新版本的 playservice 才能获取当前位置..?

如果是,那么我需要为此使用备用网络解决方案。因为每个用户都无法更新设备中的服务。

我的代码你可以在这里看到。获取棉花糖中的当前位置 0,其中 23 API 以下使用融合位置给出准确的当前位置

任何帮助将不胜感激。

4

3 回答 3

0

据我所知,FusedLocation 是在 Play Service 7.0 中添加的,而您发布的那个是6184738我猜是 6.1,您可以在此处查看所有发布更改日志,因此它应该适用于具有 Play Service 7.0 或更高版本的设备

于 2016-09-17T06:54:01.943 回答
0

您可能需要查看此文档:确保设备具有 Google Play 服务 APK

Google Play 服务概述中所述,Google Play 通过 Google Play Store 应用为 Android 2.3 及更高版本的用户提供服务更新。但是,更新可能不会立即到达所有用户,因此您的应用应在尝试执行 API 事务之前验证可用版本

强烈建议您使用该GoogleApiClient课程来访问 Google Play 服务功能。这种方法允许您将OnConnectionFailedListener对象附加到客户端。要检测设备是否具有适当版本的 Google Play 服务 APK,请实现onConnectionFailed()回调方法。如果由于缺少或过期的 Google Play APK 版本而导致连接失败,则回调会收到错误代码,例如SERVICE_MISSINGSERVICE_VERSION_UPDATE_REQUIREDSERVICE_DISABLED。要了解有关如何构建客户端和处理此类连接错误的更多信息,请参阅访问 Google API

另一种方法是使用isGooglePlayServicesAvailable()方法。onResume()您可以在主活动的方法中调用此方法。如果结果代码为SUCCESS,则表明 Google Play 服务 APK 是最新的,您可以继续建立连接。但是,如果结果代码是SERVICE_MISSINGSERVICE_VERSION_UPDATE_REQUIREDSERVICE_DISABLED则用户需要安装更新。在这种情况下,调用该getErrorDialog()方法并将结果错误代码传递给它。该方法返回Dialog您应该显示的内容,它提供有关错误的适当消息并提供将用户带到 Google Play 商店以安装更新的操作

注意:由于很难预测每台设备的状态,因此在访问 Google Play 服务功能之前,您必须始终检查兼容的 Google Play 服务 APK。

希望能帮助到你!

于 2016-09-18T16:28:01.177 回答
0

我在 gradle 中将google play 服务版本改为7.3 ,而不是最新版本。

因为每个用户都没有最新版本的播放服务,所以如果你把最新版本的播放服务放在应用程序中,如果设备有较低版本的播放服务,它总是取空位置。否则用户必须更新播放服务以匹配应用程序播放服务版本。

所以我在应用程序中放置了较低版本的 playservice。构建,使其支持每个具有相同或更高版本的设备。

从 doc 获得参考。https://developers.google.com/android/guides/setup#ensure_devices_have_the_google_play_services_apk

于 2016-09-19T04:23:37.457 回答