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