TcxDataProtocol
提供一个 TCX XML 格式的 Swift 版本。
安装
TcxDataProtocol 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'TcxDataProtocol'
Swift 包管理器
dependencies: [
.package(url: "https://github.com/FitnessKit/TcxDataProtocol", from: "1.0.2")
]
如何使用
解码
let tcxUrl = URL(fileURLWithPath: "TestFile" + ".tcx")
let tcxData = try? Data(contentsOf: tcxUrl)
if let tcxData = tcxData {
let tcxFile = try? TcxFile.decode(from: tcxData)
}
编码
每个 Trackpoint 的时间必须唯一。以下示例显示了从上一个时间开始的每秒增量。
let workoutStartDateTime = Date()
let build = Build(version: Version(major: 0, minor: 1, buildMajor: 0, buildMinor: 0), time: nil, builder: nil, type: .alpha)
let author = Author(name: "TcxDataProtocol", build: build, language: nil, partNumber: "11-22-33")
let track = [Track(trackPoint: [
Trackpoint(time: workoutStartDateTime.addingTimeInterval(Double(1)), position: nil, altitude: nil, distance: 1.11, heartRate: HeartRateInBeatsPerMinute(heartRate: 100), cadence: 100, sensorState: SensorState.present, extensions: [Extension(activityTrackpointExtension: ActivityTrackpointExtension.init(speed: 11.2, runCadence: nil, watts: 111, cadenceSensor: CadenceSensorType(rawValue: "bike")), activityLapExtension: nil, activityGoals: nil)]),
Trackpoint(time: workoutStartDateTime.addingTimeInterval(Double(2)), position: nil, altitude: nil, distance: 1.11, heartRate: HeartRateInBeatsPerMinute(heartRate: 101), cadence: 101, sensorState: SensorState.present, extensions: [Extension(activityTrackpointExtension: ActivityTrackpointExtension.init(speed: 11.3, runCadence: nil, watts: 222, cadenceSensor: CadenceSensorType(rawValue: "bike")), activityLapExtension: nil, activityGoals: nil)])
])]
let lap = ActivityLap(startTime: workoutStartDateTime, totalTime: 45.0, distance: 12.0, maximumSpeed: nil, calories: 120, averageHeartRate: nil, maximumHeartRate: nil, intensity: .active, cadence: nil, triggerMethod: .manual, track: track, notes: nil, extensions: nil)
let activity = Activity(sport: .biking, identification: workoutStartDateTime, lap: [lap], notes: nil, training: nil, creator: nil)
let activities = ActivityList(activities: [activity], multiSportSession: nil)
let database = TrainingCenterDatabase(activities: activities, courses: nil, author: author)
let TCXFile = TcxFile(database: database)
let encodedData = try? TCXFile.encode(prettyPrinted: true)
if let encodedData = encodedData {
let xml = String(bytes: encodedData, encoding: .utf8)
print(xml!)
}
支持元素
活动列表
活动
活动圈
活动引用
应用
作者
构建
构建类型
课程
课程圈
课程列表
课程点
课程点类型
创建者
性别
心率(每分钟跳动次数)
心率(最大百分比)
强度
多运动训练会话
下一个运动
计划
位置
快速训练结果
传感器状态
运动
轨迹
轨迹点
训练
训练类型
触发方法
版本号
支持扩展
-
活动扩展
踏频传感器类型
活动轨迹点扩展
活动圈扩展
-
活动目标
测量
重复代码
周期
活动目标
活动目标
作者
此软件包由 Kevin A. Hoogheem 开发和维护
许可协议
TcxData协议在MIT许可证下可用