運動健康南向裝置接入服務傳輸資料解析舉例

華為開發者論壇發表於2021-08-06

隨著穿戴裝置的普及,運動資料的採集變的更加便捷,越來越多的運動健康類App步入人們的視野。對於日常運動資料的跟蹤記錄,成為形形色色運動類App的核心功能。

 

華為運動健康服務提供的南向服務-裝置接入服務,可以幫助開發者實現運動資料的寫入。開發者在開發過程中,需要在App中對裝置回傳的資料進行欄位解析,還原成對應的引數,在App的使用者介面進行展示。


那麼運動裝置返回的資料該如何解析呢?

 

首先我們要了解,華為運動健康提供的裝置接入服務,是基於標準 FTMS協議進行資料傳輸的,所謂 FTMS - 健身器材服務是標準藍芽協議針對運動健身中的訓練資料傳輸做出的單獨定義

 

從協議文件中我們可以瞭解到,標準的FMTS協議已經定義了運動狀態(熱身,低強度,高強度等),健身器材狀態(開啟,停滯等),以及支援的健身器材型別(跑步機,交叉訓練器,階梯攀登者,爬樓梯者,划艇者,室內腳踏車)

 

對於不同健身器材型別的支援情況,可以參考 FTMS協議第三章

對於特定健身器材支援的具體引數,可以參考 FTMS協議第四章

 

需要注意的是,在 FTMS協議中,我們已經對位元組順序已經做了約定, FTMS協議中均採用小端序( little endian),即高的地址位儲存的是低位元組位資料。具體描述可以參考 FTMS協議 3.2章節

 

FMTS協議文件連結如下:

 

好了,具備了上述基礎,我們來舉個例子

 

以划船機為例( Rower Data),我們收到划船機發來的一串資料,他代表什麼含義呢

7e19002700d69c0000000061000000e4000d0000000024000000

 

我們先看下協議中的資料格式,資料可以分為兩大段,第一段是Flags,第二段是引數

 

Flags欄位解析

依據上圖,我們看到資料是以2位元組(16位元位)的Flags開頭的,即7E19,這個16進位制的表示轉換成二進位制,即為0111 1110 0001 1001

但是不要忘了,FTMS是小端序,即左邊8位儲存的其實是低位元位的資料,所以實際上的讀取順序應該是

依據文件,我們可以發現,這個 Flags 標識這段資料上報了以下欄位的內容(需要參考 FTMS 協議中描述的欄位含義)

此時此刻,我們再參考一下FTMS標準協議中4.8.1.1 Flags Field的描述,我們就可以知道這個Flag指示的後續欄位包含的資訊;

 

這裡需要注意的是,每個位元位標識的引數個數並不相同,存在一個位元位對應多個引數的情況,本例中具體的位元位與引數的對應情況可參考下表


 

綜上,我們知道這條資料Flags段告訴我們,接下來的引數段,包含了以下13個引數:

Stroke Rate

Stroke Count

Average Stroke Rate

Total Distance

Instantaneous Pace

Average Pace

Instantaneous Power

Average Power

Total Energy

Energy Per Hour

Energy Per Minute

Elapsed Time

Remaining Time

 

接下來就可以開始具體引數的解析了


Parameter 欄位解析

 

參考指導文件中對各個引數的格式定義,我們可以將引數段的資料按照格式定義的長度進行劃分,以匹配到各個引數,此例資料分割如下:

 

00-2700-d6-9c0000-0000-6100-0000-e400-0d00-0000-00-2400-0000

我們將上述分割好的引數位元組段轉換成十進位制,即可知曉每個引數的含義了。這裡依然不要忘 記FTMS的位元組順序,將各欄位的16進位制的資料轉換為十進位制時,依然要注意讀取順序。解析結果如下:


至此,這樣一條運動資料就解讀完成了,我們可以看到,此使用者在這次划船機運動中,共計劃動了234米,消耗了15千卡的能量;另外我們還可以瞭解具體的划槳數,漿頻,運動消耗的時間等資料。

 

透過這樣一條條運動資料的傳遞及解讀,我們可以記錄跟蹤使用者的鍛鍊情況及日常運動情況,已幫助使用者實現對自身健康和健身的管理需求。

 

更多裝置的接入,請參考

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/rd-0000001050725868-V5 ?ha__source=hms1


欲瞭解 HMS Core 更多詳情,請參閱:
>> 華為開發者聯盟官網

>> 獲取開發指導文件
>> 參與開發者討論請到 CSDN社群 或者 Reddit 社群
>> 下載 demo 和示例程式碼請到 Github 或者 Gitee
>> 解決整合問題請到 Stack Overflow


原文連結: https://developer.huawei.com/consumer/cn/forum/topic/0204580449361770029?fid=18

原作者:胡椒

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2785660/,如需轉載,請註明出處,否則將追究法律責任。

相關文章