当应用程序和设备中的 Google Play 服务不同时,使用融合位置获取 CurrentLocation 0

Posted

技术标签:

【中文标题】当应用程序和设备中的 Google Play 服务不同时,使用融合位置获取 CurrentLocation 0【英文标题】:Getting CurrentLocation 0 using fused location when google play service is different in app and device 【发布时间】:2017-01-25 08:40:26 【问题描述】:

我正在尝试使用 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 才能获取当前位置..?

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

你可以在这里看到我的代码。Get Current Location 0 in marshmallow where below 23 API its give exact current Location using fused Location

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

据我所知,FusedLocation 是在 Play Service 7.0 中添加的,您发布的那个是 6184738 我猜是 6.1,您可以查看 here all the release changelog,因此它应该适用于具有播放服务的设备7.0或更高版本

【讨论】:

【参考方案2】:

您可能需要查看此文档:Ensure Devices Have the Google Play services APK

Google Play services overview 中所述,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。要了解有关如何构建客户端和处理此类连接错误的更多信息,请参阅Accessing Google APIs

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

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

希望对你有帮助!

【讨论】:

【参考方案3】:

我已将 google play service 版本放到 gradle 中的 7.3 而不是最新版本。

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

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

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

【讨论】:

以上是关于当应用程序和设备中的 Google Play 服务不同时,使用融合位置获取 CurrentLocation 0的主要内容,如果未能解决你的问题,请参考以下文章

模拟器中的 Google Play 服务,实现 Google Plus 登录按钮等

Google Play 的定位服务在“仅限设备”模式下不起作用

设备支持警告:Google play 2019

为啥打开google play就闪退

Flurry 适用于没有 Google Play 服务的 Android 设备

如果没有您的设备以外的 google play 服务,应用程序将无法运行