張華偉,史久琛,李嘯宇,董蘇
(大連理工大學軟件學院,大連116000)
兒童時期是人一生中生命力最強、健康問題最少的時期,但也是意外傷害的多發(fā)時期。據(jù)意外傷害監(jiān)測網(wǎng)絡顯示,在中國,意外傷害是0~14歲兒童受傷害的首要原因[1]。數(shù)據(jù)顯示,我國每年大約至少有1000萬兒童受到各種意外傷害,40萬兒童因意外傷害成為殘疾。意外傷害已是0~14歲兒童死亡的首要原因,中國0~14歲兒童意外傷害的傷亡率是美國的2.5倍,韓國的1.5倍[2]。因此,社會迫切需要對兒童的運動狀態(tài)及安全狀況有更全面的了解。父母作為兒童監(jiān)護人,需要實時關注兒童的運動狀態(tài)及安全狀況。
目前,國際上許多高校和研究所,如麻省理工學院、牛津大學等都專門設立了針對運動目標檢測的研究組或者研究實驗室。一些著名公司和研究機構(gòu),如IBM、Microsoft、麻省理工學院等近幾年來投入了大量的人力物力進行智能監(jiān)控系統(tǒng)的研究,部分成果已經(jīng)轉(zhuǎn)化為產(chǎn)品投入了市場。
目前在國內(nèi)的研究機構(gòu)中,中國科學院北京自動化研究所下屬的模式識別國家重點實驗室視覺監(jiān)控研究處于領先地位。他們在交通場景視覺監(jiān)控、人的運動視覺監(jiān)控和行為模式識別方面進行了深入研究。國內(nèi)其他高校如上海交通大學、北京航空航天大學也對這方面進行了研究[3]。
但是,現(xiàn)有研究仍有許多不足:
(1)市場上的產(chǎn)品主要基于成年人的運動狀態(tài)以及健康情況的分析,在對于兒童的安全監(jiān)測的方面存在缺失。
(2)對于兒童的運動狀態(tài),市場上已經(jīng)出現(xiàn)的運動狀態(tài)分析軟件的功能大多數(shù)是不適用的,兒童最普遍的運動問題是跌倒,因此應從跌倒分析中對兒童的運動狀態(tài)以及安全狀況進行合理判斷。
(3)大多數(shù)的國內(nèi)外人體運動慣性傳感器的研究中,應用軟件中所反映的數(shù)據(jù)主要是對于使用者進行反饋,而對于兒童,這些數(shù)據(jù)需要及時反饋給家長。
本文基于上述問題提出了一種適用于兒童的運動數(shù)據(jù)統(tǒng)計分析方法,通過調(diào)研兒童的大量運動數(shù)據(jù),以及檢測兒童每日的跌倒信息,對兒童的運動狀態(tài)以及身體安全狀況進行合理判斷。本文設計了基于Android的兒童運動分析及監(jiān)控系統(tǒng),在檢測兒童運動狀態(tài)的同時還實現(xiàn)了社交功能,可將兒童的運動數(shù)據(jù)及時反饋給家長,家長可以對兒童的潛在危險與健康情況做出快速反應,更好地保障兒童安全。
本系統(tǒng)主要包含兒童客戶端、家長客戶端、網(wǎng)絡通信三個模塊。其中,兒童客戶端主要包含運動統(tǒng)計、兒童監(jiān)護、社交活動三個子模塊,家長客戶端主要功包括數(shù)據(jù)處理、用戶管理兩個子模塊,網(wǎng)絡通信模塊主要功能為在兩個客戶端之間進行數(shù)據(jù)的傳輸。圖1為系統(tǒng)框架圖:
圖1 系統(tǒng)架構(gòu)
兒童客戶端模塊主要包含運動統(tǒng)計、兒童監(jiān)護、用戶管理三個子模塊。
運動統(tǒng)計子模塊主要是對兒童行走的捕捉,記錄與統(tǒng)計每日步數(shù)、行走距離和熱量消耗。通過圖表等可視化方式來展示兒童的活動情況,并將數(shù)據(jù)保存至服務器,提供了準確可靠的數(shù)據(jù)支持。
兒童監(jiān)護子模塊主要包括跌倒檢測和定位監(jiān)測兩個功能。通過對兒童跌倒行為的捕獲,反映兒童運動的穩(wěn)定性。通過對兒童進行位置監(jiān)測,實時獲取其活動的位置信息并進行范圍限定,從而提高對兒童進行保護的安全系數(shù)。
用戶管理子模塊主要實現(xiàn)了注冊登錄與賬號綁定兩個功能,使得兒童客戶端與家長客戶端之間可以良好地進行數(shù)據(jù)交換,通過家長與兒童賬號互相綁定,利用兒童監(jiān)護子模塊獲取兒童的潛在危機,并向家長反饋。
家長客戶端模塊主要包括數(shù)據(jù)處理與用戶管理兩個子模塊。
數(shù)據(jù)處理子模塊是基于兒童客戶端上傳至服務器端的運動統(tǒng)計數(shù)據(jù),家長客戶端進行定時數(shù)據(jù)接收,并以圖表形式進行數(shù)據(jù)展示,根據(jù)提示信息,家長可以快捷清晰地了解到兒童的身體狀況。
用戶管理子模塊的注冊登錄功能可以確定唯一識別家長身份的標識,并可以存儲一些必要的信息,賬號綁定功能使得一個家長客戶端對應多名兒童賬號進行綁定,從而實現(xiàn)了對于兒童信息的獲取。
圖2 兒童客戶端模塊框架
圖3 家長客戶端模塊框架
網(wǎng)絡通信模塊主要包括如下三項功能。第一,兒童客戶端將信息封裝為JSON字符串,約定action為動作標識,將JSON字符串上傳到服務器,服務器經(jīng)過Java后臺處理后將數(shù)據(jù)寫入數(shù)據(jù)庫,實現(xiàn)兒童運動數(shù)據(jù)的定時上傳。第二,服務器數(shù)據(jù)庫端建立Table{Children,Parents,Data}用來獲取 Android端上傳過來的JSON字符串信息,并將其分類錄入對應的表格中。第三,家長客戶端向服務器發(fā)送action為parents的JSON字符串,服務器查詢與家長綁定的兒童運動數(shù)據(jù),將結(jié)果返回服務器端,服務器將結(jié)果通過HTTP協(xié)議返回給家長客戶端,從而使家長獲得兒童運動數(shù)據(jù)。
圖4為本系統(tǒng)的數(shù)據(jù)流程圖:
圖4 數(shù)據(jù)流程圖
在兒童客戶端中共有三個可以滑動的一級界面,如圖 5所示。其中圖 5(a)是“運動”界面圖,圖 5(b)是“監(jiān)護”界面圖,圖5(c)是“我的”界面圖。在“運動”界面中,主要功能是對于健康數(shù)據(jù)的統(tǒng)計并給出評價。在“監(jiān)護”界面中,可以顯示兒童在這一天中跌倒的次數(shù)并給出相應建議。底部有一個字樣為“進入”的按鈕,點擊可以進入電子圍欄的界面?!拔业摹苯缑嬷杏糜谡故居脩舻膫€人信息以及進行一些App的設置。
圖5 兒童客戶端界面圖
(1)健康數(shù)據(jù)收集
該模塊可對近七天內(nèi)兒童行走的步數(shù)、消耗熱量、行走距離的綜合統(tǒng)計,并最終給出評級以顯示兒童的健康狀況,并以直方圖形式展示。
計步的實現(xiàn)主要是通過使用Android4.4新增的STEP_DETECTOR以及STEP_COUNTER傳感器。其中STEP_DETECTOR是計步傳感器,用于記錄激活后的步伐數(shù)。STEP_DETECTOR是步行檢測傳感器,用戶每走一步就觸發(fā)一次事件。STEP_DETECTOR通過分析加速度計的輸入識別用戶何時走步,每走一步都會觸發(fā)一個事件。
卡路里統(tǒng)計和距離統(tǒng)計基于用戶的一些個人信息進行計算。行走距離計算采用公式(1):
其中D/m表示行走距離,STEP_COUNTER為行走步數(shù),L/m為步長。
卡路里消耗采用公式(2):
其中W/kg表示體重,D/km表示行走距離。在兒童的統(tǒng)計數(shù)據(jù)達到要求后,對星級進行累加,對兒童行為進行最終評級。
(2)跌倒檢測
跌倒檢測功能是利用Android內(nèi)置的加速度傳感器accelerationSensor,仿照步數(shù)統(tǒng)計算法進行設計,并結(jié)合兒童運動的獨有特征實現(xiàn)。首先設計后臺服務類FallService,在OnCreate方法中通過函數(shù)getSystemService(SENSOR_SERVICE)獲取傳感器服務,并創(chuàng)建跌倒統(tǒng)計算法類FallCountDetector對象detector。之后注冊監(jiān)聽器SensorEventListener,并在注冊監(jiān)聽器的參數(shù)中設置監(jiān)聽對象detector、設置傳感器類型TYPE_ACCELEROMETER、設置獲取傳感器信息的頻率SENSOR_DELAY_NORMAL。在具體計數(shù)算法FallCount-Detector中,設定數(shù)值medumValue為判斷跌倒的臨界值,實時監(jiān)測在三個坐標軸x、y、z方向的加速度acceleration_x、acceleration_y、acceleration_z。若此三個方向上的加速度的絕對值存在一個或多個大于medumValue,則視為一次跌倒,并在跌倒總統(tǒng)計數(shù)(FALLING_STEP)的原值基礎上增加1,若不存在任一方向上的加速度絕對值大于medumValue,則視為一次普通震動,跌倒總統(tǒng)計數(shù)(FALLING_STEP)數(shù)值保持不變。
(3)地理圍欄
地理圍欄的功能是對兒童活動范圍進行限定,一旦越界則向家長報警,本功能在高德地圖API的基礎上進行開發(fā)。首先在地圖視圖所關聯(lián)的XML文件中添加MapView組件。通過AMap對象加載所有的地圖信息,并與MapView對象綁定,實現(xiàn)基礎地圖的顯示。
實例化一個MyLocationStyle的對象來進行定位的自定義,設置定位時顯示的圖標。調(diào)用AMap對象的setMy-LocationStyle方法,傳入MyLocationStyle對象,完成自定義。實例化AMapLocationClient對象,傳入上下文參數(shù),進行定位初始化,并通過setLocationListener方法為該對象設置一個回調(diào)監(jiān)聽,當位置發(fā)生改變時,執(zhí)行回調(diào)中的函數(shù)。調(diào)用該對象的startLocation方法開始定位。第一次進行地圖加載時,獲取到當前位置信息,作為地理圍欄的中心,之后該中心不會改變,并自定義安全范圍。實例化CircleOption對象,傳入圍欄中心位置經(jīng)緯度坐標centerLatlng和安全范圍的半徑,調(diào)用AMap對象的addCircle方法往地圖上添加一個自定義的圓形地理圍欄圖層。在位置變化的回調(diào)方法onLocationChanged中,參數(shù)為最新的位置信息AMapLocation對象。從此對象中獲取到最新定位點的經(jīng)緯度坐標endLatlng,調(diào)用AMapUtils的靜態(tài)方法calculateLineDistance,傳入centerLatlng和endLatlng,計算出兒童當前位置到地理圍欄中心的距離。如果大于之前自定義的安全范圍的距離,則進行示警,發(fā)送示警信號到家長客戶端,通知家長采取相應措施。
家長客戶端實現(xiàn)了與兒童客戶端進行綁定、對于兒童健康數(shù)據(jù)的展示、對于兒童存在潛在危險性的示警、與兒童進行聯(lián)系等功能。每個家長可以綁定多個兒童,在家長客戶端進行注冊和綁定后,家長客戶端會將綁定的數(shù)據(jù)與用戶信息存儲在服務器端的數(shù)據(jù)庫中。家長客戶端會定期接收服務器端發(fā)送的兒童的多種健康數(shù)據(jù),通過RecyclerView列表逐條展示;手機的通知欄中也通過Android中的Notification進行顯示。在兒童離開地理圍欄圈定的范圍后,家長客戶端會有示警提醒,包括彈出對話框與鈴聲報警。家長也可以使用界面中右下方的按鈕,通過Android中的broadcast發(fā)送廣播,直接使用手機中的撥號功能向兒童撥打電話,與兒童取得聯(lián)系。
圖6是家長客戶端界面圖,其中圖6(a)是通知欄提示圖,圖 6(b)是兒童健康數(shù)據(jù)顯示圖,圖 6(c)是撥號圖。
服務器數(shù)據(jù)庫端建立Table{Children,Parents,Data}用來獲取Android端上傳過來的JSON字符串信息,并將其分類錄入對應的表格中。其中Children表用于存儲兒童的基本信息,包括兒童的注冊ID、姓名、年齡、性別、體重、步長、綁定家長的ID、手機號等一系列信息;Parents表用于存儲家長的基本信息,包括家長的注冊ID、綁定兒童的ID、手機號等一系列信息;Data表則用于存儲兒童向家長端發(fā)送的實時健康數(shù)據(jù)與危險性評估情況的相關數(shù)據(jù)。兩個Android客戶端通過JSON字符串進行數(shù)據(jù)庫中數(shù)據(jù)的存儲與下載,兒童客戶端通過定時機制,一定時間定時向服務器發(fā)送數(shù)據(jù),以更新數(shù)據(jù)庫數(shù)據(jù),家長客戶端也通過定時機制,一定時間定時接收服務器的數(shù)據(jù),以更新兒童的最新數(shù)據(jù)。此外,Children與Parents表通過主鍵與外鍵的約束以及一些驗證機制保證綁定信息的無誤性。
圖6 家長客戶端界面圖
本文設計了基于Android的兒童運動分析及監(jiān)控系統(tǒng),通過手機內(nèi)置的傳感器節(jié)點對兒童運動數(shù)據(jù)進行測量,然后通過卡爾曼濾波對基礎數(shù)據(jù)進行處理,分析兒童運動狀態(tài)。同時,利用高德地圖SDK對兒童定位,實現(xiàn)了地理圍欄功能,可以充分滿足家長對兒童運動、安全方面監(jiān)控的需求。
[1]王林清.兒童青少年對意外傷害認知和行為的調(diào)查分析[J].醫(yī)學動物防制,2006(11):787-789.
[2]至銘.兒童意外傷害安全防范要做好[J].江蘇衛(wèi)生保健,2017(07):21.
[3]運動目標檢測研究意義及國內(nèi)外現(xiàn)狀[R/OL].(2016,09,05)http://www.docin.com/p-1727702961.html