運動健康路線匯入,助力使用者輕鬆導航

HMSCore發表於2023-03-30

華為HMS Core運動健康服務支援透過REST API,以GPX檔案格式寫入使用者路線資料,支援匯入軌跡(Track)或路程(Route)型別的資料,實現使用者路線資料在華為運動健康App中的展示效果。

假若與華為運動健康App相連線的穿戴裝置支援路線匯入,那麼使用者路線資料將自動下發至穿戴裝置。使用者可使用手錶輕鬆導航,按照既定路線進行跑步、爬山等活動。(當前支援的裝置有:HUAWEI WATCH GT 3系列、HUAWEI WATCH GT RUNNER。您可以在華為運動健康App—我的—我的線路中檢視最新的路線匯入裝置支援情況。)

流程如下:

使用者透過生態應用匯出GPX檔案。

生態應用透過呼叫REST API完成路線資料寫入,並透過響應體獲取路線ID(routeId)。

根據上一步返回的路線ID,透過DeepLink方式完成路線自動匯入至華為運動健康App。

路線匯入對應的Scope許可權為https://www.huawei.com/healthkit/location.write

路線資料寫入場景化示例程式碼

  1. Route路線寫入
請求示例
PUT
https://health-api.cloud.huawei.com/healthkit/v1/routeInfos?format=GPX
請求體
Content-Type: application/xml
Authorization: Bearer ***
x-client-id: ***
x-version: ***
x-caller-trace-id: ***
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<gpx version="1.1" creator="***" xmlns:xsi="***" xmlns="***" xsi:schemaLocation="***">
    <metadata>
        <time>1970-01-01T00:00:00Z</time>
    </metadata>
    <extensions>
        <totalTime>10000</totalTime>
        <totalDistance>10000</totalDistance>
        <routeName>testRouteName</routeName>
    </extensions>
    <rte>
        <rtept lat="24.27207756704355" lon="98.6666815648492">
            <ele>2186.0</ele>
        </rtept>
        <rtept lat="24.27218810046418" lon="98.66668171910422">
            <ele>2188.0</ele>
        </rtept>
        <rtept lat="24.27229019048912" lon="98.6667668786458">
            <ele>2188.0</ele>
        </rtept>
        <rtept lat="24.27242784195029" lon="98.6668908573738">
            <ele>2188.0</ele>
        </rtept>
</rte></gpx>
響應體
HTTP/1.1 200 OK
Content-type: application/json;charset=utf-8
{
    "routeId": 167001079583340846
}
  1. Track路線匯入
請求示例
PUT
https://health-api.cloud.huawei.com/healthkit/v1/routeInfos?format=GPX
請求體
Content-Type: application/xml
Authorization: Bearer ***
x-client-id: ***
x-version: ***
x-caller-trace-id: ***
<?xml version="1.0" encoding="UTF-8"?>
<gpx creator="***" version="1.1" xsi:schemaLocation="***" xmlns:ns3="***" xmlns="***" xmlns:xsi="***" xmlns:ns2="***">
  <metadata>
    <time>2021-06-30T10:34:55.000Z</time>
  </metadata>
  <extensions>
    <totalTime>10000</totalTime>
    <totalDistance>10000</totalDistance>
    <routeName>testRouteName2</routeName>
  </extensions>
  <trk>
    <name>跑步</name>
    <type>running</type>
    <trkseg>
      <trkpt lat="22.6551113091409206390380859375" lon="114.05494303442537784576416015625">
        <ele>-33.200000762939453125</ele>
        <time>2021-06-30T10:35:09.000Z</time>
        <extensions>
          <ns3:TrackPointExtension>
            <ns3:atemp>31.0</ns3:atemp>
            <ns3:hr>110</ns3:hr>
            <ns3:cad>79</ns3:cad>
          </ns3:TrackPointExtension>
        </extensions>
      </trkpt>
      <trkpt lat="22.655114494264125823974609375" lon="114.05494051985442638397216796875">
        <ele>-33.40000152587890625</ele>
        <time>2021-06-30T10:35:10.000Z</time>
        <extensions>
          <ns3:TrackPointExtension>
            <ns3:atemp>31.0</ns3:atemp>
            <ns3:hr>111</ns3:hr>
            <ns3:cad>79</ns3:cad>
          </ns3:TrackPointExtension>
        </extensions>
      </trkpt>
      <trkpt lat="22.65512078069150447845458984375" lon="114.05494404025375843048095703125">
        <ele>-33.59999847412109375</ele>
        <time>2021-06-30T10:35:11.000Z</time>
        <extensions>
          <ns3:TrackPointExtension>
            <ns3:atemp>31.0</ns3:atemp>
            <ns3:hr>112</ns3:hr>
            <ns3:cad>79</ns3:cad>
          </ns3:TrackPointExtension>
        </extensions>
      </trkpt>
      <trkpt lat="22.654982395470142364501953125" lon="114.05491151846945285797119140625">
        <ele>-33.59999847412109375</ele>
        <time>2021-06-30T10:35:13.000Z</time>
        <extensions>
          <ns3:TrackPointExtension>
            <ns3:atemp>31.0</ns3:atemp>
            <ns3:hr>114</ns3:hr>
            <ns3:cad>77</ns3:cad>
          </ns3:TrackPointExtension>
        </extensions>
      </trkpt>
    </trkseg>
  </trk>
</gpx>
響應體
HTTP/1.1 200 OK
Content-type: application/json;charset=utf-8
{
    "routeId": 167001079583340846
}
  1. DeepLink跳轉運動健康App完成路線自動匯入

三方生態應用執行路線寫入完成後,Health Kit服務端會生成並返回路線的唯一ID,生態應用可攜帶路線ID透過DeepLink方式跳轉運動健康App我的路線詳情頁面,自動匯入路線至運動健康App中。

開發者使用DeepLink跳轉功能前,需要獲取華為運動健康App版本號,查詢結果返回的versionCode不低於 1300001310時支援此功能。

引數說明

示例程式碼

String deeplink = "huaweischeme://healthapp/router/routeDetail"; // scheme字首               
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(deeplink));
intent.putExtra("fromFlag", "cloud_flag");  // 傳入scheme固定引數
intent.putExtra("routeId", routeId);        // 傳入scheme引數,路線ID
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

瞭解更多詳情>>

訪問華為開發者聯盟官網
獲取開發指導文件
華為移動服務開源倉庫地址:GitHubGitee

關注我們,第一時間瞭解 HMS Core 最新技術資訊~

相關文章