在Google Play Services 7.0中删除了Fitness.API?

ian*_*ake 4 java android google-play-services google-fit

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

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

我的构建代码GoogleApiClient是:

mGoogleApiClient = new GoogleApiClient.Builder(this)
    .addApi(Fitness.API)
    .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
    .addConnectionCallbacks(this)
    .addOnConnectionFailedListener(this)
    .build();
Run Code Online (Sandbox Code Playgroud)

ian*_*ake 11

根据Google Play服务7.0博文:

您之前传入的Fitness.API GoogleApiClient现已被许多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();
Run Code Online (Sandbox Code Playgroud)

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

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