会话数

通过会话,用户可以快速轻松地查看自己完成的所有主要活动的列表。它们会显示在 Google 健身应用日志页面中。例如,呼吸课程、散步、跑步或夜间睡眠都是该课程中的一个示例。

会话对在活动期间收集的特定时间段内的数据集进行分组。例如,如果用户在开始和跑了 3 公里后进行了跟踪,那么就可以创建一个锻炼时段,并在该时间段内完成所有健身数据(例如步数、速度、距离)。

会话本身不包含该活动的详细信息。它位于数据集中。会话具有以下属性:

  • 易记的描述性名称(例如,“晨跑”)
  • 广告内容描述
  • 唯一标识符
  • 它捕获的运动类型(例如,跑步)

使用会话的好处

  • 对用户有用:会话可帮助您以有意义的方式整理活动数据和锻炼活动。他们可以在 Google 健身应用的“日志”页面中查看当天的所有活动。
  • 一致的用户体验:如果您的应用或配套设备允许跟踪活动(用户可以在此启动和停止活动),那么为这些健身活动设置会话后,用户就可以在这两个应用中查看自己的活动。
  • 更完整的数据:Google 健身还会合并多个来源的数据,以补充和丰富您的会话信息。这样用户就可以更全面地了解自己的活动。
  • 利用 Google 健身平台:如果您的用户不跟踪其活动,或者您的应用不支持跟踪,您仍可以在 Google 健身中读取课程数据。 您可以从健身存储空间查询详细或汇总数据并查找可用会话,而无需实现自己的架构和存储空间。
  • 提高用户互动度:您可以向用户显示可用的会话以及创建用户的应用。以这种方式与其他健身应用互动可以提高用户互动度。

获取会话的用户授权

如果您想读取或写入会话,则您的应用必须获得用户的权限。访问会话所用的授权范围与数据类型相同,您应按如下方式请求:

Android

使用 FitnessOptions 中的相应方法指定应用需要访问的会话类型。例如,如需读取与跑步相关的会话,您可以选择:

    val fitnessOptions = FitnessOptions.builder()
        .accessActivitySessions(FitnessOptions.ACCESS_READ)
        .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
        .addDataType(DataType.TYPE_SPEED, FitnessOptions.ACCESS_READ)
        .addDataType(DataType.TYPE_LOCATION_SAMPLE, FitnessOptions.ACCESS_READ)
        .build()

此示例指定了应用想要访问活动会话元数据,同时还指定了希望在这些会话中读取的数据类型;此示例中使用了心率、速度和位置信息数据类型。

REST

请求范围如下:

  • 包含睡眠活动的类型的会话:
    • https://www.googleapis.com/auth/fitness.sleep.read
    • https://www.googleapis.com/auth/fitness.sleep.write
  • 所有其他会话:
    • https://www.googleapis.com/auth/fitness.activity.read
    • https://www.googleapis.com/auth/fitness.activity.write

使用会话

Android

您可以使用 Sessions API 执行以下操作:

  • 实时创建会话
  • 健身商店中插入课程
  • 插入活动时段数据,为锻炼期间的暂停情况提供支持
  • 读取与其关联的会话和数据集
  • 启动其他应用以显示其创建的会话的相关信息
  • 在其他应用启动会话时接收 intent

REST

您可以使用 Sessions API 执行以下操作:

  • 实时创建会话
  • 健身商店中插入课程
  • 插入活动时段数据,为锻炼期间的暂停情况提供支持
  • 读取与其关联的会话和数据集

数据集和细分如何与会话交互

在 Google 健身中:

  • 数据集表示特定时间段内来自特定数据源的数据点集。数据集可以自行插入。但如果您正在创建会话,则同时创建会话及其数据集可能更容易。
  • 细分按用户在会话中执行的确切活动对会话中的数据集进行分组。例如,如果用户跟踪了 30 分钟的跑步(会话),但在这段时间里走了一小段时间,这可能会被细分为不同的部分。系统会有一个运行细分、步行划分、再次运行。
图 1:不同的应用向 [健身商店] 添加了会话和数据集。

图 1 显示了健身存储空间中的时间间隔,在此期间应用 A、B 和 C 已插入一些数据集和会话:

  • 应用 A 将数据集 A1 和 A2 与会话 1 和 A3 一起插入,不考虑任何会话。
  • 应用 B 将数据集 B1 和 B2 与会话 2 一起插入。
  • 应用 C 单独插入数据集 C1,而不考虑任何会话。

健身数据存储区读取会话数据时,即使您在会话创建后插入数据,或在数据被动跟踪后创建会话,系统会自动将某会话的时间段内的所有健身数据与该会话相关联。例如,查询会话 1 中的健身数据会返回:

  • 数据集 A1
  • 数据集 A2
  • 数据集 A3 中 t1 到 t2 之间的部分
  • 数据集 C1 中 t1 到 t2 之间的部分

您可以分辨哪个会话和数据集插入了哪个应用。

创建会话

您可以通过以下几种方式创建会话:

  • 您的应用可以在以下任一种情况下主动创建一个会话:
    • 实时跟踪用户在设备上的活动(仅限 Android 设备),并实时完成;或者
    • 手动插入
  • 当用户在 Google 健身应用中手动添加锻炼或活动时。

何时创建会话

你们要添加睡眠数据吗?

  • - 创建课程并手动将其插入健身商店。 例如,插入睡眠时段。这是因为使用睡眠跟踪应用或设备的用户不会与设备互动,无法启动和停止睡眠活动(被动跟踪)。
  • - 您的应用是否允许用户启动和停止 activity?
    • - 不创建会话。仅从应用添加数据集。
    • - 借助 Android API,您可以在用户跟踪其活动时实时创建会话,也可以手动创建会话。使用 REST API,创建时段并手动将其插入健身商店
    • 您的应用能否更详细地检测用户何时执行不同的 activity(例如,步行与跑步)?
      • - 添加细分。
      • - 仅添加数据集。请暂时忽略细分,让 Google 健身被动地创建。

阅读课程

您的应用可以通过以下几种方式读取会话:

  • 查找它创建/插入的特定会话
    • 名称或
    • ID
  • 查找它创建/插入的所有会话(按时间段)
  • 按时间段查找所有应用(包括 Google 健身)创建的所有会话

了解哪些会话创建了会话

您可以向用户显示各个会话由哪个应用或设备创建。每个会话都有一个关联的数据源,其中包含有关收集或转换数据的应用或设备的信息。

Android

您目前只能获取由 Android 客户端编写的会话的软件包名称。如需获取创建会话的应用的软件包名称,请使用 getAppPackageName 方法。您可以在应用中使用此信息,向用户显示其他应用插入了健身课程。您可以显示每个应用的图标,以帮助用户识别它们。

您还可以触发 intent启动其他应用,以显示其创建的会话的详细信息。其他应用也可以触发启动您的应用的 intent。

详细了解如何查找创建会话的来源

REST

如需获取创建了会话的 Android 应用的软件包名称,请使用 session.application 属性。对于使用 REST API 创建的会话,请改用 session.name 属性。您可以在应用中使用此信息,向用户显示哪些其他应用插入了健身课程。您可以显示每个应用的图标,以帮助用户识别它们。

详细了解如何查找创建会话的来源