文档管理中心
指南运动健康服务应用接入云侧数据开放服务主要数据场景示例路线导入

路线导入

本章节提供通过华为Health Service Kit服务端REST API写入用户路线方法示例。用户的路线是以GPX文件格式导入,可以导入轨迹(Track)或路程(Route)类型的数据。整个流程分为两步:

  1. 通过REST API导入路线数据;
  2. 判断运动健康App版本,以及通过DeepLink方式将路线自动导入至运动健康App。

三方生态应用路线导入路线后,Health Service Kit服务端会生成并返回路线的唯一ID,生态应用可基于路线ID通过DeepLink方式跳转运动健康App我的路线详情页面,自动导入路线至运动健康App中。

说明
  • 路线导入对应的Scope权限为:https://www.huawei.com/healthkit/location.write
  • 通过DeepLink方式完成路线自动导入至运动健康App,暂仅支持Android生态应用。
  • 运动健康App版本不低于13.0.1.310。

路线写入

Route路线写入并获取RouteId

HTTP请求请参见路线导入接口。

收起
自动换行
深色代码主题
复制
  1. PUT
  2. https://health-api.cloud.huawei.com/healthkit/v2/routeInfos?format=GPX

请求示例

收起
自动换行
深色代码主题
复制
  1. PUT
  2. https://health-api.cloud.huawei.com/healthkit/v2/routeInfos?format=GPX

请求体

收起
自动换行
深色代码主题
复制
  1. Content-Type: application/xml
  2. Authorization: Bearer ***
  3. x-client-id: ***
  4. x-version: ***
  5. x-caller-trace-id: ***
  6. <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
  7. <gpx version="1.1" creator="***" xmlns:xsi="***" xmlns="***" xsi:schemaLocation="***">
  8. <metadata>
  9. <time>1970-01-01T00:00:00Z</time>
  10. </metadata>
  11. <extensions>
  12. <totalTime>10000</totalTime>
  13. <totalDistance>10000</totalDistance>
  14. <routeName>testRouteName</routeName>
  15. </extensions>
  16. <rte>
  17. <rtept lat="24.27207756704355" lon="98.6666815648492">
  18. <ele>2186.0</ele>
  19. </rtept>
  20. <rtept lat="24.27218810046418" lon="98.66668171910422">
  21. <ele>2188.0</ele>
  22. </rtept>
  23. <rtept lat="24.27229019048912" lon="98.6667668786458">
  24. <ele>2188.0</ele>
  25. </rtept>
  26. <rtept lat="24.27242784195029" lon="98.6668908573738">
  27. <ele>2188.0</ele>
  28. </rtept>
  29. </rte>
  30. <wpt lat="22.66125"lon="114.063013">
  31. <desc>12</desc>
  32. <name>12</name>
  33. <sym>1</sym>
  34. <extensions>
  35. <mode>1</mode>
  36. <color>1</color>
  37. </extensions>
  38. </wpt>
  39. <wpt lat="22.661431"lon="114.064915">
  40. <desc>13</desc>
  41. <name>13</name>
  42. <sym>2</sym>
  43. <extensions>
  44. <mode>1</mode>
  45. <color>3</color>
  46. </extensions>
  47. </wpt>
  48. </gpx>
说明
  • wpt是CP点信息,包括GPS需要记录的CP点名称,标记颜色等信息。在特定场景才需要导入轨迹标记点,不是必需字段。
  • <totalTime>字段为实际运动的总时间、不包括休息时间,暂停时间等其他时间。

响应体

收起
自动换行
深色代码主题
复制
  1. HTTP/1.1 200 OK
  2. Content-type: application/json;charset=utf-8
  3. {
  4. "routeId": 167001079583340846
  5. }

Track路线导入

HTTP请求请参见路线导入接口。

收起
自动换行
深色代码主题
复制
  1. PUT
  2. https://health-api.cloud.huawei.com/healthkit/v2/routeInfos?format=GPX

请求示例

收起
自动换行
深色代码主题
复制
  1. PUT
  2. https://health-api.cloud.huawei.com/healthkit/v2/routeInfos?format=GPX

请求体

收起
自动换行
深色代码主题
复制
  1. Content-Type: application/xml
  2. Authorization: Bearer ***
  3. x-client-id: ***
  4. x-version: ***
  5. x-caller-trace-id: ***
  6. <?xml version="1.0" encoding="UTF-8"?>
  7. <gpx creator="***" version="1.1" xsi:schemaLocation="***" xmlns:ns3="***" xmlns="***" xmlns:xsi="***" xmlns:ns2="***">
  8. <metadata>
  9. <time>2021-06-30T10:34:55.000Z</time>
  10. </metadata>
  11. <extensions>
  12. <totalTime>10000</totalTime>
  13. <totalDistance>10000</totalDistance>
  14. <routeName>testRouteName2</routeName>
  15. </extensions>
  16. <trk>
  17. <name>跑步</name>
  18. <type>running</type>
  19. <trkseg>
  20. <trkpt lat="22.6551113091409206390380859375" lon="114.05494303442537784576416015625">
  21. <ele>-33.200000762939453125</ele>
  22. <time>2021-06-30T10:35:09.000Z</time>
  23. <extensions>
  24. <ns3:TrackPointExtension>
  25. <ns3:atemp>31.0</ns3:atemp>
  26. <ns3:hr>110</ns3:hr>
  27. <ns3:cad>79</ns3:cad>
  28. </ns3:TrackPointExtension>
  29. </extensions>
  30. </trkpt>
  31. <trkpt lat="22.655114494264125823974609375" lon="114.05494051985442638397216796875">
  32. <ele>-33.40000152587890625</ele>
  33. <time>2021-06-30T10:35:10.000Z</time>
  34. <extensions>
  35. <ns3:TrackPointExtension>
  36. <ns3:atemp>31.0</ns3:atemp>
  37. <ns3:hr>111</ns3:hr>
  38. <ns3:cad>79</ns3:cad>
  39. </ns3:TrackPointExtension>
  40. </extensions>
  41. </trkpt>
  42. <trkpt lat="22.65512078069150447845458984375" lon="114.05494404025375843048095703125">
  43. <ele>-33.59999847412109375</ele>
  44. <time>2021-06-30T10:35:11.000Z</time>
  45. <extensions>
  46. <ns3:TrackPointExtension>
  47. <ns3:atemp>31.0</ns3:atemp>
  48. <ns3:hr>112</ns3:hr>
  49. <ns3:cad>79</ns3:cad>
  50. </ns3:TrackPointExtension>
  51. </extensions>
  52. </trkpt>
  53. <trkpt lat="22.654982395470142364501953125" lon="114.05491151846945285797119140625">
  54. <ele>-33.59999847412109375</ele>
  55. <time>2021-06-30T10:35:13.000Z</time>
  56. <extensions>
  57. <ns3:TrackPointExtension>
  58. <ns3:atemp>31.0</ns3:atemp>
  59. <ns3:hr>114</ns3:hr>
  60. <ns3:cad>77</ns3:cad>
  61. </ns3:TrackPointExtension>
  62. </extensions>
  63. </trkpt>
  64. </trkseg>
  65. </trk>
  66. <wpt lat="22.66125"lon="114.063013">
  67. <desc>12</desc>
  68. <name>12</name>
  69. <sym>1</sym>
  70. <extensions>
  71. <mode>1</mode>
  72. <color>1</color>
  73. </extensions>
  74. </wpt>
  75. <wpt lat="22.661431"lon="114.064915">
  76. <desc>13</desc>
  77. <name>13</name>
  78. <sym>2</sym>
  79. <extensions>
  80. <mode>1</mode>
  81. <color>3</color>
  82. </extensions>
  83. </wpt>
  84. </gpx>
说明

wpt是CP点信息,包括GPS需要记录的CP点名称,标记颜色等信息。在特定场景才需要导入轨迹标记点,不是必需字段。

响应体

收起
自动换行
深色代码主题
复制
  1. HTTP/1.1 200 OK
  2. Content-type: application/json;charset=utf-8
  3. {
  4. "routeId": 167001079583340846
  5. }

DeepLink跳转运动健康App完成路线自动导入

Android

获取华为运动健康App版本号

收起
自动换行
深色代码主题
复制
  1. long versionCode;
  2. try {
  3. PackageInfo packageInfo =
  4. this.getPackageManager().getPackageInfo("com.huawei.health", PackageManager.GET_META_DATA);
  5. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
  6. versionCode= packageInfo.getLongVersionCode();
  7. } else {
  8. versionCode= packageInfo.versionCode;
  9. }
  10. } catch (PackageManager.NameNotFoundException e) {
  11. versionCode = 0L;
  12. }

DeepLink跳转

当获取华为运动健康App版本号返回的versionCode不低于1300001310 时,可使用DeepLink跳转功能。

展开

跳转类型

跳转地目的地

目标类型

跳转地址

跳转参数

是否必填

参数类型

跳转参数说明

DeepLink

运动健康App-我的路线详情页面

Activity

huaweischeme://healthapp/router/routeDetail

fromFlag

String

填写固定值:"cloud_flag"

routeId

long

路线写入成功后返回的路线ID

示例代码:

收起
自动换行
深色代码主题
复制
  1. String deeplink = "huaweischeme://healthapp/router/routeDetail?fromFlag=cloud_flag&routeId=" + routeId;
  2. Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(deeplink));
  3. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
  4. startActivity(intent);

IOS

iOS版本15.0.12.305及以上。

DeepLink跳转

展开

跳转类型

跳转地目的地

目标类型

跳转地址

跳转参数

是否必填

参数类型

跳转参数说明

DeepLink

运动健康App-我的路线详情页面

Activity

huaweischeme://healthapp/router/routeDetail?fromFlag=cloud_flag&routeId=" + routeId

routeId

long

路线写入成功后返回的路线ID

示例代码:

收起
自动换行
深色代码主题
复制
  1. let routeId: String = "1234"
  2. let deeplink: String = "huaweischeme://healthapp/router/routeDetail?fromFlag=cloud_flag&routeId=\(routeId)"
  3. guard let openUrl = URL(string: deeplink) else {
  4. return false
  5. }
  6. if UIApplication.shared.canOpenURL(openUrl) {
  7. UIApplication.shared.open(openUrl, options: [:], completionHandler: nil)
  8. }
在 指南 中进行搜索
请输入您想要搜索的关键词