鄧子卿 張永
【摘要】隨著互聯(lián)網(wǎng)行業(yè)的迅猛發(fā)展以及4G網(wǎng)絡(luò)的普及,導(dǎo)航軟件層出不窮。但傳統(tǒng)導(dǎo)航在面對(duì)建筑密集的校園時(shí),存在著基礎(chǔ)地理信息數(shù)據(jù)不夠精確的問(wèn)題,為了解決這個(gè)問(wèn)題,本項(xiàng)目設(shè)計(jì)了一款基于百度地圖API的校園游覽應(yīng)用,并且結(jié)合了最熱門的短視頻社交功能。應(yīng)用實(shí)踐表明:參觀昌航能夠?yàn)閷W(xué)生用戶提供更精確的校園導(dǎo)航服務(wù)和更具針對(duì)性的校園社交服務(wù)。項(xiàng)目主要包含三大功能模塊:分別為校園導(dǎo)航模塊,短視頻模塊,以及視頻剪輯模塊。校園導(dǎo)航模塊主要通過(guò)調(diào)用百度地圖API,對(duì)原有地圖二次開發(fā)。短視頻模塊包括滑動(dòng)播放視頻的功能,視頻剪輯模塊偏重于針對(duì)視頻的編輯,壓縮,存儲(chǔ)等一系列功能。服務(wù)器端采用SpringBoot框架開發(fā),使用MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)。
【關(guān)鍵詞】百度地圖APISpringBoot框架 視頻編輯
一、功能設(shè)計(jì)
(一)校園導(dǎo)航模塊
校園導(dǎo)航功能包含校園地圖引導(dǎo),定位,全景圖功能。用戶可以看到一張標(biāo)注了校園主要地點(diǎn)的地圖。用戶點(diǎn)擊標(biāo)記,可以觀看標(biāo)記所在地點(diǎn)的全景圖。地圖上標(biāo)注了校園的最佳游覽路線,可供用戶游覽時(shí)參考。
(二)短視頻模塊
用戶可以在短視頻界面觀看其他用戶分享上傳的短視頻。短視頻采用上下滑動(dòng)播放的方式。滑動(dòng)到下一個(gè)視頻,自動(dòng)開始播放,并暫停上一個(gè)視頻。
(三)視頻剪輯模塊
校園社交功能包括短視頻的播放,拍攝,上傳,剪輯以及濾鏡功能。用戶可以在參觀昌航平臺(tái)上看到所有用戶發(fā)布的短視頻,也可以自己拍攝短視頻分享給大家。拍攝完成后,可對(duì)自己拍攝的視頻,進(jìn)行剪輯并添加各種各樣的濾鏡。
(四)用戶信息管理模塊
包含賬戶的登陸驗(yàn)證,注冊(cè),以及用戶之間的點(diǎn)贊關(guān)注功能。用戶可以在用戶資料界面看到自己以及其他用戶上傳的作品和點(diǎn)贊過(guò)的作品的預(yù)覽圖。
二、系統(tǒng)核心功能實(shí)現(xiàn)
(一)用戶管理
1.登陸驗(yàn)證
登陸有手機(jī)驗(yàn)證碼和密碼登陸兩種方式。驗(yàn)證碼通過(guò)調(diào)用阿里云的短信驗(yàn)證碼API進(jìn)行驗(yàn)證。一次登陸后,手機(jī)號(hào)會(huì)存入SharedPreferences中,下次打開軟件會(huì)從SharedPreferences中讀取賬號(hào)密碼自動(dòng)登陸。
2.用戶注冊(cè)
用戶輸入基本信息,在客戶端判斷數(shù)據(jù)是否合法。若合法則通過(guò)Gson框架將信息封裝成Json字符串,通過(guò)Okhttp框架傳輸?shù)椒?wù)器,判斷手機(jī)號(hào)是否重復(fù)注冊(cè),若重復(fù)注冊(cè),返回注冊(cè)失敗,若未重復(fù),返回登陸成功。
(二)互動(dòng)社交
1.點(diǎn)贊與關(guān)注
點(diǎn)贊與關(guān)注包括用戶之間和用戶與作品之間的關(guān)系。在數(shù)據(jù)庫(kù)里,通過(guò)attention表儲(chǔ)存用戶之間的關(guān)注關(guān)系,通過(guò)LikeVideo表存儲(chǔ)用戶與短視頻作品之間的點(diǎn)贊關(guān)系??蛻舳它c(diǎn)贊和關(guān)注的行為,都會(huì)將用戶id與作品id或作品的作者id傳入服務(wù)器,并存儲(chǔ)進(jìn)數(shù)據(jù)庫(kù)。在用戶獲取視頻時(shí),服務(wù)器會(huì)根據(jù)點(diǎn)贊關(guān)系表和關(guān)注關(guān)系表,將視頻的是否以及點(diǎn)贊和是否以及關(guān)注的標(biāo)識(shí)一同發(fā)過(guò)去,客戶端根據(jù)標(biāo)識(shí)來(lái)確定控件初始的狀態(tài)。
2.作品查看
用戶可以在“我的”界面查看自己發(fā)布的作品,以及點(diǎn)贊過(guò)的作品,在短視頻界面點(diǎn)擊用戶頭像,客戶端會(huì)將用戶id發(fā)送至服務(wù)器,服務(wù)器根據(jù)用戶id,將用戶發(fā)布的作品以及點(diǎn)贊的作品的video對(duì)象返回。在video對(duì)象中存儲(chǔ)了作品的封面預(yù)覽圖地址,將地址載入glide中,在用戶界面顯示作品預(yù)覽圖。
(三)視頻剪輯
通過(guò)調(diào)用手機(jī)攝像頭拍攝短視頻,按下按鈕開始拍攝,抬起手指結(jié)束。視頻剪輯使用MetadataRetriever框架將每隔一段時(shí)間的視頻圖片獲取,通過(guò)Recycleview(顯示視頻的提取圖片)配合glide(加載圖片)和自定義view Rankbar (用于制定需要截取的視頻),顯示剪輯界面。用戶通過(guò)滑動(dòng)滑塊確定需要剪輯視頻在拿兩個(gè)圖片中間,系統(tǒng)獲得兩張圖片對(duì)應(yīng)的時(shí)間點(diǎn),使用開源的RxFFmpeg框架對(duì)視頻進(jìn)行剪輯。對(duì)剪輯后的視頻,調(diào)用Android MediaCodec API實(shí)現(xiàn)濾鏡功能。
(四)短視頻播放
在Recycleview控件中嵌套 StandardGSYVideoPlayer控件。首次進(jìn)入界面,客戶端會(huì)向服務(wù)器請(qǐng)求五個(gè)視頻信息,保存在List中,并加入Recycleview適配器的數(shù)據(jù)源中。播放器中加載首個(gè)視頻,并監(jiān)聽滑動(dòng)事件,用戶滑動(dòng)視頻后,將會(huì)釋放上一個(gè)視頻播放器的資源,保證視頻播放流暢,并生成新的播放器控件加載視頻。當(dāng)監(jiān)聽到下滑剩余視頻低于兩個(gè)時(shí),將會(huì)再次向服務(wù)器請(qǐng)求視頻數(shù)據(jù),并更新適配器數(shù)據(jù)源。由于Android內(nèi)置的Videoview不帶邊緩沖邊播放的功能,在用戶刷視頻時(shí),每刷一個(gè)視頻需要等待視頻完全加載,才能開始播放,每個(gè)視頻都要等待兩至三秒,對(duì)于視頻文件較大,等待時(shí)間更長(zhǎng)。因此使用StandardGSYVideoPlayer播放器,底層通過(guò)VideoCache實(shí)現(xiàn)邊緩存邊播放,極大改善了用戶體驗(yàn)。
(五)校園導(dǎo)航
目前百度等位置服務(wù)提供者主要致力于城市級(jí)別的位置服務(wù),要實(shí)現(xiàn)校園內(nèi)部詳細(xì)信息的展示,需要在百度地圖的基礎(chǔ)上通過(guò)添加自定義圖層,完善地圖信息,以彌補(bǔ)百度地圖在小區(qū)域內(nèi)地理信息不足的缺陷。使用ArcGIS圖形處理軟件制作完成校園的矢量地 形圖和瓦片地圖,使用本地加載的方式將瓦片圖層添加在百度底圖之上。首先實(shí)現(xiàn)FileTileProvider抽象類來(lái)加載瓦片圖資源,并通過(guò) TileOverlayOptions類設(shè)置,然后使用addTileLayer方法將 TileOverlayOptions 對(duì)象添加至百度底圖之上。
三、小結(jié)
參觀昌航在傳統(tǒng)地圖導(dǎo)航的基礎(chǔ)上,通過(guò)調(diào)用百度地圖API,設(shè)計(jì)了一個(gè)更具校園特色的導(dǎo)航。并且結(jié)合最新最熱的短視頻社交,搭建了一個(gè)集校園游覽和校園社交為一體的app。致力于為學(xué)生用戶群體,提供更精準(zhǔn)的校園導(dǎo)航服務(wù),與更高效的校園社交服務(wù)。但系統(tǒng)還存在著一些不足,需要進(jìn)一步完善,例如,短視頻暫時(shí)沒有評(píng)論功能,視頻剪輯部分沒有豐富特效以及美顏功能。
基金項(xiàng)目:課題資助:南昌航空大學(xué)創(chuàng)新創(chuàng)業(yè)教育課程培育項(xiàng)目《C語(yǔ)言程序設(shè)計(jì)》;南昌航空大學(xué)校級(jí)教改課題《C語(yǔ)言程序設(shè)計(jì)》課程融入思政元素的探索與實(shí)踐。課題資助:南昌航空大學(xué)第14屆“三小”課題。