劉璐,王子賢,周洪利,董蘇,史久琛
(大連理工大學軟件學院,大連116621)
科技手段可以幫助人們了解自身體能狀況,提高自身身體素質(zhì),隨著芯片產(chǎn)業(yè)和物聯(lián)網(wǎng)的快速發(fā)展,使用傳感器對人類身體及個人運動進行監(jiān)測和管理,成為一個最具應用價值的研究方向[1]。在眾多的傳感器集成平臺中,智能手機平臺是最重要、最普及的一類。Android系統(tǒng)是由美國谷歌公司開發(fā)的開源手機操作系統(tǒng),該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,是以開放特性聞名的具有真正移動特性的操作系統(tǒng)[2]。平臺本身支持多種傳感器,利用Android平臺進行人體運動及體能方向的研究可以充分利用平臺的移動性、開放性。
本系統(tǒng)是一種基于Android平臺開發(fā)的運動健康分析軟件,主要研究了以下兩個問題:傳感器數(shù)據(jù)的采集與處理,以及根據(jù)人體條件(如體重、年齡)智能判斷合理運動量和食物卡路里合理攝取量。
Talking Data 2014移動互聯(lián)網(wǎng)數(shù)據(jù)報告顯示,在iOS與Android兩個平臺上使用軟件進行健康管理的用戶規(guī)模龐大,并且增長速度不斷提高。例如,咕咚、樂動力跑步等健康類App的用戶量已超過千萬,Nike Training、超級減肥王等App下載量增長速度超過300%[3]。健身類App輔助指導用戶進行鍛煉身體,改變了用戶需要抽出固定時間段進行鍛煉的情況,用戶可以選擇合適的場所甚至是在家鍛煉身體,更加適應生活壓力大,工作繁重的用戶,因此受到了很多人的歡迎??v觀各種健身鍛煉軟件,能夠?qū)⑦\動和飲食情況結(jié)合起來的卻少之又少。而本軟件不僅包含用戶最常見的鍛煉方式,例如步行和跑步,還結(jié)合了卡路里攝取平衡的計算,更好地輔助用戶鍛煉身體。除此以外,本軟件界面簡潔,功能完善且操作友好。
本軟件的系統(tǒng)架構(gòu)圖如圖1所示,包括典型運動檢測、卡路里均衡、交流平臺三個模塊。
典型運動檢測模塊包括計步和跑步檢測兩個子模塊,功能為檢測用戶步數(shù)和記錄跑步信息??防锞饽K包括用戶特征推薦、卡路里計算兩個子模塊,功能為根據(jù)用戶身體情況計算每日推薦步數(shù)和每日推薦卡路里攝入量,記錄每日食物攝取情況以及根據(jù)以上信息生成卡路里消耗數(shù)目建議。交流平臺模塊包括個人賬戶和論壇兩個子模塊,功能包括為建立用戶個人賬戶、發(fā)送用戶動態(tài)及接收其他用戶動態(tài)。
本模塊的主要作用是檢測用戶的運動情況,包括每日步行數(shù)和跑步量,并根據(jù)用戶的身體狀況,推測用戶的步長,從而計算用戶每日步行公里數(shù),然后以Android通用的輕量級數(shù)據(jù)庫SQLite保存到本地,并以日歷的形式展示給用戶。
圖1 系統(tǒng)架構(gòu)圖
系統(tǒng)使用Android4.4新增的STEP_DETECTOR以及STEP_COUNTER傳感器。其中STEP_COUNTER是計步傳感器,用于記錄激活后的步伐數(shù)。STEP_DETECTOR是步行檢測傳感器,用戶每走一步就觸發(fā)一次事件。
STEP_DETECTOR通過分析加速度計的輸入識別用戶何時走步,緊接著每走一步都會觸發(fā)一個事件。而STEP_COUNTER則是跟蹤自從上一次設(shè)備重新啟動以來用戶所有的步行數(shù),每當計數(shù)更改,都會觸發(fā)一個事件。雖然傳感器的邏輯和管理內(nèi)置于平臺和底層硬件,在應用程序中不需要維護自己的檢測算法,但是STEP_COUNTER中每次設(shè)備重新啟動都會將數(shù)據(jù)清零,用戶體驗感較差,故重寫了STEP_COUNTER的計數(shù)函數(shù),通過不斷備份步數(shù)保存用戶即時步數(shù)不丟失。除此以外,因為這兩種傳感器都實現(xiàn)了硬件低功耗,系統(tǒng)的整體功耗也隨之下降了許多,不會成為用戶的電量“殺手”。計步算法流程如圖2所示。
(1)GPS定位
系統(tǒng)需要配置GPS定位權(quán)限。為保護用戶信息安全,在Android 6.0以后,Android系統(tǒng)取消了安裝時即賦予該App所有權(quán)限的機制,尤其對于一些“隱私性”權(quán)限,App需要在運行時逐個詢問用戶請求授予權(quán)限。每次用戶運行跑步模式,系統(tǒng)都會請求獲取權(quán)限以定位用戶位置。本系統(tǒng)采用了高德地圖Android API移動定位,在高德開發(fā)者官方網(wǎng)站上獲取Key,并配置相關(guān)參數(shù)以啟動定位,應用程序通過使用API,可以無縫的在基站定位、Wi-Fi定位及GPS定位間切換。
(2)跑步路線繪制
系統(tǒng)通過自定義Marker標記并記錄位置經(jīng)緯度值,并通過BitmapDescriptor設(shè)置自定義圖標。當用戶點擊開始跑步時,每兩秒獲取一次用戶的GPS數(shù)據(jù),將給出的定位點連接即形成路線。主要利用Android的動畫機制繪制路線。
圖2 計步流程圖
系統(tǒng)采用Android常用的輕量級數(shù)據(jù)庫SQLite存儲用戶最近7天的運動情況,并以日歷欄的形式呈現(xiàn)給用戶,方便用戶對比每日運動量。除此以外,系統(tǒng)利用Android的Notification消息推送機制,可以使用戶退出軟件后,不需打開軟件仍可以在通知欄查看每日運動步數(shù),更加方便用戶的使用。
卡路里均衡模塊的功能為根據(jù)用戶個人信息計算推薦健康建議??防锞饽K包括用戶特征推薦,卡路里計算兩個子模塊。
每位用戶都具有自身的身體特征,包括性別、年齡、身高和體重。一個正常人每日所需的熱量和其體重相關(guān),每小時攝取熱量和體重的關(guān)系,約為1千卡/小時/千克,即4.186千焦/小時/千克。所以,一個重50千克的成年人每日所需的正常平均熱量Q如下:
人一天內(nèi)消耗掉的總熱量為基本消耗熱量(人體基礎(chǔ)代謝消耗掉的熱量)與運動消耗熱量(日常生活動作消耗掉的熱量)之和。按照性別和年齡可由表1中幾個公式表示(其中體重用W/kg表示,活動系數(shù)用K表示)
表1 熱量消耗公式
故當用戶輸入個人基本信息時,系統(tǒng)根據(jù)用戶身體情況計算出每日推薦卡路里消耗量。
本系統(tǒng)將常見的食物分為“蔬菜”、“水果”、“主食”及“肉類”四種。不同的食物產(chǎn)生不同的能量,通過RecycleView顯示100克食物中所含能量。對于肥胖癥、糖尿病、高血壓等慢性病患者來講,控制每天身體所攝取的能量,是減輕他們本身病變的方法。因此,不僅僅是對患者,對普通用戶也有必要為每一種食物測量所含的能量,以供用戶計算每餐攝入的總能量。用戶在RecycleView中點擊條目,輸入攝取克數(shù),點擊保存后,系統(tǒng)便將數(shù)據(jù)插入到數(shù)據(jù)庫中保存,以供后續(xù)處理。
系統(tǒng)會根據(jù)用戶特征推薦算法計算得出每日推薦步數(shù),然后計算得出活動系數(shù)進行乘法運算。所以當用戶輸入個人基本信息時,系統(tǒng)會自動根據(jù)用戶數(shù)據(jù)計算得到每日推薦卡路里消耗數(shù)目。用戶可以根據(jù)系統(tǒng)給出的每日所需熱量,每日卡路里消耗數(shù)目,每日推薦卡路里消耗數(shù)目來合理規(guī)劃自己的活動。
交流平臺模塊的功能為通過搭建服務器,為用戶建立個人賬戶并實現(xiàn)動態(tài)發(fā)送信息和刷新獲取信息。交流平臺模塊包括個人賬戶子模塊和論壇模塊。系統(tǒng)使用Android網(wǎng)絡(luò)開源框架OKHttp,這是目前較為常用的安卓端輕量級框架,由移動支付Square公司設(shè)計用于替代HttpUrlConnection和Apache HttpClient。
系統(tǒng)為用戶搭建服務器,為用戶建立個人賬戶,將用戶的基本信息和數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中。當用戶退出賬戶后重新登錄時,系統(tǒng)將從服務器獲取用戶信息并自動填寫,方便用戶使用,保障用戶數(shù)據(jù)在更換設(shè)備后不會丟失。為保護用戶隱私,系統(tǒng)利用OKHttp的post方法向服務器發(fā)起用戶注冊和登陸。個人賬戶界面如圖3所示。
圖3 個人賬戶界面
論壇模塊包括用戶向服務器發(fā)送文字、圖片動態(tài)以及從服務器獲取其他用戶發(fā)送的動態(tài)。用戶可選擇不超過六張圖片上傳,系統(tǒng)使用Android Retrofit 2.0框架,設(shè)計了FileUploadService接口并實現(xiàn)了單張與多張圖片上傳的解決方案。上傳圖片時,系統(tǒng)使用Http multipart/form-data的上傳報文格式,并調(diào)用photopicker庫、photopicker庫中封裝了選取圖片、使用相機,查看和刪除選取圖片等功能。論壇界面如圖4所示。
圖4 論壇界面
基于Android的運動健康分析系統(tǒng)可以根據(jù)用戶個人身體信息及用戶每日輸入的食物攝取情況為用戶提供步行數(shù)目參考和卡路里攝入?yún)⒖?,具有界面用戶友好度高、功能完整、將卡路里攝取與運動相結(jié)合等特點。下一步可以重點設(shè)計社交模塊,增加點贊及評論功能。
[1]周洪波.物聯(lián)網(wǎng):技術(shù)、應用、標準和商業(yè)模式[M].北京:電子工業(yè)出版社,2011.
[2]楊豐盛.Android應用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010.
[3]Talking Data移動互聯(lián)網(wǎng)大數(shù)據(jù)平臺.Talking Data 2014移動互聯(lián)網(wǎng)數(shù)據(jù)報告[R/OL].(2015,01,21).http://mi.talkingdata.com/report-detail.html?id=427