You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Android版Fit API从Google Fit获取活动记录的UID?

获取Google Fit活动记录唯一标识的实现方法

针对不同类型的活动数据,获取唯一标识的方式如下:

  • 活动段(ActivitySegment):每条ActivitySegment自带全局唯一标识符,可通过activitySegment.getIdentifier()直接获取。读取历史数据时,从DataPoint的FIELD_ACTIVITY_SEGMENT字段解析出ActivitySegment对象后即可调用该方法。
  • 数据点(DataPoint):DataPoint没有直接提供独立UID,但可通过组合以下信息生成唯一标识:
    • 数据源流ID:dataPoint.getOriginalDataSource().getStreamId()
    • 数据点时间戳:dataPoint.getTimestamp()
    • 数据点起始时间:dataPoint.getStartTime()
      三者结合足以保证同一数据源下的DataPoint不重复;若需跨数据源唯一性,可额外加入数据类型名称dataPoint.getDataType().getName()。
  • 会话(Session):Session对象本身带有唯一ID,通过session.getId()即可获取,该ID由Google Fit自动分配或创建会话时自定义生成。

代码示例

读取活动段并获取唯一ID

// 构建活动段读取请求
DataReadRequest readRequest = new DataReadRequest.Builder()
    .read(DataType.TYPE_ACTIVITY_SEGMENT)
    .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
    .build();

// 执行同步请求(也可使用异步回调)
DataReadResult dataReadResult = Fitness.HistoryApi.readData(mGoogleApiClient, readRequest)
    .await(1, TimeUnit.MINUTES);

if (dataReadResult.getStatus().isSuccess()) {
    for (DataSet dataSet : dataReadResult.getDataSets()) {
        for (DataPoint dataPoint : dataSet.getDataPoints()) {
            // 解析ActivitySegment对象
            ActivitySegment segment = dataPoint.getValue(Field.FIELD_ACTIVITY_SEGMENT).asActivitySegment();
            // 获取唯一标识
            String uniqueId = segment.getIdentifier();
            // 后续业务处理
        }
    }
}

读取会话并获取唯一ID

SessionReadRequest sessionRequest = new SessionReadRequest.Builder()
    .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
    .readSessionsFromAllApps()
    .build();

SessionReadResult sessionResult = Fitness.SessionsApi.readSession(mGoogleApiClient, sessionRequest)
    .await(1, TimeUnit.MINUTES);

for (Session session : sessionResult.getSessions()) {
    String sessionUniqueId = session.getId();
    // 后续业务处理
}

注意事项

  • 确保应用已申请对应权限:需包含ACTIVITY_RECOGNITION权限,以及通过FitnessOptions配置对应数据类型的读取权限(如ACCESS_READ)。
  • 若使用异步请求,需在OnDataReadListener或OnSessionReadListener的回调中处理返回数据。

内容的提问来源于stack exchange,提问作者Serdar Büyükkanlı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:55:28