会话是一种让用户快速轻松地查看他们执行的所有主要活动的列表。这些内容会显示在 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 分钟的跑步(时段),但在此期间步行了一会儿,则可以细分为多个片段。比如跑步、步行休息和跑步的细分。
![](https://developers.google.cn/static/fit/images/timeline.png?authuser=6&hl=nb)
图 1 显示了健身存储区中的一个时间间隔,在该时间段内应用 A、B 和 C 插入了一些数据集和会话:
- 应用 A 在独立于任何会话的情况下插入数据集 A1 和 A2 以及会话 1 和 A3。
- 应用 B 在会话 2 中插入了数据集 B1 和 B2。
- 应用 C 插入了数据集 C1,且不考虑任何会话。
从健身存储区读取时段数据时,属于时段相应时间间隔内的所有健身数据都会自动与该时段相关联,即使您在创建时段后插入数据,或在被动跟踪数据之后创建时段也是如此。例如,查询来自会话 1 的健身数据会返回:
- 数据集 A1
- 数据集 A2
- 数据集 A3 中 t1 和 t2 之间的部分
- 数据集 C1 介于 t1 和 t2 之间的部分
您可以了解哪个应用插入了每个会话和数据集。
创建会话
可以通过以下几种不同的方式创建会话:
- 您的应用可以在以下国家/地区主动创建会话:
- 当用户主动跟踪设备上的活动时(仅限 Android),实时;
- (只需手动插入即可)。
- 当用户在 Google 健身应用中手动添加锻炼或活动时触发。
何时创建会话
你要添加睡眠数据吗?
- 是 - 创建课程并手动将其插入健身存储区。 例如,插入一个睡眠时段。这是因为使用睡眠跟踪应用或设备的用户不会与设备交互来开始和停止睡眠活动(这是被动跟踪)。
- 否 - 您的应用是否允许用户启动和停止 activity?
- No - 不创建会话。请仅从您的应用添加数据集。
- 是 - 借助 Android API,可在用户跟踪其活动时实时创建会话,也可手动创建会话。 使用 REST API,创建一个时段并将其手动插入到健身存储区中。
- 您的应用能否检测到用户何时在更详细的级别上进行不同的活动(例如,步行与跑步)?
- 是 - 添加细分。
- 否 - 仅添加数据集。您可以暂时忽略细分,让 Google 健身被动创建这些细分。
阅读会话
您的应用可以通过以下几种方式读取会话:
- 查找由以下用户创建/插入的特定会话:
- 姓名或
- ID
- 按时间段查找创建/插入的所有会话
- 按时间段查找所有应用(包括 Google 健身)创建的所有可用会话
了解哪些来源创建了会话
您可以向用户显示每个会话是由哪个应用或设备创建的。每个会话都有一个关联的数据源,该数据源包含收集或转换数据的应用或设备的相关信息。
Android
您目前只能获取 Android 客户端写入的会话的软件包名称。如需获取创建了会话的应用的软件包名称,请使用 getAppPackageName
方法。您可以在应用中使用这些信息来向用户显示哪些其他应用插入了健身课程。您可以显示其中每个应用的图标,以帮助用户识别它们。
您还可以触发一个 intent 来启动其他应用,以显示它们创建的会话的详细信息。其他应用也可以触发 intent 来启动您的应用。
详细了解如何查找创建了会话的来源。
REST
如需获取创建了会话的 Android 应用的软件包名称,请使用 session.application
属性。对于使用 REST API 创建的会话,请改用 session.name
属性。您可以在应用中使用这些信息向用户显示哪些其他应用插入了健身时段。您可以显示每个应用的图标,帮助用户识别它们。
详细了解如何查找创建了会话的来源。