java - Google Fit REST API(不是 Android API!)的 Java 客户端库示例

标签 java google-fit

我想使用 Google Fit 编写一个 java 程序 REST API . (它不是 Android 应用,所以我不能使用 Android API。)

好像有一个Java Client library for the REST API - 所以我认为这很容易。

但是,我找不到任何说明如何使用客户端库的样本/示例(只有 javadoc)。

我找到了有关如何使用 Android API 的示例 - 例如this .但它完全不同,所以没有用。

对于我使用过的其他 Google API,客户端库附带了示例……在这种情况下并非如此。

有什么想法吗?谢谢。

最佳答案

通过拼凑来自 javadoc 的一些信息, REST API documentation ,并通过使用我自己使用其他 Google API Java 客户端库的一些示例,我已经能够或多或少地使其工作......以下是一些代码片段:

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.services.fitness.Fitness;
import com.google.api.services.fitness.model.*;

获取 GoogleCredential - 这个库是 well documented ...

GoogleCredential credential = new GoogleCredential.Builder()
                                     .setTransport(HTTP_TRANSPORT)
                                     .setJsonFactory(JSON_FACTORY)
                                     ...
                                     .build();

使用刚刚创建的 credential 创建作为所有调用基础的服务...

Fitness service = new Fitness.Builder(
                           HTTP_TRANSPORT, 
                           JSON_FACTORY, 
                           credential)
                           .setApplicationName(APPLICATION_NAME)
                           .build();

为您的应用程序/设备创建一个或多个数据源

DataSource content = new DataSource()
                            .setApplication(YOUR_APPLICATION)
                            .setType(DATA_SOURCE_RAW)
                            .setName(name)
                            .setDataType(dataType);

Fitness.Users.DataSources.Create request = 
         service.users().dataSources().create("me", content);

DataSource ds = request.execute();

这是您在创建自己的 DataSource 时需要使用的 dataType 示例...这是使用标准的公共(public)指标(在本例中步)谷歌公开...见this .

private static final String DT_STEPS = "com.google.step_count.delta";
private static final DataTypeField FIELD_STEPS = new 
        DataTypeField().setName("steps").setFormat(FORMAT_INTEGER);
private static final List<DataTypeField> STEPS_FIELDS = Arrays.asList(
                                                        FIELD_STEPS);
public static final DataType DATA_TYPE_STEPS = 
                            new DataType()
                                .setName(DT_STEPS)
                                .setField(STEPS_FIELDS);

现在使用 DataSource 创建 DataType 的实际数据点 - 在 DataSet 中...

    Value value = new Value().setIntVal(Integer.valueOf(steps));
    List<Value> values = Arrays.asList(value);

    DataPoint point = new DataPoint()
                            .setValue(values)
                            .setDataTypeName(DT_STEPS)
                            .setStartTimeNanos(startNS)
                            .setEndTimeNanos(endNS);

    List<DataPoint> dataPoints = Arrays.asList(point);

    String datasetId = startNS + "-" endNS;

    Dataset content = new Dataset()
                            .setDataSourceId(dataSourceId)
                            .setPoint(dataPoints)
                            .setMinStartTimeNs(startNS)
                            .setMaxEndTimeNs(endNS);

    Fitness.Users.DataSources.Datasets.Patch request = 
           service.users().dataSources().datasets().patch(
                "me", 
                dataSourceId, 
                datasetId, 
                content);

    Dataset ds = request.execute();

您仍然需要创建一个Session 和一个Segment Activity DataSet...但它们遵循相似的结构。

关于java - Google Fit REST API(不是 Android API!)的 Java 客户端库示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368371/

相关文章:

android - Google Fit Android API 中的手动数据标志?

android - 添加 Google Fit 距离(DataPoint 超出范围)

java - google api的maven用法

java - Log4j2.xml配置以关闭hibernate调试级别日志

java - 需要登录项目的帮助(JAVA)

android - 如何使用 Google Fit Android API 获取步数的数据源?

java - 使用 Google Fit API 获取 StepCount 失败

java - 找不到 Google 健身类(class)

java - 如何使用 lambda 来初始化具有命名线程的 ThreadFactory

java - 如何获得这个Java布局?