賈泳蓓
(常州工學(xué)院計(jì)算機(jī)工程學(xué)院,江蘇常州213002)
JIA Yongbei
(School of Computer Information & Engineering,Changzhou Institute of Technology,Changzhou 213002)
?
基于藍(lán)牙的血糖管家助手手機(jī)App的設(shè)計(jì)與實(shí)現(xiàn)
賈泳蓓
(常州工學(xué)院計(jì)算機(jī)工程學(xué)院,江蘇常州213002)
隨著“物聯(lián)網(wǎng)”概念的提出,智能手機(jī)的運(yùn)用達(dá)到了一個(gè)新高度。血糖管家助手是一款面向需要糖尿病監(jiān)護(hù)人群的、基于藍(lán)牙的移動(dòng)醫(yī)療終端App。該終端基于Android平臺(tái),以JDK為開發(fā)環(huán)境,采用Java語言和SQL數(shù)據(jù)庫設(shè)計(jì)并實(shí)現(xiàn),擁有人工輸入數(shù)據(jù)和藍(lán)牙自動(dòng)上傳數(shù)據(jù)2種數(shù)據(jù)傳輸形式,同時(shí)可根據(jù)獲得的測量數(shù)據(jù)智能分析血糖指標(biāo)的嚴(yán)重程度,并將這些數(shù)據(jù)繪制成趨勢圖表統(tǒng)計(jì)某天的健康狀況。
Android;Java;藍(lán)牙;血糖管家手機(jī)App
JIA Yongbei
(School of Computer Information & Engineering,Changzhou Institute of Technology,Changzhou 213002)
自進(jìn)入21世紀(jì)以來,全球糖尿病例呈逐年遞增趨勢,這是一種易發(fā)、多發(fā)病癥,已經(jīng)成為繼心腦血管病和癌癥之后,嚴(yán)重侵害人類健康的“第三大殺手”。就目前醫(yī)療技術(shù)和設(shè)施條件來講,始終無法從根本上有效治療糖尿病,只能通過連續(xù)的血糖監(jiān)測加以控制[1]。隨著近幾年來家用醫(yī)療器械的迅速發(fā)展,家用血糖檢測儀器已經(jīng)開始逐漸普及。目前,已有不少在售的家用血糖檢測儀器附帶了簡單的隨機(jī)軟件,其界面各異,功能不同,但是基本功能都一樣,即數(shù)據(jù)的存儲(chǔ)和趨勢圖的繪制,或者增加一個(gè)計(jì)算血糖檢測結(jié)果平均值的功能。這些功能其實(shí)更適合于提供給主治醫(yī)師作為治療依據(jù),患者個(gè)人參考價(jià)值并不大。
以羅氏為代表的傳統(tǒng)血糖監(jiān)測儀由于附帶了自己的血糖管理軟件,因此價(jià)格上相比普通的家用血糖儀昂貴。而血糖管家助手作為家用血糖檢測儀器的輔助軟件,僅需通過藍(lán)牙連接普通的血糖檢測設(shè)備,在保留多用戶管理、標(biāo)準(zhǔn)血糖值快速對比、趨勢圖繪制等功能的基礎(chǔ)上,還增加了血糖指標(biāo)高低程度判斷的全新功能。
現(xiàn)如今,常見的智能手機(jī)開發(fā)平臺(tái)有Symbian、IOS、Windows以及當(dāng)下正在蒸蒸日上的Android。而Android系統(tǒng)基于其開源和免費(fèi)性,有著極高的市場普及率?;谏鲜鲈?,本課題最終采用Android為開發(fā)平臺(tái)。
藍(lán)牙作為一種短程通信技術(shù),雖然與NFC相比功耗較高,設(shè)置程序也略長,但其網(wǎng)絡(luò)類型支持單點(diǎn)對多點(diǎn),傳輸速度與距離也有很大優(yōu)勢,目前仍是眾多移動(dòng)設(shè)備之間進(jìn)行無線信息交換的主流技術(shù)。因此,本課題也采用了藍(lán)牙作為智能手機(jī)與家用血糖儀之間數(shù)據(jù)交換的載體。
基于藍(lán)牙的血糖管家助手手機(jī)App,在Android平臺(tái)下,輔以科學(xué)的血糖分析方法,符合大多數(shù)糖尿病患者對于血糖監(jiān)測管理方面的要求。本系統(tǒng)的主要功能包括數(shù)據(jù)管理模塊、用戶管理模塊、藍(lán)牙上傳數(shù)據(jù)模塊和曲線擬合模塊。數(shù)據(jù)管理模塊主要是實(shí)現(xiàn)記錄功能,用戶手動(dòng)輸入數(shù)據(jù),主要包括血糖值、性別、身高及所在地址;用戶管理模塊包括修改個(gè)人信息、查詢個(gè)人信息、修改密碼及注銷登錄;藍(lán)牙上傳數(shù)據(jù)模塊是通過藍(lán)牙連接血糖儀,并控制血糖儀測量血糖從而實(shí)現(xiàn)藍(lán)牙數(shù)據(jù)傳送;曲線擬合模塊是顯示曲線,比對標(biāo)準(zhǔn)血糖曲線進(jìn)行初步的判斷,再根據(jù)血糖預(yù)測算法,分析病患血糖指標(biāo)的高低程度,最終給出健康評估報(bào)告。
1.1設(shè)計(jì)方案
1)搭建開發(fā)平臺(tái)。這里包括JDK的下載安裝與環(huán)境配置、Eclipse的下載與安裝、SDK的下載與安裝以及ADT的下載與安裝[2]。
2)設(shè)計(jì)手機(jī)的程序框架。根據(jù)需求分析,對每個(gè)模塊進(jìn)行程序?qū)崿F(xiàn)方法的規(guī)劃。血糖管家助手主要有4個(gè)功能模塊,即數(shù)據(jù)管理模塊、個(gè)人信息管理模塊、藍(lán)牙上傳數(shù)據(jù)模塊和曲線擬合模塊。
3)編寫代碼。用Java語言進(jìn)行程序編寫,實(shí)現(xiàn)血糖測量和管理的基本功能。
4)調(diào)試程序。程序完成后,為檢測軟件是否符合需求分析和能否實(shí)現(xiàn)任務(wù)書要求的功能,需要進(jìn)行系統(tǒng)測試。系統(tǒng)測試主要采用黑盒測試和白盒測試,然后根據(jù)測試結(jié)果來修改程序,使之更加完善。
5)優(yōu)化用戶界面。界面的優(yōu)化主要是為了使用戶體驗(yàn)更好、更流暢。
1.2功能模塊設(shè)計(jì)
系統(tǒng)總體應(yīng)劃分為四大模塊(不包括登錄注冊模塊),具體的劃分如圖1所示。
圖1 功能結(jié)構(gòu)模塊示意圖
2.1系統(tǒng)模塊實(shí)現(xiàn)
基于對功能作用的考核,整個(gè)程序應(yīng)劃分成如下四大版塊,分別是程序啟動(dòng)、用戶界面、后臺(tái)服務(wù)和數(shù)據(jù)庫適配器,模塊關(guān)系圖[3]如圖2。
圖2 模塊關(guān)系圖
從模塊結(jié)構(gòu)圖中可以看出,后臺(tái)服務(wù)是中心樞紐。其中,主要的就是“數(shù)據(jù)獲取模塊”,它負(fù)責(zé)獲取由藍(lán)牙連接血糖儀后測出的血糖值。后臺(tái)服務(wù)處在服務(wù)器位置,時(shí)刻保證正常工作態(tài)勢。
用戶界面可以在數(shù)據(jù)庫內(nèi)搜索資料,其優(yōu)點(diǎn)在于:一方面可以保證客戶端的穩(wěn)定性;另一方面,后臺(tái)服務(wù)持續(xù)對數(shù)據(jù)進(jìn)行更新,從而保證其實(shí)效性和準(zhǔn)確度。
數(shù)據(jù)庫適配器包涵了可以對SQLite進(jìn)行作用的所有工作流程,用戶界面對其實(shí)施調(diào)配達(dá)到操作數(shù)據(jù)庫的目的。
用戶界面、數(shù)據(jù)庫及模塊設(shè)計(jì)包涵了程序設(shè)計(jì)的幾乎所有內(nèi)容。
2.2曲線擬合模塊實(shí)現(xiàn)
系統(tǒng)生成曲線的方法有很多。為了讓曲線不受數(shù)據(jù)的范圍限制,可以沿X軸和Y軸靈活地拖拉,本文使用的方法是導(dǎo)入第三方j(luò)ar包和achartengine-0.7.0.jar包,然后調(diào)用其中已經(jīng)封裝好的類和函數(shù)。
曲線擬合模塊設(shè)計(jì)的類也比較多,主要的類是XueTang_Chart_Activity。曲線擬合模塊的主要設(shè)計(jì)思路是將輸入的數(shù)據(jù)與專家數(shù)據(jù)進(jìn)行對比,以便分析曲線并得出結(jié)論,其布局就是調(diào)用setContentView( )語句,采用R.layout下的xuetang_chart_activity布局文件。
向后臺(tái)請求獲取專家數(shù)據(jù)并返回是用GetPostOper( )語句,訪問的服務(wù)器名稱是WebUrl。這里返回涉及JSONObject jsonObject=new JSONObject( )語句。JSONObject-lib包是1個(gè)beans,collections,maps,java arrays,xml和JSON互相轉(zhuǎn)換的包,而JSONObject( )是創(chuàng)建1個(gè)JSONObject( )對象。返回的內(nèi)容包括獲取的專家數(shù)據(jù)和用戶名。這里調(diào)用了MyApplication中的1個(gè)存放著用戶信息的全局變量infoBean來獲取用戶信息。
選擇日期用的是日歷控件,包括年、月、日且是輪轉(zhuǎn)的。整體的對話框用AlertDialog.Builder builder=new AlertDialog.Builder(this)語句來實(shí)現(xiàn)。AlertDialog是Dialog的一個(gè)直接子類,也是Android系統(tǒng)中常用的對話框之一。AlertDialog所有的構(gòu)造方法都是寫保護(hù)的,因此不能通過AlertDialog的構(gòu)造函數(shù)產(chǎn)生1個(gè)AlertDialog,而只能通過AlertDialog.Builder來產(chǎn)生。一旦監(jiān)聽到“請選擇日期”被確定,就會(huì)用Thread t1=new Thread( )來啟動(dòng)線程。
獲取特定日期的值大致與獲取專家數(shù)據(jù)類似,也是通過GetPostOper( )語句來向后臺(tái)請求數(shù)據(jù)。返回的數(shù)據(jù)是用戶名、日期及特定日期的值。與獲取專家數(shù)據(jù)不同,這里調(diào)用的是MyDataBean類。MyDataBean類中定義了獲取的時(shí)間(精確到小時(shí))及獲取的地址、數(shù)據(jù)值。
獲取數(shù)據(jù)值后要顯示曲線,需要數(shù)據(jù)dataset和視圖渲染器renderer。曲線有2條,即輸入的數(shù)據(jù)曲線和專家數(shù)據(jù)曲線。曲線顯示在坐標(biāo)軸中,分為X軸和Y軸,X軸是時(shí)間,Y軸是血糖值。
首先,設(shè)置X軸的當(dāng)前方向,語句是XYMultipleSeriesRenderer mRenderer=new XYMultipleSeriesRenderer( ),還要設(shè)置Y軸的最小單位及刻度個(gè)數(shù)、背景顏色、X軸和Y軸的標(biāo)題屬性、圖表標(biāo)題的屬性。設(shè)置這些屬性用的語句都是mRenderer.set。
其次,分別設(shè)置專家數(shù)據(jù)和個(gè)人數(shù)據(jù)的數(shù)據(jù)點(diǎn)的屬性并將點(diǎn)的值顯示出來。設(shè)置第1條曲線上點(diǎn)的屬性采用r.set語句,設(shè)置第2條曲線上點(diǎn)的屬性采用rTwo.set語句。
最后,更新界面和分析數(shù)據(jù)并得出結(jié)論。主體是用switch-case語句,當(dāng)然也有消息提示,仍然用Toast.makeText( ).show( )語句來實(shí)現(xiàn)。分析曲線的大致過程就是比較個(gè)人數(shù)據(jù)和專家數(shù)據(jù)的差距,如果差值小于0.5,則顯示在某時(shí)刻血糖正常;反之,如果差值大于0.5,則顯示在某時(shí)刻血糖不正常。曲線擬合模塊的流程圖如圖3所示。
圖3 曲線擬合模塊流程圖
3.1手動(dòng)測試方案
該部分主要以測試系統(tǒng)功能為主,并對功能模塊進(jìn)行手動(dòng)測試,保證系統(tǒng)符合設(shè)計(jì)功能。所有的流程處理按照系統(tǒng)設(shè)計(jì)方案完成,所有處理正確。
測試的功能有注冊個(gè)人信息、登錄、修改資料、修改密碼、手動(dòng)輸入血糖值和地址、藍(lán)牙上傳數(shù)據(jù)、生成曲線圖并分析出健康報(bào)告。
3.2工具測試方案
該部分測試主要以方便編寫測試腳本的單元測試和無需編寫測試腳本的系統(tǒng)測試為主,不承擔(dān)測試系統(tǒng)功能的任務(wù)。
3.2.1單元測試
單元測試的步驟如下:①編寫測試腳本。測試腳本是進(jìn)行自動(dòng)化測試的執(zhí)行代碼。單元測試要以一個(gè)功能函數(shù)為單位進(jìn)行用例的測試。②建立測試。將所有測試腳本按照單元特性組織成測試組件,并對其全部內(nèi)容實(shí)行統(tǒng)一性的測驗(yàn),在降低測試頻次的同時(shí)也方便統(tǒng)計(jì)測試結(jié)果。
3.2.2系統(tǒng)測試
為了驗(yàn)證血糖管家助手手機(jī)App是否符合規(guī)定的需求,筆者進(jìn)行了系統(tǒng)測試。將手機(jī)與計(jì)算機(jī)連接起來,進(jìn)行實(shí)際運(yùn)行,并在實(shí)際運(yùn)行環(huán)境下檢測軟件的潛在問題。
主要工作內(nèi)容分為2塊,即功能測試和健壯性測試。功能測試,即測試App的功能是否正確,是否符合需求分析的內(nèi)容。健壯性測試,即測試系統(tǒng)在異常情況下能否正常運(yùn)行,表現(xiàn)為容錯(cuò)能力和恢復(fù)能力良好。
系統(tǒng)測試的流程如圖4所示。
圖4 系統(tǒng)測試的流程
3.3輔助測試工具
系統(tǒng)調(diào)試中進(jìn)行各種測試都需要相關(guān)的輔助測試工具,所用輔助測試工具[4]如表1所示。
表1輔助測試工具
軟件工具EclipseJunitMxdpefstatMonkeyrunner功能開發(fā)單元測試及白盒測試性能測試黑盒測試
現(xiàn)在很多中、老年人對糖尿病的概念很模糊,到底什么癥狀才是糖尿病,糖尿病又有什么具體的標(biāo)準(zhǔn)?是不是某一次的指標(biāo)超標(biāo)就表明得了糖尿病或者說血糖控制失衡?為此,患者只能定期去醫(yī)院檢查。依托血糖指標(biāo)深入分析的進(jìn)階功能,血糖管家助手以人為本,以患者為中心,輔以科學(xué)的分析手段,給出合理的治療建議,讓患者得到最貼心的照顧,能免去患者來回奔波和辦理繁瑣就醫(yī)手續(xù)的痛苦,隨時(shí)了解自己的血糖情況,幫助高血糖患者管理血糖,讓患者自覺主動(dòng)地改變原來的生活方式,養(yǎng)成科學(xué)的飲食習(xí)慣,進(jìn)行必要的體育活動(dòng)。憑著Android系統(tǒng)的開源與廉價(jià),以極少的支出達(dá)到了昂貴檢測設(shè)備的運(yùn)用價(jià)值。
本課題在Android平臺(tái)及在這個(gè)平臺(tái)上進(jìn)行的軟件開發(fā)進(jìn)行了大量工作,但仍有很多不足,系統(tǒng)的健壯性還不夠,許多地方仍有待改進(jìn)。目前本軟件只是具備最基本也是最核心的分析功能,為了滿足用戶更多的需求,提高軟件的友好性,未來還將增加其他功能,比如自動(dòng)定位功能、提醒用藥功能、短信通知功能和社交軟件分享功能等。
[1]李本富.基于智能手機(jī)的血糖監(jiān)測系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012(8):140.
[2]葉達(dá)峰.Eclipse編程技術(shù)與實(shí)例[M].北京:人民郵電出版社,2006:10-11.
[3]郝俊壽,丁艷會(huì).基于Android平臺(tái)的校園通軟件設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2012(9):98.
[4]張大治,應(yīng)群.精通Eclipse[M].北京:清華大學(xué)出版社,2006:17.
責(zé)任編輯:陳亮
Design and Realization of a Mobile APP Named Blood Glucose Assistant Based on Bluetooth Technology
With the proposal of ″Internet of Things″,applications for smart phones have reached a new height.Blood glucose assistant is a trendy mobile App for health care based on Bluetooth targeting people in need of blood glucose monitoring.Based on the Android platform,this mobile App of blood glucose assistant was designed and realized via Java language and SQL database under the JDK development environment.The terminal had two data transmission forms including manual input and automatic uploading via Bluetooth.The terminal could intelligently analyze the severity of blood glucose index according to the data and draw a trend chart to describe the physical condition on a certain day.
Android;Java;Bluetooth;mobile phone App of blood glucose assistant
10.3969/j.issn.1671-0436.2016.04.006
2016- 06-23
賈泳蓓(1984—),男,碩士。
TN929.5;TP311.5
A
1671- 0436(2016)04- 0024- 04