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