Users.dataSources

唯一传感器数据来源的定义。数据源可以公开来自本地或配套设备上的硬件传感器的原始数据。它们还可以公开通过转换或合并其他数据源而创建的派生数据。同一数据类型可以有多个数据源。插入此服务或从中读取的每个数据点都有一个关联的数据源。 

数据源包含足够的信息来唯一标识其数据,包括收集和/或转换数据的硬件设备和应用。它还包含实用的元数据,例如硬件和应用版本,以及设备类型。 

每个数据源都会生成具有唯一标识符的唯一数据流。并非所有对数据源的更改都会影响数据流标识符,因此同一应用/设备的更新版本收集的数据仍然可以被视为属于同一数据流。

有关此类资源的方法列表,请参阅本页面的结尾部分。

资源表示法

{
  "dataStreamId": string,
  "name": string,
  "dataStreamName": string,
  "type": string,
  "dataType": {
    "name": string,
    "field": [
      {
        "name": string,
        "format": string,
        "optional": boolean
      }
    ]
  },
  "device": {
    "uid": string,
    "type": string,
    "version": string,
    "model": string,
    "manufacturer": string
  },
  "application": {
    "packageName": string,
    "version": string,
    "detailsUrl": string,
    "name": string
  },
  "dataQualityStandard": [
    string
  ]
}
属性名称 说明 备注
application nested object 将传感器数据馈送到平台的应用的相关信息。
application.detailsUrl string 可选 URI,可用于链接回应用。
application.name string 此应用的名称。REST 客户端必须填写此字段,但我们不强制要求此名称的唯一性。我们提供它只是为了方便其他开发者确定是哪一个 REST 创建了应用程序或数据源。
application.packageName string 此应用的软件包名称。该标识符在 Android 应用创建时用作唯一标识符,但 REST 客户端不能指定该标识符。REST 客户端会将其开发者项目编号(而非 packageName)反映到数据源数据流 ID 中。
application.version string 应用的版本。当应用以影响数据计算的方式发生变化时,您都应更新此字段。
dataQualityStandard[] list 请勿填写此字段。系统绝不会在平台的响应中填充此字段,也不会在查询中忽略此字段。我们会在以后的版本中彻底将其移除。
dataStreamId string 此数据源生成的数据流的唯一标识符。标识符包括:

  • 实体设备的制造商、型号和序列号 (UID)。
  • 应用的软件包名称。如果数据源由 Android 应用创建,则会使用软件包名称。REST 客户端创建数据源时会使用开发者项目编号。
  • 数据源的类型。
  • 数据源的数据流名称。
请注意,并非所有数据源属性都会用作数据流标识符的一部分。特别是不会使用硬件/应用的版本。这样,我们就可以在版本更新中保留相同的数据流。这也意味着,即使两个 DataSource 对象不相等,它们也可以表示同一个数据流。

Android 应用创建的数据流 ID 的确切格式为:type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName

REST 客户端创建的数据流 ID 的确切格式为:type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName

如果构成数据流 ID 的任何可选字段不存在,数据流 ID 中将省略这些字段。最小的可行数据流 ID 是:type:dataType.name:developer 项目编号

最后,任何未创建数据源的 REST 或 Android 客户端读取开发者项目编号和设备 UID 时,都会进行混淆处理。只有数据源创建者可以看到以清晰且规范形式显示的开发者项目编号。也就是说,一个客户端与另一个具有不同凭据的客户端看到的是一组不同的 data_stream_ids。

dataStreamName string 数据流名称能够在来自同一底层提供方的同类其他数据源中,唯一标识此特定数据源。流名称设置是可选的,但每当应用针对同一数据类型公开两个流时,或者设备有两个等效的传感器时,就应设置该流名称。
dataType nested object 数据类型定义了由 Fitness API 收集、插入或查询的数据流的架构。
dataType.field[] list 字段表示数据类型的一个维度。
dataType.field[].format string 数据类型中每个字段支持的不同格式。

可接受的值:
  • "blob"
  • "floatList"
  • "floatPoint"
  • "integer"
  • "integerList"
  • "map"
  • "string"
dataType.field[].name string 定义数据的名称和格式。与数据类型名称不同,字段名称没有命名空间,只需要在数据类型中具有唯一性。
dataType.field[].optional boolean
dataType.name string 每种数据类型都有一个唯一的命名空间名称。com.google 命名空间中的所有数据类型均作为平台的一部分进行共享。
device nested object 表示可以容纳传感器的集成设备(例如手机或穿戴式设备)。
device.manufacturer string 产品/硬件的制造商。
device.model string 设备的最终用户可见型号名称。
device.type string 表示设备类型的常量。

可接受的值:
  • "chestStrap"
  • "headMounted"
  • "phone"
  • "scale"
  • "smartDisplay"
  • "tablet"
  • "unknown"
  • "watch"
device.uid string 硬件的序列号或其他唯一 ID。当任何未创建数据源的 REST 或 Android 客户端读取此字段时,系统会对其进行混淆处理。只有数据源创建者才会看到以清晰标准形式显示的 uid 字段。

混淆处理可保持相等性;也就是说,给定两个 ID,如果 id1 == id2,则 obfuscated(id1) == obfuscated(id2)。

device.version string 设备硬件/软件的版本字符串。
name string 此数据源的最终用户可见名称。
type string 用于描述此数据源类型的常量。指示此数据源是生成原始数据还是派生数据。

可接受的值:
  • "derived"
  • "raw"

方法

create
创建在属于此用户的所有数据源中唯一的新数据源。

数据源是传感器数据的唯一来源。数据源可能会公开来自本地或配套设备上的硬件传感器的原始数据。它们还可以公开通过转换或合并其他数据源而创建的派生数据。同一数据类型可以有多个数据源。插入到 Fitness API 或从 Fitness API 读取的每个数据集中的每个数据点都有一个关联的数据源。

每个数据源都会生成唯一的数据集更新流,并具有唯一的数据源标识符。并非所有对数据源的更改都会影响数据流 ID,因此同一应用/设备的更新版本收集的数据仍然可以被视为属于同一数据源。

数据源是根据所创建数据源的内容使用服务器生成的字符串来标识的。调用此方法时,不应设置 dataStreamId 字段。服务器将使用正确的格式自动生成该文件。如果设置了 dataStreamId,则它必须与服务器将生成的格式匹配。此格式是数据源中的一些字段的组合,并具有特定顺序。如果不匹配,请求将失败并显示错误。

如果指定未知类型的 DataType(以“com.google.”开头),则会创建具有自定义数据类型的 DataSource。自定义数据类型只能由创建它们的应用读取。自定义数据类型已弃用,请改用标准数据类型。

除了数据源 ID 中包含的数据源字段外,该数据还包含在创建数据源时进行身份验证的开发者项目编号。读取公开数据类型的任何其他开发者读取此开发者项目编号时,系统会对其进行混淆处理。
删除
删除指定的数据源。如果数据源包含任何数据点,请求将失败。
get
返回指定的数据源。
list
使用提供的 OAuth 范围列出对开发者可见的所有数据源。该列表并非详尽无遗;用户可能拥有仅对其他开发者可见的私有数据源,或者可能使用其他范围的调用。
update
更新指定的数据源。除 version 外,dataStreamIddataTypetypedataStreamNamedevice 属性均不能修改。

数据源由其 dataStreamId 标识。