楊文君,楊波*,王保強
成都信息工程學院,物理場生物效應及儀器四川省高校重點實驗室,四川,成都,610225
行為醫(yī)學是綜合行為科學和生物醫(yī)學科學知識的一門新興的多學科交叉的學科,在我國興起只有短短的十余年。但隨著科學技術的進步和人們生活水平的提高,行為醫(yī)學得到了迅速的發(fā)展[3]。它研究行為科學中與健康相關的知識和技術,并把這些知識和技術應用于疾病的預防、診斷、治療和康復的學科領域。行為醫(yī)學關注的重點是那些與人的健康關系密切的行為的研究,從而指導人們樹立健康行為,矯正異常行為,改變不合理的生活方式和不良習慣。
隨著我國人民生活水平的不斷提高,汽車等交通工具的日益普及,步行運動和體力活動越來越少,諸多因素促成了肥胖、高血壓、糖尿病和血脂異常等生活方式相關性疾病的流行,并越來越威脅著人們的健康和生命[4]。我國目前約有25% 的城市居民患各種慢性病,60% 的就診病人為慢性病人 ,慢性病正日益嚴重地威脅著我國人民的健康,已成為重要的社會公共問題和醫(yī)療經(jīng)濟增長的主要原因[5]。
傳統(tǒng)的運動量的定義也稱為運動負荷,指人體在體育活動中所承受的生理、心理負荷量以及消耗的熱量,由完成練習的運動強度、持續(xù)時間、動作的準確性和運動項目特點等因素所決定。本文所述的運動量主要是指散步或者跑步的次數(shù),通過智能手機的運動管理軟件來處理該運動量。智能手機的運動量干預屬于行為醫(yī)學的范疇。
根據(jù)專家的調(diào)查顯示,人們在運動過程中應該注意監(jiān)測自己的健康狀態(tài),尤其是糖尿病、高血壓等慢性病患者要定期監(jiān)測自己的各項健康指標,隨時調(diào)整運動量,避免運動過量導致猝死等嚴重后果。心臟病患者最怕運動時過度激烈或者時間過長,從而引起心臟病的發(fā)作。如果是長期不運動的人,這些危險更容易發(fā)生[6],所以需要對他們身體鍛煉進行監(jiān)督和鞭策。本文基于干預治療的理論,不論是對一些不能過度運動的患者還是對那些必須進行身體鍛煉者,進行一種運動干預的作用。通過使用智能手機的運動量干預軟件監(jiān)督和管理,實時的記錄他們的鍛煉情況,并通過遠程健康管理中心根據(jù)患者身體信息及時調(diào)整運動量,以達到對患者最有效最安全的目的。
系統(tǒng)結(jié)構(gòu)設計包括:
(1) 設計運動功能,識別使用者運動狀態(tài)。實現(xiàn)開始運動、暫停運動和停止運動三個基本功能狀態(tài)的管理;
(2) 設計SQL數(shù)據(jù)庫存儲功能,存儲每次的運動信息以及與遠程上位機網(wǎng)絡連接通信;
(3) 設計運動坐標圖顯示以及運動量查詢功能。根據(jù)運動情況繪制運動數(shù)據(jù)坐標圖,通過直觀的坐標圖顯示以及運動量查詢功能查看具體時間運動情況,使用者可以清楚的了解自己的運動情況,根據(jù)自己的身體情況增加和減少運動量;
(4) 上位機端的網(wǎng)絡通信以及數(shù)據(jù)建立。
圖1 系統(tǒng)結(jié)構(gòu)設計Fig.1 Structure design of system
因為該軟件需要通過調(diào)用android智能手機的加速度傳感器,利用加速度傳感器的特性來判斷使用者的運動情況并且記錄運動信息,所以軟件編程時必須先引入關于傳感器幾個重要的的包文件[1],包括:android.hardware.sensor、android.hardware.sensorEvent、android.hardware.sensorManager以及android.hardware.sensorEventListener。
在使用加速度傳感器前,需要對傳感器進行初始化和注冊以后才能使用,使用完后要注銷該傳感器[1]。初始化加速度傳感器獲得該傳感器的使用權(quán)限。初始化和注冊傳感器的代碼都編寫在開始按鈕函數(shù)代碼段當中,當用戶點擊開始運動按鈕后,加速度傳感器就可以正常使用。注銷傳感器的代碼編寫在停止按鈕函數(shù)代碼段中,當使用者停止運動后,需要點擊停止按鈕,此時注銷加速度傳感器。
當注冊好傳感器后,就能開始對運動量計算進行編程。計算編程時在代碼段必須要復寫onSensorChanged(SensorEvent event)函數(shù),因為在運動時傳感器的三個坐標值在不斷變化,變化值就是event.value[3]這個浮點型數(shù)組,從而能通過event.value[3]浮點型數(shù)組里的三個坐標前后值的變化來判斷使用者是否在運動。在event.value[3]浮點型數(shù)組中,event.value[0]代表x軸,event.value[1]代表y軸,event.value[2]代表z軸,當在使用運動傳感器時,這三個坐標值在不停變化。坐標軸方向如圖2所示。
圖2 坐標方向Fig.2 Direction of Coordinate
每隔200 ms去取一次浮點數(shù)組event.value[3]的值,把它存起來。前一個200 ms為舊值存儲在一個浮點型數(shù)組里old Points。當前取得值為新值存儲在另一個浮點型數(shù)組里new Points。由它們的坐標值分別求出模值old Mold、new Mold,以此算出向量改變的夾角。當改變夾角angle大于20o時,判定使用者在運動此時增加一次運動量,并實時顯示此時的運動量。
當使用者點擊停止按鈕停止運動時,注銷傳感器的同時把當前的運動時間和運動量存入SQL數(shù)據(jù)庫。
界面設計涉及到3個Activity:一個主界面的布局、一個坐標圖顯示以及一個運動量具體時間查詢的界面.3個Activity均采取LinearLayout布局[2]。
(1) 主界面涉及到背景、按鈕和文本框顯示的設計。
(2) 坐標圖采用canvas設計,通過引入canvas、Paint和Color的包文件,包括android.graphics.Canvas,android.graphics.Color ,android.graphics.Paint 。 Piant設置畫筆的特性,如paint.setColor(Color.GREEN)用來設置畫筆的顏色。drawLinew函數(shù)用來繪制坐標橫軸、縱軸和點之間的連線,其中橫軸代表時間,縱軸代表運動量。drawCircle函數(shù)用來繪制坐標點,這些坐標點通過讀取數(shù)據(jù)庫的時間和與之對應的運動量進行繪制。drawText函數(shù)用來顯示這些繪制,使用者就可以通過繪制的坐標圖直觀地觀察到自身最近的運動情況。
(3) 運動量時間查詢界面設計了一個時間控件,需要引入的數(shù)據(jù)包有android.widget.DatePicker,android.app.DatePickerDialog,android.app.Dialog,android.app.TimePickerDialog。使用者通過輸入時間來準確查詢當天運動量。
通過坐標圖和運動量查詢功能,使用者可以及時地了解自己的運動情況,從而根據(jù)自身的情況增加和減少運動量。
在手機運用程序中的開始運動按鈕中,設置連接遠程上位機服務器的操作,在點擊運動按鈕的同時,后臺通過socket與指定的IP地址和端口號連接并建立數(shù)據(jù)流。在停止運動按鈕中設置運動信息的發(fā)送功能,當點擊停止運動按鈕后,后臺發(fā)送運動信息到上位機進行存儲,便于遠程健康管理中心能及時了解使用者的運動情況,并可以根據(jù)使用者的身體情況制定適合的運動量反饋給使用者。斷開連接的操作復寫到onPause()函數(shù)中,當退出該程序時直接關閉socket連接和數(shù)據(jù)流發(fā)送[1]。手機端socket連接上位機,并進行數(shù)據(jù)傳輸?shù)某绦蛄鞒倘鐖D3所示。
在上位機開發(fā)平臺,應用VC6.0程序新建一個線程,后臺監(jiān)聽手機端發(fā)送的使用者運動信息,并且將其按使用者的編號進行存儲數(shù)據(jù)。程序首先建立java虛擬機,然后查看java程序:jclass cls = env->FindClass( "NumFile" ),獲取socket通信端口發(fā)送過來的消息jstring result=(jstring)env->CallStaticObjectMethod(cls, mid,env->NewStringUTF( strUTF8.c_str() ) ),并且對信息分類存儲。socket接受程序命名為NumFile.java。上位機端socket連接程序流程如圖4所示。
圖3 手機socket連接程序流程圖Fig.3 The flow chart of mobile phone socket connection program
圖4 上位機socket連接程序流程圖Fig.4 The flow chart of PC socket connection program
在上位機中首先設置數(shù)據(jù)庫存儲,存儲患者基本信息、體檢狀態(tài)、運動量計劃和運動量四個信息,結(jié)構(gòu)如圖5所示。
圖5 上位機數(shù)據(jù)庫結(jié)構(gòu)Fig.5 Database structure of PC
患者基本信息可以使醫(yī)生準確地了解患者的各種信息,以便根據(jù)患者的情況制定科學的身體鍛煉強度,再把這個鍛煉強度反饋給患者,防止患者運動過量的情況發(fā)生。體檢狀況可以反映最近一段時間患者使用該干預系統(tǒng)以后身體的情況,可以根據(jù)每個人自己的身體狀況制定運動計劃,從而達到最好的運動效果。運動量信息反映了使用者最近的使用情況,如果運動量強度太小或者太多時,遠程健康管理中心可以及時反饋信息給使用者,提醒他應該加強還是降低鍛煉強度,起到監(jiān)督使用者的作用。
在上位機開發(fā)平臺上應用VC6.0編寫運動量干預系統(tǒng)軟件,監(jiān)聽和接收手機發(fā)送來的運動信息并存儲在上位機數(shù)據(jù)庫里。上位機運動量干預系統(tǒng)主界面如圖6所示。
圖6 運動量干預系統(tǒng)Fig.6 The invention system of exercise amount
智能手機界面有三個Activity顯示,包括一個主界面,如圖7所示;一個運動量坐標顯示界面,如圖8所示;還有一個運動量查詢界面,如圖9所示。
圖7 手機主界面Fig.7 The interface of mobile phone
圖8 運動量坐標圖顯示Fig.8 The coordinates figure shows of exercise amount
圖9 運動量查詢Fig.9 The exercise amount inquires
基于智能手機運動量的行為干預,可應用于行為醫(yī)學,作為行為治療的新手段。運用運動量干預軟件來幫助用戶,特別是幫助慢性病患者,使他們能科學地進行身體鍛煉。例如對于肥胖2型糖尿病患者,增加步行運動量至19 000步/d,7周后與運動量保持在4 500步/d者相比,不僅能起到明顯的減輕體重作用(減少7.8 kg),而且可顯著提高胰島素的敏感性[7]。在步行運動實踐中,媒體和大眾健康教育者普遍推薦的處方是每天步行10 000步,這一概念可追溯到30多年前國外的一些商業(yè)口號、日本步行俱樂部提出的口號,也得到了一些研究者的認可。但這一目標對于某些人群如老年人和一些慢性病患者可能太高,而對于兒童(防止肥胖)而言則太低,也就是說并不適宜所有人群[8][9]。所以需要健康管理中心結(jié)合使用者的實際病況和體檢狀況,合理的制定運動量并觀察使用者的運動情況。對于一些特殊慢性病患者要防止因運動過量而導致猝死等嚴重后果;對于需要身體鍛煉而懶惰的慢性病患者,需要提醒督促。所以健康管理中心這種及時的有效的監(jiān)督指導,能使使用者進行科學合理的運動,只有這樣才能到達最好最安全的運動效果,從而讓慢性病患者逐步調(diào)整自己的身體狀況。通過使用該軟件對用戶長期的干預,鍛煉身體的同時并且糾正自身不良生活習慣,從而脫離慢性病的困擾,走進健康者的行列。
[1]楊豐盛. Android應用開發(fā)揭秘[M].北京.機械工業(yè)出版社,2010
[2]靳巖, 姚尚朗.Android開發(fā)入門與實踐[M].北京.人民郵電出版社, 2009
[3]甘露, 王志玲, 黃慶軍, 等.我國行為醫(yī)學研究進展[J].白求恩軍醫(yī)學院學報, 2006, 4(1): 35-36.
[4]雒生杰, 孟申.定量步行運動在慢性病康復中的研究現(xiàn)狀[J].中國康復理論與實踐, 2008, 14(9): 847-848.
[5]李桂雪, 鞠彩紅, 劉媛媛, 等.我國慢性病現(xiàn)狀與自我管理[J].黑龍江醫(yī)學, 2010, 34(4): 299-300.
[6]劉姿含.慢性病患者運動要選適合自己的[J].藥物與人, 2008,12:73-74.
[7]Yamanouchi K, Shinozaki T, Chikada K, et a1.Daily walking cornbined with diet therapy is a useful means for obese NIDDM patients not only to reduce body weight but also to improve insulin sensitivity [J].Diabetes Care, l995, 18(6): 775-778.
[8]Tudor-Locke C, Pangrazi RP, Corbin CB, et a1.BMI-referenced standards for recommended pedometer determined steps/day in children[J].Prev Med, 2004, 38(6): 857-864
[9]Tudor Locke C, Bassett DR Jr.How many steps/day are enough Preliminary pedometer indices for public health[J].Sports Med,2004, 34(1): 1-8.