黃濤 全麗莉
關(guān)鍵詞:移動(dòng)端GPS;運(yùn)動(dòng)打卡;App;跨平臺(tái)開發(fā)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)03-0034-03
在全民健身的大環(huán)境下,當(dāng)前越來越多的人開始了健身運(yùn)動(dòng),作為充滿活力與熱情的年輕大學(xué)生們更是如此。其中跑步是各類健身項(xiàng)目中門檻最低,最受歡迎的項(xiàng)目。隨著移動(dòng)互聯(lián)網(wǎng)的迅猛發(fā)展和智能手機(jī)的普及,各類輔助跑步的App騰空出世,這讓跑者能夠借助科技的力量更好地融入跑步運(yùn)動(dòng)。與傳統(tǒng)體育鍛煉方式相比,智能化跑步模式更加趣味性、互動(dòng)性,改變了體育參與人群的運(yùn)動(dòng)方式和運(yùn)動(dòng)行為[1]。跑步App安置于智能設(shè)備中,通過設(shè)備內(nèi)置的運(yùn)動(dòng)傳感器、智能芯片和GPS全球定位技術(shù)追蹤運(yùn)動(dòng)路線,運(yùn)用算法計(jì)算步數(shù)、卡路里燃燒等數(shù)據(jù),并將結(jié)果分享于社交平臺(tái)上[2]。
1 智慧樂跑App 功能及特點(diǎn)
智慧樂跑App是一款基于移動(dòng)端GPS和傳感器的運(yùn)動(dòng)打卡App,可用于輔助高校體育課程的實(shí)施,為在校大學(xué)生制定合理的跑步運(yùn)動(dòng)計(jì)劃和提供豐富的健康運(yùn)動(dòng)知識(shí)。其主要功能模塊包括注冊(cè)登錄(注冊(cè)&登錄)、跑步(跑步打卡&地理圍欄&跑步記錄)、社區(qū)(健康百科&精彩體育)、個(gè)人中心(運(yùn)動(dòng)記錄查看&作業(yè)查看&個(gè)人資料修改),具體如圖1所示。
智慧樂跑App的特點(diǎn)主要有針對(duì)性強(qiáng)(輔助高校體育課程的實(shí)施)、易于使用(操作界面簡(jiǎn)潔友好,無任何學(xué)習(xí)成本)、跨平臺(tái)(App可發(fā)布到多個(gè)移動(dòng)平臺(tái),比如Android,IOS,各類小程序)、專業(yè)性強(qiáng)(跑步數(shù)據(jù)精準(zhǔn)、健康和體育信息豐富)。
2 智慧樂跑App技術(shù)選型及系統(tǒng)架構(gòu)
目前主流的移動(dòng)操作系統(tǒng)主要是Android和iOS兩大陣營[3]。在設(shè)計(jì)之初的需求分析時(shí)由于確定智慧樂跑App需要具備跨平臺(tái)的特點(diǎn),所以在技術(shù)選型時(shí)必須首要考慮App的跨平臺(tái)開發(fā),同時(shí)為降低開發(fā)和維護(hù)成本,需要使用一個(gè)統(tǒng)一的平臺(tái),開發(fā)一次、多端運(yùn)行[4]。因此App的開發(fā)技術(shù)選用目前主流的uni-app方案。uni-app 是一個(gè)使用Vue.js 開發(fā)所有前端應(yīng)用的框架,在項(xiàng)目的整個(gè)開發(fā)過程中開發(fā)者只需要編寫一套代碼,就可以通過編譯時(shí)的不同設(shè)置將應(yīng)用發(fā)布到目前主流的各類移動(dòng)平臺(tái),比如Android、iOS、各種小程序等。同時(shí)通過條件編譯可優(yōu)雅地在一個(gè)項(xiàng)目里調(diào)用各平臺(tái)的特色功能[5]。
智慧樂跑系統(tǒng)架構(gòu)如圖2所示。App端使用uniapp開發(fā),支持多個(gè)移動(dòng)平臺(tái),服務(wù)端使用PHP開發(fā)并放在公有云上,數(shù)據(jù)庫使用MySQL數(shù)據(jù)庫。
3 智慧樂跑App 設(shè)計(jì)
智慧樂跑App的核心模塊是跑步模塊,下面分別介紹跑步打卡、地理圍欄和跑步記錄的設(shè)計(jì)。
3.1 跑步打卡設(shè)計(jì)
跑步打卡模塊主要包含跑步跟蹤與拍照打卡兩子模塊。跑步跟蹤子模塊需要在跑步過程中連續(xù)實(shí)時(shí)獲取移動(dòng)端GPS數(shù)據(jù)并同步繪制在地圖上,形成實(shí)時(shí)運(yùn)動(dòng)軌跡。拍照打卡子模塊在跑步開始5分鐘之后進(jìn)行,會(huì)調(diào)用移動(dòng)端的震動(dòng)傳感器和聲音傳感器提醒學(xué)生打卡并自動(dòng)打開相機(jī)讓學(xué)生拍照并上傳服務(wù)端。
3.2 地理圍欄設(shè)計(jì)
地理圍欄功能可以由教師設(shè)置學(xué)校里的特定范圍讓學(xué)生完成跑步任務(wù),以此確保學(xué)生跑步時(shí)的安全。服務(wù)端定位到學(xué)校位置并在地圖上設(shè)置跑步范圍,App端在學(xué)生跑步過程中實(shí)時(shí)將獲取的GPS數(shù)據(jù)上傳服務(wù)端并由服務(wù)端實(shí)時(shí)判斷學(xué)生跑步路線是否越界,如果越界則主動(dòng)提醒學(xué)生,結(jié)束本次跑步并上傳數(shù)據(jù)。
3.3 跑步記錄設(shè)計(jì)
App端每次跑步結(jié)束后會(huì)自動(dòng)上傳本次跑步信息到服務(wù)端,后期在App中需要查看學(xué)生跑步記錄時(shí)則向服務(wù)端對(duì)應(yīng)功能接口請(qǐng)求數(shù)據(jù)即可。除了使用列表展示每條跑步記錄外,學(xué)生還可以詳細(xì)查看每條跑步記錄的具體信息,包括地圖上的運(yùn)動(dòng)軌跡、距離、配速、時(shí)長(zhǎng)和消耗卡路里等。
4 智慧樂跑App實(shí)現(xiàn)
根據(jù)上面跑步打卡、地理圍欄和跑步記錄的設(shè)計(jì),下面分別介紹其實(shí)現(xiàn)。
4.1 跑步打卡實(shí)現(xiàn)
在uni-app中使用高德地圖插件實(shí)現(xiàn)跑步過程中連續(xù)實(shí)時(shí)獲取移動(dòng)端GPS數(shù)據(jù)并同步繪制在地圖上的功能。App中用到的GPS數(shù)據(jù)主要是經(jīng)緯度坐標(biāo)。關(guān)鍵代碼片段如圖3所示。
4.2 地理圍欄實(shí)現(xiàn)
服務(wù)端使用百度地圖插件進(jìn)行地理圍欄設(shè)置,App端通過uni-app中的高德地圖插件獲取GPS數(shù)據(jù)并通過HTTP POST請(qǐng)求向服務(wù)端提供的API接口傳送位置數(shù)據(jù)并解析服務(wù)端返回的判斷結(jié)果。如果服務(wù)端判斷App 端越界,則App端使用uni-app中的showModal方法彈出模態(tài)對(duì)話框進(jìn)行提示并完成后續(xù)動(dòng)作。關(guān)鍵代碼片段如圖4所示。
4.3 跑步記錄實(shí)現(xiàn)
跑步結(jié)束后App 端使用uni-app 中的uploadFile方法上傳跑步數(shù)據(jù),其中包括打卡照片、學(xué)號(hào)、用戶名、本次跑步時(shí)間、配速、里程、路徑坐標(biāo)等信息。使用uni-app中的request方法向服務(wù)端提供的API接口發(fā)送HTTP POST請(qǐng)求獲取跑步記錄列表數(shù)據(jù)或某一條記錄的詳細(xì)數(shù)據(jù)。關(guān)鍵代碼片段如圖5所示。
4.4 實(shí)現(xiàn)效果展示
跑步模塊主要界面效果如圖6所示。
5 結(jié)束語
智慧樂跑App是使用跨平臺(tái)解決方案調(diào)用移動(dòng)端GPS和傳感器實(shí)現(xiàn)運(yùn)動(dòng)監(jiān)測(cè)記錄的一種嘗試,由于文章篇幅有限,只介紹了跑步核心模塊的設(shè)計(jì)與實(shí)現(xiàn)。后期將考慮基于移動(dòng)端豐富的各類傳感器,在已有功能的基礎(chǔ)上實(shí)現(xiàn)更多的運(yùn)動(dòng)項(xiàng)目打卡功能,增強(qiáng)App的功能性。