楊 剛 王 曼 屈勝年
(西安郵電大學(xué)通信與信息工程學(xué)院 陜西 710061)
據(jù)世界衛(wèi)生組織統(tǒng)計(jì)顯示,意外跌倒是老年人慢性致殘的第三大原因。全球每年大約30.3%的65歲以上老人、50%的80歲以上老人都發(fā)生過(guò)跌倒,造成了骨折、軟組織挫傷和腦部損害等意外傷害[1~2]。此外,我國(guó)目前高血壓患者約有1.6億且逐年增多[3]。高血壓是老年人最常見(jiàn)的心血管疾病,又是導(dǎo)致腦卒中、冠心病、糖尿病、慢性腎病及心腎功能衰竭,致殘、致死的主要危險(xiǎn)因素之一[4]。由此可見(jiàn),跌倒及高血壓疾病嚴(yán)重影響老人的身心健康和生活質(zhì)量,而且增加了家庭的痛苦和負(fù)擔(dān)。如何及時(shí)發(fā)現(xiàn)異常體征,定位救助跌倒老人在監(jiān)護(hù)設(shè)備中顯得尤為重要。
傳統(tǒng)的監(jiān)護(hù)設(shè)備采用B/S方式,利用固定的PC監(jiān)護(hù),不能便捷及時(shí)監(jiān)護(hù)老人。近些年隨著物聯(lián)網(wǎng)的發(fā)展,市場(chǎng)上已有針對(duì)老人監(jiān)護(hù)問(wèn)題的解決方案。但并不適用于子女等監(jiān)護(hù)人遠(yuǎn)程便捷使用,且功能單一、易用性差,難以滿足老人的健康監(jiān)護(hù)及其對(duì)晚年生活質(zhì)量的更高要求。
本文擬設(shè)計(jì)與實(shí)現(xiàn)基于Android平臺(tái)的老人遠(yuǎn)程定位監(jiān)護(hù)系統(tǒng)。通過(guò)無(wú)線GPRS技術(shù)自動(dòng)將前端設(shè)備所采集的信息上傳到云服務(wù)器,方便子女利用該系統(tǒng)通過(guò)手機(jī)實(shí)時(shí)查看老人跌倒?fàn)顩r、血壓及位置,同時(shí)利用service組件進(jìn)行異常信息的預(yù)警,實(shí)現(xiàn)老人遠(yuǎn)程定位監(jiān)護(hù)功能。
老人遠(yuǎn)程定位監(jiān)護(hù)系統(tǒng)主要分為下位模塊、云服務(wù)器、上位Android手機(jī)客戶端模塊。系統(tǒng)架構(gòu)圖如圖1所示。為了提高下位機(jī)采集模塊中各項(xiàng)指標(biāo)的準(zhǔn)確性,加速度傳感器采用三軸陀螺儀加速度傳感器,血壓傳感器選用光電脈搏波反射傳感器,定位選用sim公司的sim908。云服務(wù)器選擇樂(lè)聯(lián)網(wǎng)公共云平臺(tái),其可以快速搭建實(shí)現(xiàn),且操作簡(jiǎn)捷運(yùn)行穩(wěn)定,可有效地節(jié)約成本。
圖1 系統(tǒng)總體架構(gòu)圖
下位機(jī)主要負(fù)責(zé)數(shù)據(jù)的采集與傳輸,通過(guò)從傳感器獲得血壓、經(jīng)緯度以及加速度數(shù)據(jù),完成對(duì)健康指標(biāo)數(shù)據(jù)的采集和壓縮編碼的處理,最后通過(guò)GSM網(wǎng)絡(luò),經(jīng)過(guò)Internet傳送給云服務(wù)器,客戶端可以通過(guò)Internet訪問(wèn)服務(wù)器并獲得指標(biāo)數(shù)據(jù)。云服務(wù)器是下位機(jī)和客戶端之間的橋梁。
Android客戶端主要完成與服務(wù)器間的數(shù)據(jù)交互以及對(duì)自身數(shù)據(jù)的存儲(chǔ)和處理、網(wǎng)絡(luò)通信等功能,實(shí)現(xiàn)對(duì)所監(jiān)護(hù)老人血壓、位置、跌倒等相應(yīng)信息的監(jiān)測(cè)及預(yù)警功能。
Android是Google開(kāi)發(fā)的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序[5]。本系統(tǒng)采用C/S架構(gòu),其中服務(wù)器采用公共的云平臺(tái),客戶端部分采用Android JAVA開(kāi)發(fā)??蛻舳死胹haredpreferences實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),結(jié)合SOCKET完成網(wǎng)絡(luò)通信,最終編譯之后打包生成APK文件[6],可直接安裝在Android手機(jī)上。相比傳統(tǒng)模式的PC監(jiān)控系統(tǒng),本設(shè)計(jì)不受時(shí)間、地域、環(huán)境、距離等因素限制,利用Android平臺(tái)設(shè)計(jì)控制下位的應(yīng)用軟件,操作方便靈活,具體架構(gòu)圖如圖2。
圖2 Android客戶端架構(gòu)圖
Android手機(jī)客戶端系統(tǒng)測(cè)試采用紅米手機(jī),Android4.4.4版本,內(nèi)核3.10.28。開(kāi)發(fā)環(huán)境為Android+ADT+SDK+JAVA+JDK1.8+Eclipse。云服務(wù)器可以同時(shí)與多個(gè)手機(jī)客戶端進(jìn)行通信,為每個(gè)客戶端分配1個(gè)端口號(hào),用戶登錄進(jìn)入首先從shared-preferences中獲取默認(rèn)設(shè)備ID,然后隨著用戶切換頁(yè)面實(shí)時(shí)獲取當(dāng)前頁(yè)面顯示的相應(yīng)數(shù)據(jù),并且啟動(dòng)service,在service中的定時(shí)器每隔2min向云服務(wù)器發(fā)起請(qǐng)求實(shí)時(shí)獲取血壓、跌倒、位置信息的請(qǐng)求,然后根據(jù)用戶設(shè)置的閾值給出相應(yīng)的提示。老人遠(yuǎn)程定位監(jiān)護(hù)系統(tǒng)具體實(shí)現(xiàn)流程如圖3所示。
圖3 客戶端運(yùn)行流程圖
Android系統(tǒng)采用腳本語(yǔ)言完成界面設(shè)計(jì)[7]。本系統(tǒng)主要包含體征監(jiān)測(cè)界面、位置監(jiān)測(cè)界面與設(shè)置主界面,并利用三個(gè)radiobutton組成的底部導(dǎo)航欄實(shí)現(xiàn)主界面的切換。
體征監(jiān)測(cè)界面主要包括兩部分,分別為血壓監(jiān)測(cè)與跌倒監(jiān)測(cè)。由于兩個(gè)監(jiān)測(cè)頁(yè)面所含部分UI元素相同,且便于以后拓展軟件監(jiān)測(cè)參數(shù),因此采用Fragment結(jié)合viewpager實(shí)現(xiàn)血壓與跌倒兩個(gè)標(biāo)簽頁(yè)的標(biāo)簽點(diǎn)擊切換與滑動(dòng)切換功能。系統(tǒng)采用血壓進(jìn)度條的形式展示老人單詞血壓,利用血壓趨勢(shì)圖分析老人一周血壓數(shù)據(jù),同時(shí)結(jié)合ListView以列表的形式展示老人一年的血壓測(cè)試數(shù)據(jù)。跌倒監(jiān)測(cè)界面運(yùn)用人形的跌倒及站立圖表示老人實(shí)時(shí)的運(yùn)動(dòng)狀態(tài),采用曲線圖展示過(guò)去14min內(nèi)加速度值的變化。
位置監(jiān)測(cè)界面利用高德地圖繪制老人的位置。同時(shí),通過(guò)計(jì)算老人位置和子女設(shè)置的圍欄圓心之間距離與半徑做對(duì)比,從而進(jìn)行圍欄預(yù)警。此外,結(jié)合運(yùn)用grideView實(shí)現(xiàn)的日歷查詢某天老人的運(yùn)動(dòng)軌跡。
設(shè)置主界面主要分為兩部分,一部分為用戶個(gè)人信息設(shè)置,旨在管理用戶。另一部分為系統(tǒng)設(shè)置,主要包括圍欄半徑設(shè)置、圍欄進(jìn)入提醒、圍欄離開(kāi)提醒以及使用助手。
客戶端涉及到大量的數(shù)據(jù)處理,但為節(jié)省手機(jī)內(nèi)存資源,其中大部分?jǐn)?shù)據(jù)都采取實(shí)時(shí)獲取顯示,只有小部分?jǐn)?shù)據(jù)需存儲(chǔ)。由于數(shù)據(jù)量較小,采用SharedPreferences存儲(chǔ)方式,相比市場(chǎng)上采用SQLite數(shù)據(jù)庫(kù)存儲(chǔ)的其它應(yīng)用,此方法避免了創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建表,寫(xiě)SQL語(yǔ)句等諸多操作,相對(duì)而言更加方便簡(jiǎn)潔,更適合客戶端。SharedPreferences數(shù) 據(jù) 存 儲(chǔ) 在/data/data/<packagename>/shared_prefs目錄下。
具體實(shí)現(xiàn)如下:
//獲取變量(默認(rèn)設(shè)備ID)值
public static String getId(){
Return mPreferences.getString(mId,“”);
}
//存儲(chǔ)變量(默認(rèn)設(shè)備ID)值
public static void setId(String id){
SharedPreferences.Editor editor=mPreferences.edit();
editor.putString(mId,id);
editor.commit();
}
采用SharedPreferences存儲(chǔ)的變量有默認(rèn)監(jiān)控設(shè)備ID,默認(rèn)監(jiān)控設(shè)備名,歷史軌跡查詢?nèi)掌?,開(kāi)啟或關(guān)閉進(jìn)入圍欄提醒,開(kāi)啟或關(guān)閉離開(kāi)圍欄提醒。
上位機(jī)可監(jiān)護(hù)多個(gè)下位機(jī)監(jiān)護(hù)設(shè)備,但在同一時(shí)刻只可顯示默認(rèn)設(shè)備的健康信息,若需查看其它設(shè)備的信息,則需通過(guò)已知的設(shè)備ID綁定設(shè)備,并將其設(shè)置為默認(rèn)設(shè)備。
客戶端的通信模塊選用HTTP協(xié)議,HTTP協(xié)議是應(yīng)用層協(xié)議,屬于高層協(xié)議;傳輸層則使用TCP/IP協(xié)議。原理上利用Scoket編程實(shí)現(xiàn)HTTP協(xié)議,Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組API接口[8]。然而實(shí)現(xiàn)HTTP協(xié)議非常耗時(shí),對(duì)Socket套接字以及HTTP協(xié)議細(xì)節(jié)都要非常熟悉,還需經(jīng)過(guò)大量測(cè)試和驗(yàn)證,才可正確實(shí)現(xiàn)HTTP協(xié)議。
Android平臺(tái)的開(kāi)發(fā)環(huán)境中,已經(jīng)集成apache的相關(guān)組件:HttpClient。因此不必寫(xiě)Socket來(lái)實(shí)現(xiàn)HTTP協(xié)議,只需調(diào)用HttpClient來(lái)完成與服務(wù)器對(duì)接的REST API接口即可,大大減輕API接口實(shí)現(xiàn)。然而由于API接口眾多,接口實(shí)現(xiàn)中采用工廠模式以保證系統(tǒng)的高效率,如圖4。
圖4 通信模塊工廠設(shè)計(jì)模式UML圖
基于C/S模式,從建立鏈路的角度可將推送方式分為兩類:一類為服務(wù)器主動(dòng)發(fā)送信息,客戶端顯示數(shù)據(jù),與此同時(shí)保證與服務(wù)器的長(zhǎng)鏈接,當(dāng)服務(wù)器需要再次發(fā)送一批數(shù)據(jù)時(shí),客戶端顯示數(shù)據(jù)并保持連接,以此類推[9]。另一類為客戶端周期性發(fā)起鏈接詢問(wèn),并建立短鏈接,接收完信息則釋放鏈路。相比較兩種方式,前者推送效率較高,因?yàn)椴槐亟⑿碌逆溄?,但由于?dāng)沒(méi)有消息推送時(shí)也必須保持此鏈接,因此會(huì)造成很多資源的浪費(fèi)。在目前網(wǎng)絡(luò)流量消費(fèi)普遍的時(shí)代,為避免搭建服務(wù)器,可以利用現(xiàn)有的云平臺(tái)。本系統(tǒng)就是采用后者實(shí)現(xiàn)推送。
推送主要采用service實(shí)現(xiàn)。service是Android四大組件之一,是一個(gè)沒(méi)有用戶界面的后臺(tái)執(zhí)行耗時(shí)操作的應(yīng)用組件[10]。其他應(yīng)用組件都可以啟動(dòng)service,并且當(dāng)用戶切換到另外的用戶場(chǎng)景時(shí),service將持續(xù)在后臺(tái)運(yùn)行。當(dāng)應(yīng)用啟動(dòng)時(shí),在程序入口Activity中啟動(dòng)service,為保證系統(tǒng)的高效率,在子線程中設(shè)置定時(shí)器,每2分鐘向服務(wù)器發(fā)起請(qǐng)求位置、血壓與是否跌倒信息,當(dāng)請(qǐng)求成功時(shí)可將信息通過(guò)公有類共享給其它需要展示數(shù)據(jù)的界面組件,同時(shí)與用戶預(yù)設(shè)閾值比較。在老人離開(kāi)或進(jìn)入預(yù)設(shè)地理圍欄,老人跌倒,老人血壓非正常時(shí)推送相應(yīng)的報(bào)警信息及時(shí)提醒監(jiān)護(hù)人老人可能發(fā)生意外,監(jiān)護(hù)人可結(jié)合系統(tǒng)提供的老人位置信息及時(shí)施救,從而避免救助不及時(shí)所引發(fā)的身體傷害。此外,每2min的網(wǎng)絡(luò)請(qǐng)求也可滿足推送消息的及時(shí)性要求。
樂(lè)聯(lián)網(wǎng)是一個(gè)可以迅速實(shí)現(xiàn)物聯(lián)網(wǎng)應(yīng)用的公共云平臺(tái)。該云臺(tái)不需要繁瑣編程就可以將傳感器與樂(lè)聯(lián)網(wǎng)平臺(tái)連接,并實(shí)現(xiàn)在該平臺(tái)上存儲(chǔ)、查詢和測(cè)量數(shù)據(jù)的分析。該平臺(tái)還提供了網(wǎng)絡(luò)連接功能模塊,可以讓所有測(cè)量設(shè)備都具備聯(lián)網(wǎng)功能,利于集中監(jiān)控和設(shè)備的管理[11]。該平臺(tái)同時(shí)提供了數(shù)據(jù)查詢、分析、對(duì)比等基本功能。
該系統(tǒng)的主要功能是實(shí)時(shí)獲取老人位置、血壓及是否跌倒信息,并將獲取的信息展示在客戶端顯示屏上;另外,可以在老人進(jìn)入與離開(kāi)用戶設(shè)置的地理圍欄、血壓超出用戶預(yù)設(shè)范圍以及老人跌倒時(shí)給予及時(shí)的數(shù)據(jù)信息推送。
測(cè)試時(shí),首先確保下位機(jī)電量充足,并邀請(qǐng)2位同學(xué)模擬老人一周的生活狀態(tài),并令其在某時(shí)刻模擬老人跌倒。在本系統(tǒng)的監(jiān)控下,對(duì)這兩名同學(xué)進(jìn)行一周不間斷的監(jiān)護(hù)測(cè)試,部分?jǐn)?shù)據(jù)如下列圖所示。
圖5為其中一位同學(xué)一周的血壓信息記錄以及最近一次的血壓狀況分析。圖6為某時(shí)候超出正常血壓范圍所收到的即時(shí)警告信息。
圖5 血壓一周記錄
圖6 老人血壓超出閾值
圖7 為其中一名同學(xué)模擬老人跌倒,記錄跌倒前后十四分鐘內(nèi)加速度值。其中橫坐標(biāo)表示時(shí)間,縱坐標(biāo)表示加速度值。圖8表示加速度值超過(guò)預(yù)警值時(shí)的警告信息,說(shuō)明老人已跌倒。
圖7 老人加速度值記錄
圖8 老人跌倒的警告消息
圖9陰影區(qū)域?yàn)殚_(kāi)啟圍欄功能,同時(shí)用戶設(shè)置地圖上某一位置為圍欄中心,500m為半徑的圍欄區(qū)域。圖10為老人離開(kāi)圍欄區(qū)域的警告信息。
圖9 開(kāi)啟地理圍欄
圖10 老人離開(kāi)圍欄區(qū)域
本文設(shè)計(jì)了一種基于Android的老人遠(yuǎn)程定位監(jiān)護(hù)系統(tǒng),在1臺(tái)Android手機(jī)上可以同時(shí)對(duì)多個(gè)老人實(shí)現(xiàn)遠(yuǎn)程定位監(jiān)護(hù)。系統(tǒng)不僅能時(shí)刻監(jiān)測(cè)老人血壓、心率、跌倒?fàn)顩r和位置,并可在特殊情況下及時(shí)給予推送提示。測(cè)試結(jié)果表明,系統(tǒng)可以實(shí)現(xiàn)上述功能,監(jiān)護(hù)人可通過(guò)該系統(tǒng)更好地了解老人身體狀況,并進(jìn)行及時(shí)救助。
[1]林茵.老年人跌倒的危險(xiǎn)因素及預(yù)防對(duì)策[J].中國(guó)老年學(xué)雜志,2003,23(1):36-37.LIN Yin.The risk factors and prevention countermeasures of the elderly fall[J].Chinese Journal of Gerontology,2003,23(1):36-37.
[2]朱秀芳,陳建英,趙榕.老年人跌倒的預(yù)防及護(hù)理[J].實(shí)用醫(yī)技雜志,2008(28):3932-3933.ZHU Xiufang,CHEN Jianyin,ZHAO Rong.The prevention and nursing of the elderly fall[J].Journal of Practical Medical Techniques,2008(28):3932-3933.
[3]涂良珍,蘆顏美.老年高血壓診治進(jìn)展[J].心血管康復(fù)醫(yī)學(xué)雜志,2010,19(5):555-559.TU Liangzhen,LU Yanmei.The progress of diagnosis and treatment of senile hypertension[J].Chinese Journal of Cardiovascular Rehabilitation Medicine,2010,19(5):555-559.
[4]徐成斌.高血壓治療新策略——‘SELECT’優(yōu)化治療[J].中國(guó)心血管雜志,2007,12(6):401-406.XU Chenbin.Hypertension treatment optimization-‘SELECT’new strategies[J].Chinese Journal of Cardiovascular Medicine,2007,12(6):401-406.
[5]詹成國(guó),朱偉,徐敏.基于Android的測(cè)控裝置人機(jī)界面的設(shè)計(jì)與開(kāi)發(fā)[J].電力自動(dòng)化設(shè)備,2012,32(1):119-122.ZHAN Chengguo,ZHU Wei,XU Min.Man-machine interface design and implementation based on Android for measuring and control unit[J].Electric Power Automation Equipment,2012,32(1):119-122.
[6]尚明華,秦磊磊,王風(fēng)云,等.基于Android智能手機(jī)的小麥生產(chǎn)風(fēng)險(xiǎn)信息采集系統(tǒng)[J].農(nóng)業(yè)工程學(xué)報(bào),2011,27(5):178-181.SHANG Minghua,QIN Leilei,WANG Fengyun,et al.Information collection system of wheat production risk based on Android smartphone[J].Transactions of the Chinese Society of Agricultural Engineering,2011,27(5):178-182.
[7]李慧,劉星橋,李景,等.基于物聯(lián)網(wǎng)Android平臺(tái)的水產(chǎn)養(yǎng)殖遠(yuǎn)程監(jiān)控系統(tǒng)[J].農(nóng)業(yè)工程學(xué)報(bào),2013,29(13):175-180.LI Hui,LIU Xingqiao,LI Jing,et al.Aquiculture remote monitoring system based on IOT Android platform[J].Transactions of the Chinese Society of Agricultural Engineering,2013,29(13):175-181.
[8]袁蒙,王明圓,王婉君,等.獨(dú)居老人智能監(jiān)護(hù)及報(bào)警系統(tǒng)[J].中國(guó)新通信,2012,14(21):7-12.YUAN Men,WANG Yuanyuan,WANG Wanjun,et al.The elderly who live alone smart monitoring and alarm system[J].China New Telecommunications,2012,14(21):7-12.
[9]武江濤,賈衛(wèi),黃小寅,等.無(wú)線音樂(lè)點(diǎn)播系統(tǒng)的研究與開(kāi)發(fā)[J].控制工程,2009(16):126-129.WU Jiangtao,JIA Wei,HUANG Xiaoyin,et al.Research and Development of Wireless Audio Order System[J].Control Engineering of China,2009(16):126-129.
[10]楊猛,呂衛(wèi),宋垣.基于Android的心電監(jiān)護(hù)系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2015,39(14):34-36.YANG Men,LV Wei,SONG Yuan.Design of ECG Monitoring System Based on Android OS[J].ideo Engineering,2015,39(14):34-36.
[11]肖凡,馬婭婕,余湧,等.Arduino和樂(lè)聯(lián)網(wǎng)在PM2.5實(shí)時(shí)監(jiān)測(cè)系統(tǒng)中的應(yīng)用[J].自動(dòng)化儀表,2015,36(12):63-66.XIAO Fan,MA Yajie,YU Yong,et al.Application of Arduino and Lewei 50 in Real-time Monitoring System of PM2.5[J].Process Automation Instrumentation,2015,36(12):63-66.