聶 雄,黃曉冬,2,韋海燕,2,馮敏瑜
(1.廣西大學(xué) 機(jī)械工程學(xué)院,廣西 南寧 530004;2.南寧學(xué)院 智能制造學(xué)院,廣西 南寧 530200)
對于下肢運(yùn)動功能障礙的患者,在進(jìn)行下肢康復(fù)訓(xùn)練時需要實(shí)時采集其心率、血壓、血氧以及運(yùn)動狀態(tài)等數(shù)據(jù)[1],從而適時調(diào)節(jié)下肢康復(fù)訓(xùn)練的強(qiáng)度及調(diào)整訓(xùn)練模式,并實(shí)現(xiàn)患者與家屬、醫(yī)院三者之間的遠(yuǎn)程交互,達(dá)到遠(yuǎn)程監(jiān)控的目的,因此設(shè)計(jì)適用的生理信息監(jiān)測裝置是當(dāng)前亟待解決的問題。
國內(nèi)外研究人員對各種生理信息監(jiān)測裝置進(jìn)行了大量的研究。Hsu Chien-Chin 等[2]研究了一種可穿戴的12 導(dǎo)聯(lián)心電圖監(jiān)測系統(tǒng),方便用戶輕松佩戴和拆卸,在步行時可準(zhǔn)確地提供質(zhì)量良好的ECG 信號,并能檢測出心肌缺血、安裝起搏器、室性早搏患者的ECG 特征;Majumder Sumit 等[3]研究了一種非接觸式的可穿戴心電監(jiān)測系統(tǒng),基于電容耦合原理,在心電數(shù)據(jù)采集器和人體皮膚之間隔著紡織衣物也可以采集心電信號,并通過藍(lán)牙無線通信進(jìn)行數(shù)據(jù)傳輸實(shí)現(xiàn)數(shù)據(jù)處理、存儲與顯示;2019 年賈寧等[4]利用終端應(yīng)用主要為Android APP、IOS APP 和微信小程序,醫(yī)療信息處理服務(wù)器采用Hadoop 結(jié)構(gòu),使用Spark 計(jì)算框架,利用分布式數(shù)據(jù)庫SequoiaDB 存儲信息,設(shè)計(jì)基于可穿戴設(shè)備的個性化健康監(jiān)管平臺。將專業(yè)醫(yī)療信息與物聯(lián)網(wǎng)技術(shù)、大數(shù)據(jù)技術(shù)完美融合在一起。2020 年李超[5]設(shè)計(jì)了一款融合多種健康家庭式監(jiān)護(hù)系統(tǒng)的APP 比如血壓計(jì)、血糖儀、血氧儀、心電監(jiān)護(hù)儀等設(shè)備以及服務(wù)器。2022 年任郁苗等[6]設(shè)計(jì)采用STM32F103ZET6 作為系統(tǒng)嵌入式芯片,準(zhǔn)確、快速測出人體的生理參數(shù)信息。
歸類分析目前的多參數(shù)監(jiān)護(hù)儀:一是固定式床邊監(jiān)護(hù)儀,這種監(jiān)護(hù)儀功能強(qiáng)大、性能穩(wěn)定性好,但便攜性差、專業(yè)技能要求高。二是以單片機(jī)為核心的監(jiān)護(hù)儀,雖然小巧適合攜帶,但或者監(jiān)測多生理參數(shù)少、功能不全,或者無無線通訊功能等等。
為了能夠便利、有效、準(zhǔn)確地監(jiān)測患者在下肢康復(fù)訓(xùn)練時的運(yùn)動狀態(tài)和生理信息,設(shè)計(jì)一款基于Android 系統(tǒng),采用腕式可穿戴式智能設(shè)備進(jìn)行數(shù)據(jù)采集,運(yùn)用華為HiHealthKit 運(yùn)動健康的APP 軟件,不需要自行開發(fā)和設(shè)計(jì)終端設(shè)備,簡單方便。
要設(shè)計(jì)可以實(shí)現(xiàn)華為運(yùn)動健康端側(cè)技術(shù)訪問的Android APP,需要通過從系統(tǒng)接入提供的開發(fā)平臺、使用簡易性等對比選擇使用Android Studio 軟件進(jìn)行本課題的開發(fā)工作。
該平臺搭建的方法[7]:利用jdk(JAVA development kit)JAVA 開發(fā)工具包;設(shè)定基于intelliJ IDEA的Android 集成開發(fā)環(huán)境Android Studio,更新SDK;適配手機(jī)驅(qū)動,配置Android Studio。具體是通過可穿戴智能手環(huán)測量經(jīng)過藍(lán)牙傳輸后得到本地?cái)?shù)據(jù),采用集成SDK 的方式,將HiHealth kit 接口包集成到開發(fā)的APP 內(nèi)部,通過HiHealth kit JAVA 接口,用戶授權(quán)APP 可獲取華為運(yùn)動健康A(chǔ)PP 上的本地用戶數(shù)據(jù),或?qū)⑦@些數(shù)據(jù)寫入華為HiHealth 開放平臺。APP 請求用戶授權(quán)交互途徑和用戶授權(quán)界面如圖1。
圖1 用戶、三方APP、華為運(yùn)動健康A(chǔ)PP 三者交互
使用Android Studio 軟件進(jìn)行Android 應(yīng)用開發(fā)中至為關(guān)鍵的一點(diǎn)使用布局,接著就是框架設(shè)計(jì)。
(1)華為HiHealth kit 接口包。通過調(diào)用華為HiHealth kit 接口包里的API 從而完成與HiHealth 平臺的對接,獲得運(yùn)動健康A(chǔ)PP 提供的業(yè)務(wù)服務(wù),如圖2所示。
圖2 三方APP、HiHealthkit 二者交互圖
(2)華為HiHealth kit 接口包的接入。為了在Android Studio 軟件中在本設(shè)計(jì)工程能夠調(diào)用HiHealth kit 接口包,將HiHealth kit 接口包拷貝至工程下的APPlibs 目錄中,然后添加HiHealth kit 接口包的JAR 包依賴,在工程的appuild.gradle 文件的dependencies 中添加代碼:implementation fileT -ree(dir:'libs',include:['*.jar'])。
(3)華為HiHealth kit 的類及其描述。在導(dǎo)入HiHealth kit 接口包后,使用它時需調(diào)用它的工具類。HiHealth kit 接口包的類有HiHealthAuth、HiHealth-DataType、HiHealthData、等七種,分別起著管理三方授權(quán)及用戶讀寫訪問權(quán)限、管理對象存儲、定義了Hi-Health 開放的數(shù)據(jù)類型和數(shù)據(jù)對象等。編寫程序?qū)崿F(xiàn)管理三方授權(quán)及用戶讀寫訪問權(quán)限、管理對象存儲等。
(4)華為HiHealth kit 部分接口應(yīng)用實(shí)例
1)startRealTimeSportData:開始監(jiān)聽實(shí)時運(yùn)動數(shù)據(jù)
A.接口原型:
Public static void startRealTimeSportData(Context context,HiSportDataCallback sportDataCallback)
B.請求參數(shù)見表1。
C.響應(yīng)參數(shù)見表2。
表2 startRealTimeSportData 的onResult 的響應(yīng)參數(shù)
void onResult(int errCode)
onResult 用于控制鏈路的回調(diào)。startRealTimeSportData 的onDataChanged 的響應(yīng)參數(shù)有兩個,onDataChanged 用于接收數(shù)據(jù),其中參數(shù)sportState 表示當(dāng)前運(yùn)動狀態(tài),運(yùn)動狀態(tài)分為STARTED、PASUED、RUNNING、RESUMED 和STOPED 共5 種,這5 種運(yùn)動狀態(tài)之間的狀態(tài)轉(zhuǎn)換關(guān)系如圖3 所示,參數(shù)bundle 以key-value 形式保存當(dāng)前的實(shí)時數(shù)據(jù),在此不再贅述。
圖3 五種運(yùn)動狀態(tài)之間狀態(tài)遷移轉(zhuǎn)換圖
D.實(shí)際代碼調(diào)用:
2)startReadingHeartRate:開始監(jiān)聽實(shí)時心率數(shù)據(jù)
A.接口原型:
Public static void startReadingHeartRate(HiReal-TimeListener hiRealTimeListener)
B.請求參數(shù)見表3。
表3 startReadingHeartRate 的請求參數(shù)
C.響應(yīng)參數(shù)見表4。
表4 startReadingHeartRate 的響應(yīng)參數(shù)
D.實(shí)際代碼調(diào)用:
本設(shè)計(jì)中還調(diào)用涉及HiHealth kit 接口包中許多其他接口,這里就不再一一列舉講明。
本設(shè)計(jì)分別用四個Activity 實(shí)現(xiàn)手機(jī)Android 屏幕的啟動、主頁面、歷史頁面、歷史記錄頁面的設(shè)置。三方APP 軟件的各頁面總體結(jié)構(gòu)框圖如圖4。
圖4 三方APP 軟件的總體結(jié)構(gòu)框圖
(1)啟動頁面Activity
在寫啟動頁面Activity 的Java 文件跟xml 文件時,設(shè)置三秒延時,修改Activity 的順序使其能夠按照設(shè)想的順序進(jìn)行跳轉(zhuǎn)。實(shí)現(xiàn)啟動頁面的主要代碼如下:
(2)主頁面Activity
為了獲得患者運(yùn)動每一秒鐘當(dāng)時的生理信息心率準(zhǔn)確數(shù)據(jù),進(jìn)行如下研究:
1)主頁面顯示
在APP 主頁面用Linechart 設(shè)置折線圖表示當(dāng)前實(shí)時心率,同時顯示當(dāng)前可穿戴式智能設(shè)備得到的當(dāng)次計(jì)時測量步數(shù)、血壓、心率值以及當(dāng)前APP 與華為運(yùn)動健康A(chǔ)PP 連接的鏈路狀態(tài)(注:還可根據(jù)需要設(shè)置血氧測量),運(yùn)動狀態(tài)可分為運(yùn)行、停止、繼續(xù)、暫停、開始五種。
主頁面采取CoordinatorLayout 協(xié)調(diào)者布局作為應(yīng)用的頂層視圖。將Linechart 圖表嵌套在ConstraintLayout 中,為其他子View 提供確定位置的布局。ConstraintLayout 內(nèi)部的子View 即Linechart 可實(shí)現(xiàn)圖表中當(dāng)前坐標(biāo)外心率變化折線圖移出移入該圖表方框范圍的顯示。而AppBarLayout 中的Toolbar 工具欄以點(diǎn)擊的方式在同一個Activity 內(nèi)實(shí)現(xiàn)菜單頁面的打開。
APP 主頁面實(shí)時心率圖橫軸為從開始計(jì)時到當(dāng)前經(jīng)歷的時間(單位為秒),縱軸為當(dāng)前心率數(shù)值,可用手指在實(shí)時心率折線圖的方框里滑動,可看到任意時刻的心率值。并且在心率?時間圖標(biāo)的下方,顯示出當(dāng)次測量的運(yùn)動步數(shù)、實(shí)時心率值(與上方圖表顯示的最新測量所的心率同步)、實(shí)時高壓/低壓值、運(yùn)動狀態(tài),以及本設(shè)計(jì)APP 與華為運(yùn)動健康A(chǔ)PP 的之間連接的鏈路情況。顯示的主要代碼如下:
2)菜單頁面及關(guān)于頁面的顯示
在主頁面顯示的xml 文件中,以CoordinatorLayout 為根布局的AppBarLayout 應(yīng)用欄布局中的Toolbar 工具欄提供了菜單頁面的顯示,通過點(diǎn)擊,可實(shí)現(xiàn)頁面的跳轉(zhuǎn)。
關(guān)于頁面實(shí)現(xiàn)關(guān)鍵代碼:
(3)歷史記錄頁面Activity
歷史記錄頁面Activity 需要儲存顯示的數(shù)據(jù)有:開始時間、持續(xù)時間、運(yùn)動里程、心率等。每單次數(shù)據(jù)的xml 布局采取多重LinearLayout 嵌套的方式,第一至第五行分別是開始時間、持續(xù)時間、運(yùn)動里程、心率值及高低血壓值,并且以垂直布局方式實(shí)現(xiàn)。設(shè)計(jì)歷史記錄頁面實(shí)現(xiàn)關(guān)鍵代碼及具體數(shù)據(jù)存儲代碼。具體數(shù)據(jù)存儲方法以及代碼如下:
i.以時間次序存儲數(shù)據(jù)的文件TimeSeqData.kt 中添加要存儲的數(shù)據(jù)(高低血壓、心率等)數(shù)據(jù)項(xiàng),使其作為數(shù)據(jù)庫中相應(yīng)數(shù)據(jù)的標(biāo)簽。
(4)記錄詳情頁面Activity
記錄詳情頁面Activity 顯示之前存儲的某次測量得到的經(jīng)由可穿戴式智能設(shè)備測量藍(lán)牙技術(shù)支持傳輸?shù)玫酱嬖谟谌A為運(yùn)動健康A(chǔ)PP 中的本地?cái)?shù)據(jù)(包括當(dāng)時測量時主頁面顯示的圖表、單次測量的開始時間,當(dāng)次測量時所走步數(shù)以及單次測量持續(xù)時間)的Activity。
使用真機(jī)調(diào)試,使用Android Studio 把a(bǔ)pk 下載到手機(jī)里(本測試中使用的手機(jī)為華為榮耀7 與華為榮耀20),打開華為運(yùn)動健康A(chǔ)PP,開啟藍(lán)牙功能,對華為可穿戴式智能設(shè)備進(jìn)行綁定和開啟測量,其次開啟應(yīng)用數(shù)據(jù)訪問的授權(quán)允許;使用可穿戴智能設(shè)備進(jìn)行各項(xiàng)數(shù)據(jù)測量,接著打開本設(shè)計(jì)開發(fā)的三方APP,可以看到主頁面上鏈路狀態(tài)為connected、運(yùn)動狀態(tài)為running,并且將該可穿戴智能設(shè)備、華為運(yùn)動健康A(chǔ)PP 上數(shù)據(jù)同步。
進(jìn)行各種頁面Activity 調(diào)試,顯示效果如圖5。
圖5 各種頁面Activity 的實(shí)際顯示效果圖
(1)研究下肢運(yùn)動功能障礙的患者,在進(jìn)行下肢康復(fù)訓(xùn)練時需要采集的生理數(shù)據(jù)信息和運(yùn)動狀態(tài)信息,確定設(shè)計(jì)基于Android 系統(tǒng),采用腕式可穿戴式智能設(shè)備進(jìn)行數(shù)據(jù)采集,從華為運(yùn)動健康端側(cè)技術(shù)訪問,使用Android Studio 軟件進(jìn)行開發(fā)工作,實(shí)現(xiàn)用戶、三方APP、華為運(yùn)動健康A(chǔ)PP 三者交互,運(yùn)用華為HiHealthKit 運(yùn)動健康的APP 軟件的結(jié)構(gòu)方案。
(2)設(shè)計(jì)調(diào)用華為HiHealth kit 接口包里的API從而完成與HiHealth 平臺的對接,添加HiHealth kit接口包的JAR 包依賴,調(diào)用在導(dǎo)入HiHealth kit 的工具類。
(3)設(shè)計(jì)采用三方APP 軟件的各頁面總體結(jié)構(gòu)框圖,分別用四個Activity 實(shí)現(xiàn)手機(jī)Android 屏幕的啟動、主頁面、歷史頁面、歷史記錄頁面的設(shè)置。
總之,通過上述方法實(shí)現(xiàn)有效采集、顯示、監(jiān)控患者在下肢康復(fù)訓(xùn)練時的心率、血壓以及運(yùn)動相關(guān)數(shù)據(jù),以調(diào)整患者下肢康復(fù)訓(xùn)練的強(qiáng)度和訓(xùn)練模式。