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 客户端的开发者项目编号会反映在数据源数据流 ID 中,而不是体现在 packageName 中。
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 中插入或读取的每个数据集中的每个数据点都有关联的数据源。

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

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

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

除了数据源 ID 中包含的数据源字段之外,还会包含创建数据源时经过身份验证的开发者项目编号。当任何其他开发者读取公共数据类型时,此开发者项目编号会经过混淆处理。
delete
删除指定的数据源。如果数据源包含任何数据点,则请求将失败。
get
返回指定的数据源。
list
使用提供的 OAuth 范围列出开发者可以看到的所有数据源。该列表并不详尽;用户可能有只有其他开发者才能看到的不公开数据源,或者使用其他范围的调用。
update
更新指定的数据源。除 version 外,dataStreamIddataTypetypedataStreamNamedevice 属性无法修改。

数据源通过其 dataStreamId 进行标识。