Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

小米运动健康App导出的TCX文件结构与TCXReader解析格式不兼容,导致无法获取心率信息 #710

Open
RiverOnVenus opened this issue Sep 8, 2024 · 9 comments

Comments

@RiverOnVenus
Copy link

RiverOnVenus commented Sep 8, 2024

Edit: tcx同步到strava

小米运动健康导出的tcx结构:

<TrainingCenterDatabase creator="Mi Fitness" version="1.0" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
<script/>
<Activities>
<Activity Sport="">
<Id>2024-09-08T19:08:07.000Z</Id>
<Lap>
<TotalTimeSeconds>2425</TotalTimeSeconds>
<DistanceMeters>5178</DistanceMeters>
<Calories>198</Calories>
<HeartRateBpm>135</HeartRateBpm>
<Steps>6860</Steps>
<Track>
<Trackpoint>
<Time>2024-09-08T19:08:06.000Z</Time>
<Position>
<LatitudeDegrees>30.681241989135742</LatitudeDegrees>
<LongitudeDegrees>103.96613311767578</LongitudeDegrees>
</Position>
</Trackpoint>
...
</Track>
</Lap>
</Activity>
</Activities>
</TrainingCenterDatabase>

在这里,<HeartRateBpm>135</HeartRateBpm>对应app里的平均心率。

https://github.com/alenrajsp/tcxreader (代码里的import TCXReadert是这个吧)的示例tcx文件结构:

<Trackpoint>
    <Time>2020-12-26T15:50:21.000Z</Time>
    <Position>
        <LatitudeDegrees>46.49732105433941</LatitudeDegrees>
        <LongitudeDegrees>15.496849408373237</LongitudeDegrees>
    </Position>
    <AltitudeMeters>2277.39990234375</AltitudeMeters>
    <DistanceMeters>5001.52978515625</DistanceMeters>
    <HeartRateBpm>
        <Value>148</Value>
    </HeartRateBpm>
    <Extensions>
        <ns3:TPX>
            <ns3:Speed>3.3589999675750732</ns3:Speed>
            <ns3:RunCadence>61</ns3:RunCadence>
        </ns3:TPX>
    </Extensions>
</Trackpoint>

在这里,<HeartRateBpm>包含一个<Value>标签来存储心率数据而且在<Trackpoint>里面。

不会改代码。。尝试在小米导出的tcx文件第一个<Trackpoint>里加上对应<HeartRateBpm>字段确实能够读到心率数据。。。

<Track>
<Trackpoint>
<Time>2024-09-08T19:08:06.000Z</Time>
<Position>
<LatitudeDegrees>30.681241989135742</LatitudeDegrees>
<LongitudeDegrees>103.96613311767578</LongitudeDegrees>
</Position>
<HeartRateBpm>
<Value>135</Value>
</HeartRateBpm>
</Trackpoint>

image

不知道这个问题能解决不。。

THx

@yihong0618
Copy link
Owner

我们看看感觉可以改

@RiverOnVenus
Copy link
Author

好的,这是一份从小米导出的tcx文件

https://0x0.st/s/kNY5jnWboeRR7oUoo2AJmg/Xxrh.tcx

@yihong0618
Copy link
Owner

同步到 starva strava 也没心率对吧?

@RiverOnVenus
Copy link
Author

同步到 starva strava 也没心率对吧?

是的,同步到 strava 没有心率

@RiverOnVenus
Copy link
Author

同步到 starva strava 也没心率对吧?

原始的tcx同步过去没有,手动加了心率字段同步过去有,上面的tcx是一份从小米导出的原始tcx

@yihong0618
Copy link
Owner

不太对啊,心率应该有很多,为啥只有一个点?

@RiverOnVenus
Copy link
Author

看起来是小米这边导出的只记录了平均心率

@Flavored4179
Copy link
Contributor

看起来是小米这边导出的只记录了平均心率

我用小米手环7pro在小米运动健康导出tcx文件,跟你的不大一样,平均心率、步数和卡路里这几个都没有,是不是不同手环或手表导出的文件结构会不一样。

@RiverOnVenus
Copy link
Author

RiverOnVenus commented Sep 28, 2024

看起来是小米这边导出的只记录了平均心率

我用小米手环7pro在小米运动健康导出tcx文件,跟你的不大一样,平均心率、步数和卡路里这几个都没有,是不是不同手环或手表导出的文件结构会不一样。

唉怎么还不一样。。。不同手环/手表不一样那小米这边同步心率等数据就不好搞了感觉。。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants