【问题标题】:GoogleFit Sample Not WorkingGoogleFit 示例不工作
【发布时间】:2014-10-15 19:08:02
【问题描述】:

我正在尝试使用 BasicHistory Sample 存储数据然后读取它,但在我的情况下,代码卡在插入调用中。等待调用也不会返回我尝试使用异步方式的任何内容,这是代码

com.google.android.gms.common.api.Status insertStatus =
Fitness.HistoryApi.insert(mClient, insertRequest).await(1, TimeUnit.MINUTES);

【问题讨论】:

  • 您的 insertRequest 是什么样的?移动客户端是否获得授权和连接?

标签: android google-play-services google-fit


【解决方案1】:

您是否请求了正确的权限?

根据该 Google Fit 示例,它只需要“活动”的权限。如果您将该示例中使用的数据类型更改为其他不同,请确保您设置了正确的权限。阅读Google Fit Doc中的授权部分了解更多信息。

您可以添加多个权限,只需向客户端添加一个新范围:

    // Create the Google API Client
    mClient = new GoogleApiClient.Builder(this)
            .addApi(Fitness.API)
            .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
            .addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE))
            .addScope(new Scope(Scopes.FITNESS_LOCATION_READ_WRITE))
    ...

【讨论】:

    【解决方案2】:

    要将 DataType 插入到 google fit 中,您必须创建一个相同类型的 DataSet,并确保您使用适当的范围构建 GoogleApiClient,就像上面所说的 jose。下面是在google fit中插入Height的例子

    public boolean saveUserHeight(int heightCentimiters) {
        // to post data
        float height = ((float) heightCentimiters) / 100.0f;
        Calendar cal = Calendar.getInstance();
        Date now = new Date();
        cal.setTime(now);
        long endTime = cal.getTimeInMillis();
        cal.add(Calendar.DAY_OF_YEAR, -1);
        long startTime = cal.getTimeInMillis();
        DataSet heightDataSet = createDataForRequest(DataType.TYPE_HEIGHT, // for
                DataSource.TYPE_RAW, height, // weight in kgs
                startTime, // start time
                endTime, // end time
                TimeUnit.MILLISECONDS // Time Unit, for example,
                                        // TimeUnit.MILLISECONDS
        );
        com.google.android.gms.common.api.Status heightInsertStatus = Fitness.HistoryApi
                .insertData(fitnessClient, heightDataSet).await(1,
                        TimeUnit.MINUTES);
        if (heightInsertStatus.isSuccess()) {
            //Log.e("Height", heightCentimiters+"Inserted");
        } else {
            //Log.e("Height", "inserted failed");
        }
        return heightInsertStatus.isSuccess();
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多