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

Garmin Monkey C自定义字段无法写入.fit文件活动报告求助

Garmin自定义字段未出现在.fit文件活动报告的解决方案

针对你遇到的自定义字段在运行时创建但未出现在.fit文件活动报告的问题,以下是几个关键排查点和修复方案:

1. 确认字段ID完全一致

XML配置中的fitField id="0"必须和代码里的JUMPS_COUNTER_FIELD_ID常量值完全匹配。检查你的代码中是否正确定义:

const JUMPS_COUNTER_FIELD_ID = 0;

ID不匹配的话,Garmin无法将代码字段与XML配置关联,自然不会在报告中显示。

2. 检查MESG_TYPE的选择与数据提交时机

你使用了MESG_TYPE_SESSION,这属于会话级数据,只会在会话结束时写入一次。需注意:

  • 必须在会话结束时调用stop()和save(),否则会话数据不会写入.fit文件:
function endActivity() {
    if (_session != null) {
        // 确保最后一次更新字段数据
        _customJumpsCounterField.setData(_jumpCount);
        _session.stop();
        _session.save();
        _session = null;
    }
}
  • 如果需要在活动过程中实时记录跳跃次数,建议改用MESG_TYPE_RECORD(记录级数据),修改代码中的:mesgType参数:
_customJumpsCounterField = _session.createField(
    "Jumps",
    JUMPS_COUNTER_FIELD_ID,
    FitContributor.DATA_TYPE_UINT32,
    {
        :mesgType=>FitContributor.MESG_TYPE_RECORD, 
        :units=>"jumps"
    }
);

3. 验证字符串资源定义

确认strings.xml中已正确定义对应标签和单位:

<strings>
    <string id="jumps_label">Jumps</string>
    <string id="jumps_units">jumps</string>
</strings>

缺失字符串资源可能导致字段在报告中无法正常显示。

4. 排查字段初始化逻辑

确保resumeActivity()在活动启动时被正确调用,可添加日志验证字段是否初始化成功:

System.println("Custom field initialized: " + (_customJumpsCounterField != null));

5. 检查权限与活动类型

确认应用已声明ActivityRecording权限,且选择的"Skateboarding"活动类型支持自定义字段。若测试仍有问题,可切换为通用活动类型验证。


内容的提问来源于stack exchange,提问作者Skorejen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:03:25