Articles of google play services

如何将Google Play服务修订与安装版本相匹配?

Android SDK Manager今天早上通知我有一个新的Google Play Services版本要下载:版本18.那么如何在build.gradle文件中find相应的长版本号呢? 我的所有测试设备都运行5.0.84版本,所以我尝试更新 compile ‘com.google.android.gms:play-services:4.4.52’ 至 compile ‘com.google.android.gms:play-services:5.0.84′ 但是这导致了一个错误: Gradle’MyApp’项目刷新失败:找不到com.google.android.gms:play-services:5.0.84。 要求: {我的应用} Gradle设置 我正在运行Android Studio 0.5.2并为API19构建(我尚未升级到Android L / API20):也许这就是问题所在? 但一般来说, 如何将SDK Manager(例如18)中显示的修订号与build.gradle的版本代码(例如5.0.84)相匹配? 这是我的完整build.gradle,以防它有帮助: apply plugin: ‘android’ android { compileSdkVersion 19 buildToolsVersion “19.1.0” defaultConfig { minSdkVersion 14 targetSdkVersion 19 versionCode 1 versionName “1.0” } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.txt’ […]

Google Play服务返回使用非Google密钥签名的令牌

我有一个Android客户端通过GoogleAuthUtil.getToken(Context context, Account account, String scope)从Google Play服务获取身份validation令牌。 然后将其发送到后端(Go)服务器,该服务器检查该令牌是否来自https://www.googleapis.com/oauth2/v1/cert中的一个Google签名证书。 为此,它需要在令牌头中查找分配给“kid”的证书。 99%的情况下,这很好用,但我经常会遇到“孩子”与任何已发布的Google证书不对应的情况,因此我无法授权令牌。 编辑: 我在服务器上添加了大量的日志记录来尝试跟踪它,并且有一些关系值得注意: 任何给定的无效kid仅用于单个用户。 我经常会在几天内看到来自同一用户的多个请求,其中包含一个给定的无效kid ,但只有该用户才会看到。 给予无效kid用户从不使用有效的kid用于任何请求,或者任何其他kid用于请求,即使他们相隔数天。 Afaik Google每24小时左右循环一次证书。 许多用户使用较旧的客户端版本。 大多数用户在发布新版本的一两天内升级,但大多数使用无效证书密钥的用户都使用几周前的版本。 这些要求来自全球各地,与我们的用户群一致。 这些要求来自我们的用户群。 这些请求来自各种设备,制造商和型号。 我目前的想法是,它可能来自从谷歌播放以外的网站下载APK的用户,但我现在无法validation这一点。 编辑:有一个问题跟踪器,但它似乎已被标记为低优先级。 如果有人遇到此问题,请在跟踪器上告知。 https://issuetracker.google.com/issues/37734997

错误:包含名称为com.google.android.gms.license的多个库

当我尝试运行命令ionic cordova build android out error作为上面的标题。 然后我尝试删除其中一个gms ,当我再次构建删除它再次出现。 怎么解决这个? 这是我的build.gradle依赖build.gradle : dependencies { compile fileTree(dir: ‘libs’, include: ‘*.jar’) // SUB-PROJECT DEPENDENCIES START debugCompile(project(path: “CordovaLib”, configuration: “debug”)) releaseCompile(project(path: “CordovaLib”, configuration: “release”)) compile “com.google.android.gms:play-services-auth:+” // i remove this compile “com.google.android.gms:play-services-identity:+” compile “com.facebook.android:facebook-android-sdk:4.+” // SUB-PROJECT DEPENDENCIES END }

融合位置提供程序意外行为

这是我注册我的应用程序以接收位置更新的方式: mLocationRequest = LocationRequest.create(); mLocationRequest.setInterval(Consts.ONE_MINUTE * 10); mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); mLocationRequest.setFastestInterval(Consts.ONE_MINUTE); Builder builder = new GoogleApiClient.Builder(context); builder.addApi(ActivityRecognition.API); mGoogleApiClient = builder.addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); mGoogleApiClient.connect(); …. …. @Override public void onConnected(Bundle connectionHint) { LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, locationUpdatespendingInent); } 我的待处理意图几乎在确切的请求间隔内在后台调用了…… 到现在为止还挺好。 问题:当WIFI被禁用/未连接到任何网络,或者没有启用3G / 4G网络数据时 – 融合位置提供商不提供新的位置更新!! 我的位置访问设置已打开,并且会检查GPS卫星和WI-FI以及移动网络位置。 更大的问题:有时在这种情况下,我确实通过待定意图接收位置更新回调,但是它知道的最后一个位置(即使它是一小时前,我很久以前离这个地方很远) 根据PRIORITY_BALANCED_POWER_ACCURACY的文档: 与setPriority(int)一起使用以请求“块”级别准确性。 块级精度被认为是大约100米的精度。 使用诸如此类的粗略精度通常会消耗更少的功率。 我期待融合位置提供商在没有其他选择的情况下打开GPS,或者如果他没有任何选择,至少不会提供新的位置更新。 另一个不可预测和令人不安的问题: 我将PRIORITY_BALANCED_POWER_ACCURACY更改为PRIORITY_HIGH_ACCURACY以查看其行为(24小时)。 所有间隔保持不变(更新之间间隔10分钟)。 即使在没有网络/ SIM卡的手机中也确实收到了准确的位置,但是 – 电池耗尽快! 当我查看电池历史时,我惊讶地发现GPS收音机一直处于全传输模式! […]

如何使用Google Play服务中的新条形码API捕获条形码值?

我一直在玩新的Google Barcode API中的示例代码。 它将条形码和条形码值叠加在条形码的实时相机上。 (也面临) 我无法告诉如何将条形码值返回到我的应用程序。 A)如何判断检测事件何时发生以及B)如何访问ravValue以便在我的应用程序的其他部分中使用。 有人能帮忙吗? https://developers.google.com/vision/multi-tracker-tutorial https://github.com/googlesamples/android-vision 更新:在@ pm0733464的答案的基础上,我在Tracker类中添加了一个回调接口(称为onFound),我可以在Activity中访问该接口。 调整Google多跟踪器示例: GraphicTracker : class GraphicTracker extends Tracker { private GraphicOverlay mOverlay; private TrackedGraphic mGraphic; private Callback mCallback; GraphicTracker(GraphicOverlay overlay, TrackedGraphic graphic, Callback callback) { mOverlay = overlay; mGraphic = graphic; mCallback = callback; } public interface Callback { void onFound(String barcodeValue); } @Override […]

Android上使用OAuth2.0的Youtube Data API

我正在尝试在Android上使用带有OAuth 2.0身份validation的YouTubeData API,我正在努力解决它。 我在网上搜索了很多,但对Android实现没什么帮助。 首先,我不清楚获得OAuth令牌的最佳方法是什么。 在文档中,他们建议Android使用Google Play服务库获取它更好。 真的吗? 如果是,则按照本指南进行操作应该非常简单: https : //developers.google.com/android/guides/http-auth 。 但此时我将在String对象中使用令牌..我应该如何将它与YouTubeData API一起使用? 我应该把它放在YouTube.Builder某个地方吗? YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() { public void initialize(HttpRequest request) throws IOException { } }).setApplicationName(“AppName”).build(); 如果有,有谁知道在哪里? 在StackOverflow上搜索我遇到了这个问题: 获取Auth Token后的操作 – Android Youtube API 。 Ibrahim Ulukaya表示,最好使用GoogleAccountCredential 。 根据我的理解( 访问Google API – GoogleAccountCredential.usingOAuth2与GoogleAuthUtil.getToken() ),Android版GoogleAccountCredential应使用Google Play服务库提供的GoogleAuthUtil ,因此简化此过程非常有用。 我看过Ibrahim […]

无法解析com.google.android.gms play-services-auth:11.4.0

我想在Android项目中为Android FirebaseUI – Auth编写代码但是从最近两天开始,我在当前代码中遇到错误,不知道如何解决它。 努力但却没有以正确的方式发生。 这是我的build.gradle(项目:FriendlyChat) // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() mavenLocal() } dependencies { classpath ‘com.android.tools.build:gradle:2.2.2’ // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath ‘com.google.gms:google-services:3.0.0’ } } allprojects { […]

为什么在包含Google Play服务库时,权限会自动添加到我的AndroidManifest中

我注意到当我在build.gradle文件中使用以下内容时,会自动添加以下权限 compile ‘com.google.android.gms:play-services:7.5.0′ 早期版本的播放服务不会出现这种情况。 有没有人有解决方案来删除这些不需要的权限? 我只使用广告function(INTERNET和ACCESSNETWORK_STATE)。 我不需要LOCATION和USE_CREDENTIALS权限。 你如何删除这些不需要的权限? 我注意到’manifest-merger-xxx-debug-report.txt’文件包含以下内容 … MERGED from com.google.android.gms:play-services-maps:7.5.0:22:5 android:name ADDED from com.google.android.gms:play-services-maps:7.5.0:22:22 uses-permission#android.permission.ACCESS_COARSE_LOCATION ADDED from com.google.android.gms:play-services-maps:7.5.0:23:5 MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5 MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5 MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5 android:name ADDED from com.google.android.gms:play-services-maps:7.5.0:23:22 uses-feature#0x00020000 ADDED from com.google.android.gms:play-services-maps:7.5.0:24:5 MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5 MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5 MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5 android:glEsVersion ADDED from com.google.android.gms:play-services-maps:7.5.0:25:8 android:required ADDED from com.google.android.gms:play-services-maps:7.5.0:26:8 […]

我什么时候应该使用ACCESS_COARSE_LOCATION权限?

我正在构建一个Android应用程序,它将跟踪用户的地理位置并在地图上绘制他们的路线。 我正在使用Google Play服务位置API,如此处所述。 直观的是我的应用程序需要ACCESS_FINE_LOCATION权限,我将其放入清单中: 我还需要ACCESS_COARSE_LOCATION权限吗? 我需要粗略位置的用例是什么?

Android项目build立成功,但运行失败,错误:java.util.zip.ZipException:重复条目

我已经更新了我的android工作室和SDK和项目的一些程序包依赖关系,从那以后我面临了很多问题,我认为原因是依赖关系不兼容。 在我研究的过程中,我发现很多人都有同样的问题,这并不罕见。 我已经解决了一些错误,但问题却一个接一个出现,我只是困惑。 希望你能帮我找出问题和解决办法。 代码适用于新的Android版本! (有点奇怪),我可以在android 21+上编译和运行应用程序。 但是当我尝试运行它在21以下的Android版本,它给了我一个错误。 在我迁移到Android Studio 2之前,每件事情都可以。 这里是我现在得到的错误代码: FAILURE: Build failed with an exception. 出了什么问题:执行失败的任务':transformClassesWithJarMergingForDebug'。 com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:android / support / annotation / WorkerThread.class 尝试:运行–stacktrace选项来获取堆栈跟踪。 运行–info或–debug选项来获得更多的日志输出。 这里是项目档案文件: task wrapper(type: Wrapper) { gradleVersion = '2.2' } buildscript { repositories { mavenCentral() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.google.gms:google-services:2.1.0' } } apply plugin: 'com.android.application' […]