壹
Chapter 1 · Sport & SubSport
运动类型定义体系
佳明通过一个二级体系来精确分类运动,这直接决定了数据记录和后续分析的算法选择。
1.1 体系结构
- 主运动类型 (Sport):由
sport枚举定义,代表运动的大类(如跑步、骑行)。它会影响设备对传感器数据应用何种算法。 - 子运动类型 (SubSport):由
sub_sport枚举定义,是对主运动类型的细化(如跑步下的"公路跑"、"越野跑"),用于更精确地标注活动场景。
⚠️ 注意:SPORT_*定义了活动类型,但不保证会改变设备行为。例如,一个本身不支持SPORT_MULTISPORT记录的设备,不会因此获得多功能运动转换功能。不过,FIT 文件可以被定义为SPORT_MULTISPORT,并且多重运动算法可能会应用于传感器数据。
1.2 主运动类型 (Sport) 完整枚举列表
| 主运动类型 (Sport) | 枚举值 | 中文译名 | 引入版本 | 说明 |
|---|---|---|---|---|
SPORT_GENERIC | 0 | 通用 | 1.0.0 | 列表中未列出的运动 |
SPORT_RUNNING | 1 | 跑步 | 1.0.0 | 泛指各类跑步 |
SPORT_CYCLING | 2 | 骑行 | 1.0.0 | 泛指各类骑行 |
SPORT_TRANSITION | 3 | 转换 | 1.0.0 | 用于多功能运动的过渡阶段 |
SPORT_FITNESS_EQUIPMENT | 4 | 健身器材 | 1.0.0 | 连接 ANT+ 协议的健身设备 |
SPORT_SWIMMING | 5 | 游泳 | 1.0.0 | 泛指各类游泳 |
SPORT_BASKETBALL | 6 | 篮球 | 1.0.0 | - |
SPORT_SOCCER | 7 | 足球 | 1.0.0 | - |
SPORT_TENNIS | 8 | 网球 | 1.0.0 | - |
SPORT_AMERICAN_FOOTBALL | 9 | 美式橄榄球 | 1.0.0 | - |
SPORT_TRAINING | 10 | 训练 | 1.0.0 | 力量训练、有氧操等 |
SPORT_WALKING | 11 | 步行 | 1.0.0 | 泛指各类步行 |
SPORT_CROSS_COUNTRY_SKIING | 12 | 越野滑雪 | 1.0.0 | - |
SPORT_ALPINE_SKIING | 13 | 高山滑雪 | 1.0.0 | - |
SPORT_SNOWBOARDING | 14 | 单板滑雪 | 1.0.0 | - |
SPORT_ROWING | 15 | 划船 | 1.0.0 | - |
SPORT_MOUNTAINEERING | 16 | 登山 | 1.0.0 | - |
SPORT_HIKING | 17 | 徒步 | 1.0.0 | - |
SPORT_MULTISPORT | 18 | 多项运动 | 1.0.0 | 如铁人三项等 |
SPORT_PADDLING | 19 | 划桨运动 | 1.0.0 | - |
SPORT_FLYING | 20 | 飞行 | 3.0.10 | - |
SPORT_E_BIKING | 21 | 电动自行车骑行 | 3.0.10 | - |
SPORT_MOTORCYCLING | 22 | 摩托车骑行 | 3.0.10 | - |
SPORT_BOATING | 23 | 驾船 | 3.0.10 | - |
SPORT_DRIVING | 24 | 驾驶 | 3.0.10 | - |
SPORT_GOLF | 25 | 高尔夫 | 3.0.10 | - |
SPORT_HANG_GLIDING | 26 | 悬挂式滑翔 | 3.0.10 | - |
SPORT_HORSEBACK_RIDING | 27 | 骑马 | 3.0.10 | - |
SPORT_HUNTING | 28 | 狩猎 | 3.0.10 | - |
SPORT_FISHING | 29 | 钓鱼 | 3.0.10 | - |
SPORT_INLINE_SKATING | 30 | 轮滑 | 3.0.10 | - |
SPORT_ROCK_CLIMBING | 31 | 攀岩 | 3.0.10 | - |
SPORT_SAILING | 32 | 帆船运动 | 3.0.10 | - |
SPORT_ICE_SKATING | 33 | 滑冰 | 3.0.10 | - |
SPORT_SKY_DIVING | 34 | 跳伞 | 3.0.10 | - |
SPORT_SNOWSHOEING | 35 | 雪鞋行走 | 3.0.10 | - |
SPORT_SNOWMOBILING | 36 | 雪地摩托 | 3.0.10 | - |
SPORT_STAND_UP_PADDLEBOARDING | 37 | 桨板冲浪 | 3.0.10 | - |
SPORT_SURFING | 38 | 冲浪 | 3.0.10 | - |
SPORT_WAKEBOARDING | 39 | 滑水板 | 3.0.10 | - |
SPORT_WATER_SKIING | 40 | 滑水 | 3.0.10 | - |
SPORT_KAYAKING | 41 | 皮划艇 | 3.0.10 | - |
SPORT_RAFTING | 42 | 漂流 | 3.0.10 | - |
SPORT_WINDSURFING | 43 | 风帆冲浪 | 3.0.10 | - |
SPORT_KITESURFING | 44 | 风筝冲浪 | 3.0.10 | - |
SPORT_TACTICAL | 45 | 战术训练 | 3.0.10 | - |
SPORT_JUMPMASTER | 46 | 跳伞指挥 | 3.0.10 | - |
SPORT_BOXING | 47 | 拳击 | 3.0.10 | - |
SPORT_FLOOR_CLIMBING | 48 | 攀爬(室内) | 3.0.10 | - |
SPORT_BASEBALL | 49 | 棒球 | 3.0.10 | - |
SPORT_SOFTBALL_FAST_PITCH | 50 | 垒球(快投) | 3.0.10 | - |
SPORT_SOFTBALL_SLOW_PITCH | 51 | 垒球(慢投) | 3.0.10 | - |
SPORT_SHOOTING | 56 | 射击 | 3.0.10 | - |
SPORT_AUTO_RACING | 57 | 赛车 | 3.0.10 | - |
📌 FIT 协议扩展:FIT 协议中额外定义了 sport 枚举值 53 (diving, 潜水)、58 (winter_sport, 冬季运动)、59 (grinding, 绞盘)、62 (hiit, 高强度间歇训练)、63 (video_gaming, 电子游戏)、64 (racket, 球拍运动) 等,这些在 Connect IQ API 中未列出,但在解析 FIT 文件时可能遇到。
1.3 子运动类型 (SubSport) 完整枚举列表
| 子运动类型 (SubSport) | 枚举值 | 中文译名 | 适用主运动 | 说明 |
|---|---|---|---|---|
SUB_SPORT_GENERIC | 0 | 通用 | 所有 | 无特定子类型 |
SUB_SPORT_TREADMILL | 1 | 跑步机 | 跑步、健身器材 | - |
SUB_SPORT_STREET | 2 | 公路跑 | 跑步 | - |
SUB_SPORT_TRAIL | 3 | 越野跑 | 跑步 | - |
SUB_SPORT_TRACK | 4 | 跑道跑 | 跑步 | - |
SUB_SPORT_SPIN | 5 | 动感单车 | 骑行 | - |
SUB_SPORT_INDOOR_CYCLING | 6 | 室内骑行 | 骑行、健身器材 | - |
SUB_SPORT_ROAD | 7 | 公路骑行 | 骑行 | - |
SUB_SPORT_MOUNTAIN | 8 | 山地骑行 | 骑行 | - |
SUB_SPORT_DOWNHILL | 9 | 速降骑行 | 骑行 | - |
SUB_SPORT_RECUMBENT | 10 | 躺式骑行 | 骑行 | - |
SUB_SPORT_CYCLOCROSS | 11 | 公路越野骑行 | 骑行 | - |
SUB_SPORT_HAND_CYCLING | 12 | 手摇骑行 | 骑行 | - |
SUB_SPORT_TRACK_CYCLING | 13 | 场地骑行 | 骑行 | - |
SUB_SPORT_INDOOR_ROWING | 14 | 室内划船 | 划船、健身器材 | - |
SUB_SPORT_ELLIPTICAL | 15 | 椭圆机 | 健身器材 | - |
SUB_SPORT_STAIR_CLIMBING | 16 | 爬楼梯 | 健身器材 | - |
SUB_SPORT_LAP_SWIMMING | 17 | 泳池游泳 | 游泳 | - |
SUB_SPORT_OPEN_WATER | 18 | 公开水域游泳 | 游泳 | - |
SUB_SPORT_FLEXIBILITY_TRAINING | 19 | 柔韧性训练 | 训练 | - |
SUB_SPORT_STRENGTH_TRAINING | 20 | 力量训练 | 训练 | - |
SUB_SPORT_WARM_UP | 21 | 热身活动 | 通用 | - |
SUB_SPORT_MATCH | 22 | 比赛 | 球类运动 | 如网球比赛 |
SUB_SPORT_EXERCISE | 23 | 锻炼 | 通用 | - |
SUB_SPORT_CHALLENGE | 24 | 挑战赛 | 通用 | - |
SUB_SPORT_INDOOR_SKIING | 25 | 室内滑雪 | 健身器材 | - |
SUB_SPORT_CARDIO_TRAINING | 26 | 有氧训练 | 训练 | - |
SUB_SPORT_INDOOR_WALKING | 27 | 室内步行 | 步行 | - |
SUB_SPORT_E_BIKE_FITNESS | 28 | 电动自行车健身 | 电动自行车 | - |
SUB_SPORT_BMX | 29 | BMX小轮车 | 骑行 | - |
SUB_SPORT_CASUAL_WALKING | 30 | 休闲步行 | 步行 | - |
SUB_SPORT_SPEED_WALKING | 31 | 竞走 | 步行 | - |
SUB_SPORT_BIKE_TO_RUN_TRANSITION | 32 | 骑车转跑步 | 转换 | - |
SUB_SPORT_RUN_TO_BIKE_TRANSITION | 33 | 跑步转骑车 | 转换 | - |
SUB_SPORT_SWIM_TO_BIKE_TRANSITION | 34 | 游泳转骑车 | 转换 | - |
SUB_SPORT_ATV | 35 | 全地形车 | 摩托车 | - |
SUB_SPORT_MOTOCROSS | 36 | 越野摩托 | 摩托车 | - |
SUB_SPORT_BACKCOUNTRY | 37 | 野外滑雪 | 高山滑雪/单板滑雪 | - |
SUB_SPORT_RESORT | 38 | 度假村滑雪 | 高山滑雪/单板滑雪 | - |
SUB_SPORT_RC_DRONE | 39 | 遥控无人机 | 飞行 | - |
SUB_SPORT_WINGSUIT | 40 | 翼装飞行 | 飞行 | - |
SUB_SPORT_WHITEWATER | 41 | 白水漂流 | 皮划艇/漂流 | - |
SUB_SPORT_SKATE_SKIING | 42 | 滑冰式滑雪 | 越野滑雪 | - |
SUB_SPORT_YOGA | 43 | 瑜伽 | 训练 | - |
SUB_SPORT_PILATES | 44 | 普拉提 | 健身器材 | - |
SUB_SPORT_INDOOR_RUNNING | 45 | 室内跑步 | 跑步 | - |
SUB_SPORT_GRAVEL_CYCLING | 46 | 砾石路骑行 | 骑行 | - |
SUB_SPORT_E_BIKE_MOUNTAIN | 47 | 电动山地车 | 骑行 | - |
SUB_SPORT_COMMUTING | 48 | 通勤骑行 | 骑行 | - |
SUB_SPORT_MIXED_SURFACE | 49 | 混合路面 | 骑行 | - |
SUB_SPORT_NAVIGATE | 50 | 导航 | 通用 | - |
SUB_SPORT_TRACK_ME | 51 | 追踪我 | 通用 | - |
SUB_SPORT_MAP | 52 | 地图 | 通用 | - |
SUB_SPORT_SINGLE_GAS_DIVING | 53 | 单气瓶潜水 | 潜水 | - |
SUB_SPORT_MULTI_GAS_DIVING | 54 | 多气瓶潜水 | 潜水 | - |
SUB_SPORT_GAUGE_DIVING | 55 | 仪表潜水 | 潜水 | - |
SUB_SPORT_APNEA_DIVING | 56 | 自由潜水 | 潜水 | - |
SUB_SPORT_APNEA_HUNTING | 57 | 自由潜渔猎 | 潜水 | - |
SUB_SPORT_VIRTUAL_ACTIVITY | 58 | 虚拟活动 | 通用 | - |
SUB_SPORT_OBSTACLE | 59 | 障碍赛 | 通用 | 泥泞跑、爬墙等 |
SUB_SPORT_BREATHING | 62 | 呼吸训练 | 通用 | - |
SUB_SPORT_CCR_DIVING | 63 | 闭路循环呼吸器潜水 | 潜水 | - |
SUB_SPORT_SAIL_RACE | 65 | 帆船赛 | 帆船 | - |
SUB_SPORT_EXPEDITION | 66 | 探险 | 通用 | - |
SUB_SPORT_ULTRA | 67 | 超级马拉松 | 跑步 | - |
SUB_SPORT_INDOOR_CLIMBING | 68 | 室内攀岩 | 攀岩 | - |
SUB_SPORT_BOULDERING | 69 | 抱石攀岩 | 攀岩 | - |
SUB_SPORT_HIIT | 70 | 高强度间歇训练 | 训练 | - |
SUB_SPORT_INDOOR_GRINDING | 71 | 室内绞盘训练 | 帆船 | - |
SUB_SPORT_HUNTING_WITH_DOGS | 72 | 带狗狩猎 | 狩猎 | - |
SUB_SPORT_AMRAP | 73 | AMRAP训练 | HIIT | As Many Rounds As Possible |
SUB_SPORT_EMOM | 74 | EMOM训练 | HIIT | Every Minute On the Minute |
SUB_SPORT_TABATA | 75 | Tabata训练 | HIIT | - |
SUB_SPORT_ESPORTS | 77 | 电子竞技 | 通用 | 视频游戏、虚拟骑行等 |
SUB_SPORT_TRIATHLON | 78 | 铁人三项 | 多项运动 | - |
SUB_SPORT_DUATHLON | 79 | 两项赛 | 多项运动 | 跑步+骑车+跑步 |
SUB_SPORT_BRICK | 80 | 砖块训练 | 多项运动 | 骑车后立即跑步 |
SUB_SPORT_SWIM_RUN | 81 | 游泳跑步 | 多项运动 | - |
SUB_SPORT_ADVENTURE_RACE | 82 | 探险赛 | 多项运动/跑步 | - |
1.4 运动类型组合示例
| 运动场景 | Sport (主运动) | SubSport (子运动) |
|---|---|---|
| 户外路跑 | SPORT_RUNNING (1) | SUB_SPORT_STREET (2) |
| 越野跑 | SPORT_RUNNING (1) | SUB_SPORT_TRAIL (3) |
| 室内跑步 | SPORT_RUNNING (1) | SUB_SPORT_INDOOR_RUNNING (45) |
| 爬楼梯 | SPORT_FITNESS_EQUIPMENT (4) | SUB_SPORT_STAIR_CLIMBING (16) |
| 室内步行 | SPORT_WALKING (11) | SUB_SPORT_INDOOR_WALKING (27) |
| 公路骑行 | SPORT_CYCLING (2) | SUB_SPORT_ROAD (7) |
| 健身房力量训练 | SPORT_TRAINING (10) | SUB_SPORT_STRENGTH_TRAINING (20) |
| 泳池游泳 | SPORT_SWIMMING (5) | SUB_SPORT_LAP_SWIMMING (17) |
贰
Chapter 2 · Core Fields
核心数据字段分类
FIT 文件的核心是 session、lap 和 record 三种消息,分别存储活动总览、每圈/分段和逐点记录的原始数据。
2.1 时间类字段
| 字段名 | 数据类型 | 单位 | 所属消息 | 含义 |
|---|---|---|---|---|
timestamp | date_time | 秒 (s) | session, lap, record | 消息生成时的时间戳(UTC,从 1989-12-31 起算) |
start_time | date_time | 秒 (s) | session, lap | 活动或计圈开始的 UTC 时间戳 |
total_elapsed_time | uint32 | 秒 (s),精度 0.001 | session, lap | 总经过时间,包含所有暂停时间 |
total_timer_time | uint32 | 秒 (s),精度 0.001 | session, lap | 总计时时间,排除暂停时间(即纯运动时间) |
total_moving_time | uint32 | 秒 (s),精度 0.001 | session, lap | 实际移动时间(进一步排除静止站立时间) |
active_time | uint32 | 秒 (s),精度 0.001 | session, lap | 活跃时间 |
local_timestamp | local_date_time | 秒 (s) | activity | 本地时区时间戳,用于转换 |
2.2 距离与高度类字段
| 字段名 | 数据类型 | 单位 | 所属消息 | 含义 |
|---|---|---|---|---|
total_distance | uint32 | 米 (m),精度 0.01 | session, lap | 累计总距离 |
total_ascent | uint16 | 米 (m) | session, lap | 累计总上升高度 |
total_descent | uint16 | 米 (m) | session, lap | 累计总下降高度 |
avg_altitude | uint16 | 米 (m),精度 0.2 | session, lap | 平均海拔高度 |
max_altitude | uint16 | 米 (m),精度 0.2 | session, lap | 最大海拔高度 |
min_altitude | uint16 | 米 (m),精度 0.2 | session, lap | 最小海拔高度 |
enhanced_altitude | uint32 | 米 (m),精度 0.2 | record | 单点的高精度海拔 |
position_lat | sint32 | 半圆 (semicircles) | record | 单点的 GPS 纬度 |
position_long | sint32 | 半圆 (semicircles) | record | 单点的 GPS 经度 |
altitude | uint16 | 米 (m),精度 0.2 | record | 单点的海拔高度 |
grade | sint16 | %,精度 0.01 | record | 单点的坡度 |
avg_grade | sint16 | %,精度 0.01 | session, lap | 平均坡度 |
2.3 心率与能量消耗类字段
| 字段名 | 数据类型 | 单位 | 所属消息 | 含义 |
|---|---|---|---|---|
avg_heart_rate | uint8 | bpm | session, lap | 平均心率 |
max_heart_rate | uint8 | bpm | session, lap | 最大心率 |
min_heart_rate | uint8 | bpm | session, lap | 最小心率 |
heart_rate | uint8 | bpm | record | 单点瞬时心率 |
total_calories | uint16 | 千卡 (kcal) | session, lap | 总消耗卡路里 |
total_fat_calories | uint16 | 千卡 (kcal) | session, lap | 脂肪供能卡路里 |
active_calories | uint16 | 千卡 (kcal) | session | 活动消耗卡路里 |
metabolic_calories | uint16 | 千卡 (kcal) | session | 基础代谢消耗 |
time_in_hr_zone | uint32 [N] | 秒 (s),精度 0.001 | session, lap | 在各心率区间的停留时间 |
hr_zone_high_boundary | uint8 [N] | bpm | time_in_zone | 各心率区间的上界 |
2.4 步态与节奏类字段
| 字段名 | 数据类型 | 单位 | 所属消息 | 含义 |
|---|---|---|---|---|
total_strides | uint32 | 步 (strides) | session, lap | 跑步/步行时的总步数(单脚计数) |
steps | uint32 | 步 (steps) | monitoring | 监控日志中的总步数(双脚计数) |
cadence | uint8 | rpm / strides/min | session, lap, record | 骑行踏频或跑步步频(单脚) |
avg_running_cadence | uint8 | strides/min | session, lap | 平均跑步步频 |
max_running_cadence | uint8 | strides/min | session, lap | 最大跑步步频 |
avg_fractional_cadence | uint8 | rpm,精度 1/128 | session, lap | 平均节奏的小数部分 |
avg_step_length | uint16 | 毫米 (mm) | session, lap | 平均步幅长度 |
step_length | uint16 | 毫米 (mm) | record | 单点瞬时步幅 |
vertical_oscillation | uint16 | 毫米 (mm),精度 0.1 | session, lap, record | 身体垂直振幅 |
avg_vertical_ratio | uint16 | %,精度 0.01 | session, lap | 平均垂直步幅比 |
avg_stance_time | uint16 | 毫秒 (ms),精度 0.1 | session, lap | 平均触地时间 |
avg_stance_time_percent | uint16 | %,精度 0.01 | session, lap | 平均触地时间占比 |
avg_stance_time_balance | uint16 | %,精度 0.01 | session, lap | 左右触地时间平衡 |
2.5 速度与功率类字段
| 字段名 | 数据类型 | 单位 | 所属消息 | 含义 |
|---|---|---|---|---|
avg_speed | uint16 | 米/秒 (m/s),精度 0.001 | session, lap | 平均速度 |
max_speed | uint16 | 米/秒 (m/s),精度 0.001 | session, lap | 最大速度 |
enhanced_speed | uint32 | 米/秒 (m/s),精度 0.001 | record | 单点的高精度速度 |
speed | uint16 | 米/秒 (m/s),精度 0.001 | record | 单点瞬时速度 |
avg_power | uint16 | 瓦特 (watts) | session, lap | 平均功率(通常用于骑行) |
max_power | uint16 | 瓦特 (watts) | session, lap | 最大功率 |
power | uint16 | 瓦特 (watts) | record | 单点瞬时功率 |
normalized_power | uint16 | 瓦特 (watts) | session, lap | 标准化功率(NP) |
intensity_factor | uint16 | IF,精度 0.001 | session | 强度因子 |
training_stress_score | uint16 | TSS,精度 0.1 | session | 训练压力得分 |
time_in_power_zone | uint32 [N] | 秒 (s),精度 0.001 | session, lap | 在各功率区间的停留时间 |
total_work | uint32 | 焦耳 (J) | session, lap | 总做功 |
2.6 游泳专项字段
| 字段名 | 数据类型 | 单位 | 所属消息 | 含义 |
|---|---|---|---|---|
swim_stroke | swim_stroke (enum) | - | session, lap, length | 泳姿类型(自由泳/仰泳/蛙泳/蝶泳等) |
num_lengths | uint16 | 个 (lengths) | session, lap | 泳池长度数量 |
num_active_lengths | uint16 | 个 (lengths) | session, lap | 有效划水长度数量 |
pool_length | uint16 | 米 (m),精度 0.01 | session | 泳池长度 |
avg_stroke_distance | uint16 | 米 (m),精度 0.01 | session, lap | 平均每次划水距离 |
avg_stroke_count | uint32 | 次/池 (strokes/lap),精度 0.1 | session | 平均每趟划水次数 |
2.7 计时器事件字段 (TimerEventType)
| 事件类型 | 枚举值 | 说明 |
|---|---|---|
TIMER_EVENT_START | 0 | 计时器启动 |
TIMER_EVENT_STOP | 1 | 计时器停止 |
TIMER_EVENT_PAUSE | 2 | 计时器暂停 |
TIMER_EVENT_RESUME | 3 | 计时器恢复 |
TIMER_EVENT_LAP | 4 | 计圈事件 |
TIMER_EVENT_RESET | 5 | 计时器重置 |
TIMER_EVENT_WORKOUT_STEP_COMPLETE | 6 | 训练步骤完成 |
TIMER_EVENT_NEXT_MULTISPORT_LEG | 7 | 下一项多项运动开始 |
⚠️ 注意:TimerEventType 在 Connect IQ API 文档中被标记为已弃用(deprecated),可能在 System 8 之后移除。FIT 协议中保留,但在 Connect IQ 开发中建议使用新的计时 API。
叁
Chapter 3 · Field Templates
典型运动的数据字段模板
以"爬楼梯"、"室内跑步"、"室内行走"三个典型室内运动为例。
3.1 爬楼梯 (Stair Climbing)
运动标识:sport=SPORT_FITNESS_EQUIPMENT (4) + sub_sport=SUB_SPORT_STAIR_CLIMBING (16)
常用核心字段:
| 字段名 | 单位 | 重要性 | 说明 |
|---|---|---|---|
total_timer_time | 秒 (s) | ★★★ | 纯运动时间(不含暂停) |
total_elapsed_time | 秒 (s) | ★★ | 总经过时间(含暂停) |
total_ascent | 米 (m) | ★★★ | 核心指标,累计爬升高度 |
total_calories | 千卡 (kcal) | ★★ | 消耗热量 |
avg_heart_rate | bpm | ★★ | 平均心率 |
max_heart_rate | bpm | ★★ | 最大心率 |
time_in_hr_zone | 秒 (s) | ★ | 各心率区间停留时间 |
steps | 步 | ★ | 总步数(如设备支持) |
3.2 室内跑步 (Indoor Running)
运动标识:sport=SPORT_RUNNING (1) + sub_sport=SUB_SPORT_INDOOR_RUNNING (45)
常用核心字段:
| 字段名 | 单位 | 重要性 | 说明 |
|---|---|---|---|
total_timer_time | 秒 (s) | ★★★ | 纯运动时间 |
total_elapsed_time | 秒 (s) | ★★ | 总经过时间 |
total_distance | 米 (m) | ★★★ | 核心指标,距离(由加速度计推算) |
avg_speed | 米/秒 (m/s) | ★★★ | 平均速度 |
max_speed | 米/秒 (m/s) | ★★ | 最大速度 |
total_strides | 步 | ★★★ | 总步数(单脚) |
avg_running_cadence | strides/min | ★★★ | 平均步频 |
max_running_cadence | strides/min | ★★ | 最大步频 |
avg_step_length | 毫米 (mm) | ★★ | 平均步幅 |
avg_heart_rate | bpm | ★★★ | 平均心率 |
max_heart_rate | bpm | ★★ | 最大心率 |
total_calories | 千卡 (kcal) | ★★ | 消耗热量 |
vertical_oscillation | 毫米 (mm) | ★ | 身体垂直振幅 |
avg_stance_time | 毫秒 (ms) | ★ | 平均触地时间 |
3.3 室内行走 (Indoor Walking)
运动标识:sport=SPORT_WALKING (11) + sub_sport=SUB_SPORT_INDOOR_WALKING (27)
常用核心字段:
| 字段名 | 单位 | 重要性 | 说明 |
|---|---|---|---|
total_timer_time | 秒 (s) | ★★★ | 纯运动时间 |
total_elapsed_time | 秒 (s) | ★★ | 总经过时间 |
total_distance | 米 (m) | ★★★ | 核心指标,距离 |
avg_speed | 米/秒 (m/s) | ★★ | 平均速度 |
steps / total_strides | 步 | ★★★ | 总步数 |
avg_running_cadence | strides/min | ★★ | 平均步频(步行节奏) |
avg_heart_rate | bpm | ★★ | 平均心率 |
max_heart_rate | bpm | ★ | 最大心率 |
total_calories | 千卡 (kcal) | ★★ | 消耗热量 |
肆
Chapter 4 · Derived Metrics
参数计算逻辑推导
部分高价值指标无法直接从 FIT 文件读取,需要通过基础字段计算得出。
1
配速 (分钟/公里) = 60 / (speed × 3.6)
其中
speed × 3.6 将米/秒转换为公里/小时。示例:speed = 4.0 m/s → 配速 = 60 / 14.4 ≈ 4分10秒/公里2
步幅 (米/步) = total_distance / total_strides
示例:5000 m ÷ 5000 步 = 1.0 米/步
3
步频 (strides/min) = (total_strides / total_timer_time) × 60
示例:(4500 / 1800) × 60 = 150 strides/min
4
卡路里消耗率 (千卡/小时) = (total_calories / total_timer_time) × 3600
示例:(300 / 1800) × 3600 = 600 千卡/小时
5
垂直步幅比 (%) = (vertical_oscillation / avg_step_length) × 100
反映跑步经济性,数值越小通常表示跑姿更经济。示例:(80 / 1200) × 100 = 6.67%
4.6 标准化功率 (NP) 与强度因子 (IF)
- 标准化功率 (NP):反映骑行过程中生理负荷的加权平均功率,比简单平均功率更能体现间歇性骑行的真实强度。
计算思路:
1. 对每秒的功率值取 30 秒滚动平均 2. 将滚动平均值取 4 次方 3. 计算所有 4 次方值的算术平均 4. 对上一步结果取 4 次方根
- 强度因子 (IF):标准化功率与功能阈值功率 (FTP) 的比值。
6
IF = NP / FTP
IF < 0.75:恢复/有氧 | 0.75-0.85:耐力 | 0.85-0.95:节奏 | >0.95:比赛强度
7
TSS = (NP / FTP)² × (total_timer_time / 3600) × 100
量化单次训练对身体的整体压力。示例:NP=200W,FTP=250W,time=5400s → (0.8)² × 1.5 × 100 = 96
4.8 基础字段汇总
| 派生指标 | 所需基础字段 | 计算公式 |
|---|---|---|
| 配速 (分钟/公里) | speed (m/s) | 60 / (speed × 3.6) |
| 配速 (分钟/英里) | speed (m/s) | 26.8224 / speed |
| 步幅 (米/步) | total_distance, total_strides | total_distance / total_strides |
| 步频 (strides/min) | total_strides, total_timer_time | (total_strides / total_timer_time) × 60 |
| 卡路里消耗率 (千卡/小时) | total_calories, total_timer_time | (total_calories / total_timer_time) × 3600 |
| 垂直步幅比 (%) | vertical_oscillation, avg_step_length | (vertical_oscillation / avg_step_length) × 100 |
| 标准化功率 (NP) | power 序列 | 30s滚动平均 → 4次方平均 → 4次方根 |
| 强度因子 (IF) | NP, FTP | NP / FTP |
| 训练压力得分 (TSS) | NP, FTP, total_timer_time | (NP/FTP)² × (time/3600) × 100 |
附
Appendix · Quick Reference
附录:快速参考
A. 常用运动类型速查
户外跑步
1 RUNNING → 2 STREET
室内跑步
1 RUNNING → 45 INDOOR_RUNNING
户外步行
11 WALKING → 0 GENERIC
室内步行
11 WALKING → 27 INDOOR_WALKING
公路骑行
2 CYCLING → 7 ROAD
爬楼梯
4 FITNESS_EQUIPMENT → 16 STAIR_CLIMBING
泳池游泳
5 SWIMMING → 17 LAP_SWIMMING
力量训练
10 TRAINING → 20 STRENGTH_TRAINING
椭圆机
4 FITNESS_EQUIPMENT → 15 ELLIPTICAL
B. 消息类型速查
| 消息 | 用途 | 频次 |
|---|---|---|
file_id | 文件头,定义文件类型 | 每次 1 条 |
activity | 活动总览 | 每次 1 条 |
session | 活动会话汇总数据 | 每次 1 条(或多条,多项运动) |
lap | 每圈/每段的汇总数据 | 每圈 1 条 |
record | 逐点记录的原始数据 | 每秒 1 条或按设备设置 |
length | 游泳每趟数据 | 每趟 1 条 |
event | 事件标记(开始、暂停、计圈等) | 按事件发生 |
device_info | 设备信息 | 按设备数量 |