4

升级到 Google Play Services 7.0 后,我GoogleApiClient连接到 Google Fit 的代码不再有效:它说:

错误:(87, 21) 错误:找不到适合 addApi(Void) 方法的方法 Builder.addApi(Api,O) 不适用(无法从参数实例化,因为实际参数列表和形式参数列表的长度不同) Api) 不适用(实际参数 Void 无法通过方法调用转换转换为 Api)其中 O 是类型变量:O extends HasOptions 在方法 addApi(Api,O) 中声明

我的构建代码GoogleApiClient是:

mGoogleApiClient = new GoogleApiClient.Builder(this)
    .addApi(Fitness.API)
    .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
    .addConnectionCallbacks(this)
    .addOnConnectionFailedListener(this)
    .build();
4

1 回答 1

12

根据Google Play 服务 7.0 博客文章

您传递给您的以前的 Fitness.APIGoogleApiClient现在已被许多 API 替换,与高级 Google Fit Android API 集相匹配:

因此,您应该更新您的GoogleApiClient以添加您使用的所有适当的 API。例如,如果您同时使用SensorsApiRecordingApi,您的代码应如下所示:

mGoogleApiClient = new GoogleApiClient.Builder(this)
    .addApi(Fitness.SENSORS_API)
    .addApi(Fitness.REPORTING_API)
    .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
    .addConnectionCallbacks(this)
    .addOnConnectionFailedListener(this)
    .build();

注意:针对旧版本的 Google Play 服务编译的应用程序将继续工作,但不会获得 Google Play 服务 7.0 中的拆分 API 带来的内存优势,如同一篇博文中所述:

此更改显着降低了在后台运行启用了 Google Fit 的应用程序的内存需求。与往常一样,基于以前版本的 Google Play 服务构建的应用程序将继续运行,但我们强烈建议您重建支持 Google Fit 的应用程序以利用此更改。

于 2015-03-19T23:29:07.737 回答