陸成茂 黃淳嵐 楊曉慧 盧翰霖 徐彬 金海潮 樂光學(xué)
摘要:移動云投影系統(tǒng)采用三層體系結(jié)構(gòu),MVP開發(fā)模式,設(shè)有客戶端、服務(wù)端和管理端;主要業(yè)務(wù)有兩種:一是客戶端將數(shù)據(jù)發(fā)送到服務(wù)端,二是客戶端向后臺發(fā)送請求,由后臺服務(wù)器向服務(wù)端推送數(shù)據(jù)。該文通過介紹系統(tǒng)的各個組成結(jié)構(gòu)及其業(yè)務(wù)流程,以及相關(guān)技術(shù)的應(yīng)用,講述整個系統(tǒng)的架構(gòu)設(shè)計。
關(guān)鍵詞:三層體系結(jié)構(gòu);MVC框架;無線投屏;Android應(yīng)用架構(gòu)
中圖分類號:TP311 文獻標(biāo)識碼:A
文章編號:1009-3044(2019)10-0062-03
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
Architecture Dsign of Wireless Screen Switching System Based on Android
LU Cheng-mao1,HUANG Chun-lan1,YANG Xiao-hui2,LU Han-lin1,XU Bin1,JIN Hai-chao1,YUE Guang-xue1
(1. Jiaxing University, Jiaxing 314001, China; 2. School of Science, Jiangxi University of Science and Technology, Ganzhou 341000, China)
Abstract: Mobile cloud projection system adopts three-layer architecture, MVP development mode, with client, server and management end; There are two main businesses: one is that the client sends data to the server; the other is that the client sends a request to the background, and the background server pushes data to the server. This paper introduces the structure of the system and its business process, and the application of related technology, the architecture design of the whole system.
Key words: three tier C/S structure; MVC framework; wireless projection screen; Android application architecture
1 概述
Android操作系統(tǒng)的源代碼是半開放的,主要嵌入于移動設(shè)備,如智能手機和平板電腦等。它的內(nèi)核屬于Linux內(nèi)核的一個分支,是Andy Rubin最先開始進行開發(fā)的,最開始主要是支持手機[1]。
移動互聯(lián)網(wǎng)發(fā)展快速,微處理器技術(shù)也是發(fā)展迅猛。安卓手機在性能上逐年接近PC機,智能手機的功能逐步多樣化,不再僅是用來進行普通的語音通話和短信發(fā)送,已經(jīng)更多的應(yīng)用于娛樂和一些辦公場合。如音視頻通訊、移動支付、移動監(jiān)控等逐漸進入民眾,給人們的生活帶來不可替代的便捷應(yīng)用。
移動應(yīng)用滿足著人們的衣食住行等各個方面,給人們提供了很大的便利。本文是主要對“移動云投影系統(tǒng)”的基本架構(gòu)及其系統(tǒng)的規(guī)劃與分析進行闡述。
2 架構(gòu)
2.1 MVC開發(fā)模式
MVC的M代表模型,V代表視圖,C代表控制器,它們?nèi)齻€的組合——是一種業(yè)務(wù)邏輯、數(shù)據(jù)、可視界面分離的組織代碼的方法,將業(yè)務(wù)邏輯集中到組合的三個部件中的一個里面,在進行優(yōu)化或者用戶的個性化定制時,就不需要再重新編寫一個新的業(yè)務(wù)邏輯,且一個模型可以對應(yīng)多個可視界面[2-4]。MVC框架如圖1所示。
MVC的設(shè)計思想,是不同的部件擁有不同的職責(zé),各部件各司其職,將數(shù)據(jù)、可視界面的顯示與控制互相獨立,簡化代碼,提高復(fù)用,降低維護成本,提高開發(fā)者的UI設(shè)計開發(fā)效率。
Model包括了程序的業(yè)務(wù)規(guī)則、業(yè)務(wù)邏輯、還有數(shù)據(jù)等,用于保存實例數(shù)據(jù)。Model數(shù)據(jù)模型是JavaBean實體類,可以用一個實體類來表示客觀世界中具有相同屬性的事物。如一只小狗,通過定義和實例化Dog類表示。狗擁有的技能如進食、奔跑、伸舌頭等就是類的方法,通過業(yè)務(wù)邏輯來編寫。
View就是用戶所看到的可進行操作的界面,視圖界面,就是model數(shù)據(jù)模型的具體表現(xiàn)形式。它的主要任務(wù)是向用戶展示數(shù)據(jù)以及接受用戶的輸入,因為在實際運營過程中,用戶通常是看不到Model部分的。用戶只能看到開發(fā)人員想讓他們看到的內(nèi)容,通過view向用戶展示和交互。
Controller是MVC中的核心部分,是溝通model和View的橋梁。視圖界面和數(shù)據(jù)實例的更新都是依靠Controller控制和調(diào)度,因為Model和View之間不能直接通信,在應(yīng)用程序需要完成一個業(yè)務(wù)時,它們又必須要合作共同才能完成。于是,Controller就作為控制者,決定使用哪些model,并進行什么操作,該為view準(zhǔn)備什么數(shù)據(jù)等。
2.2 MVP開發(fā)模式
MVP是一種軟件框架級的設(shè)計架構(gòu),是從MVC開發(fā)模式演變而來。MVP為每個視圖view定義抽象接口,再用這些接口標(biāo)識視圖view所支持的model。邏輯上等效的視圖,在所有平臺上擁有相同的接口,表示器通過這些接口與視圖view進行交互[5]。
在MVC模式中,Activity作為安卓開發(fā)的核心組件,不僅承擔(dān)視圖View,同時也有Controller控制器的內(nèi)容,這無疑是增加了代碼的耦合度。當(dāng)項目發(fā)展到一定程度,MVC開發(fā)模式的項目,開發(fā)和維護會變得麻煩。而在MVP模式中,因為Activity的UI邏輯被抽象成了View接口,業(yè)務(wù)邏輯抽象成了Presenter接口。View接口和Presenter接口的設(shè)計簡化了Activity的工作,降低耦合度,方便進行單元測試,同時因為后臺線程對Activity的引用而導(dǎo)致的“Activity的資源無法被系統(tǒng)回收,發(fā)生內(nèi)存泄露的問題也能得到規(guī)避。
3 系統(tǒng)規(guī)劃與分析
3.1 系統(tǒng)架構(gòu)規(guī)劃
移動云投影系統(tǒng)采用三層C/S的軟件系統(tǒng)體系結(jié)構(gòu),所有安卓設(shè)備連接上同一無線AP,無線AP作為交互橋梁,聯(lián)合構(gòu)成局域網(wǎng)的通信結(jié)構(gòu),保證文件傳輸?shù)乃俣取Mㄟ^對數(shù)據(jù)流的處理,將安卓手機的屏幕顯示內(nèi)容同步繪制到投影儀的屏幕上,達到實時同屏的效果[6-7]。
系統(tǒng)以Pad平板電腦為管理端,以手機等移動終端為用戶端,投影儀為服務(wù)端,使用無線WiFi連接技術(shù),將用戶端當(dāng)前屏幕顯示的信息(如演示的PPT、照片、視頻等)同步傳輸?shù)酵队皟x,投影儀再將其進行投影,實現(xiàn)實時投屏展示。
系統(tǒng)的主要功能為屏幕分享和廣告投放,分別對應(yīng)了系統(tǒng)的兩種使用模式:多用戶單投屏和單用戶多投屏。管理端可以管理和查看其在投影儀投放的音視頻在各個投影儀上的投放實況。
業(yè)務(wù)流程:①多用戶單投屏;②單用戶多投屏。
①賬戶登錄-選擇業(yè)務(wù)-屏幕分享-輸入正確密鑰-進入會議間-請求投影-獲取管理員同意-開始投影-結(jié)束投影
②賬戶登錄-選擇業(yè)務(wù)-廣告投放-添加廣告-瀏覽文件-選擇文件類型-選擇單次時長(若是視頻選擇視頻播放的開始時間到結(jié)束時間)-選擇投影儀-備注-完成添加-開始投放。
在實現(xiàn)移動終端和投影儀進行一對一的信息交互時,提供藍牙和WiFi兩種連接模式,以便移動終端和投影儀在無網(wǎng)絡(luò)環(huán)境下進行信息交互展。
3.2 多用戶單投屏模式
由作為系統(tǒng)服務(wù)端的智能投影儀打開socket服務(wù)端口,管理員——Pad使用管理口令連接智能投影儀,用戶——智能手機通過用戶口令連接智能投影儀,用戶向Pad發(fā)出投屏請求,Pad同意后,手機開始向智能投影儀傳輸屏幕信息數(shù)據(jù)流,投影儀接收并同步播放,以達到同屏效果,如圖2所示。
3.3 單用戶多投屏模式
智能投影儀打開服務(wù)端口,用戶通過口令驗證連接相應(yīng)的智能投影儀,智能手機向智能投影儀傳輸影音文件,智能投影儀就收文件后,若無特定情況按照預(yù)先設(shè)置好的算法進行先排序后循環(huán)播放,特殊情況下管理端pad也可以任意改變播放順序,以達到用戶需求。如圖3所示。
通過Android 的File類,智能手機向投影儀傳輸文件,從安卓投影儀上獲取到本地的存儲空間,達到文件傳輸?shù)男ЧM队皟x再使用播放器解碼播放,達到廣告投放的效果[8]。
4 緩沖機制
圖像數(shù)據(jù)緩沖采用雙緩存的機制。在投影儀端的程序上設(shè)置兩個緩沖區(qū),接收來自智能手機端的影音文件。雙緩沖是一種良好的能夠防止動畫閃爍的緩沖機制,同時是一種多線程應(yīng)用。其實很簡單,就是在主線程外另開一條線程,用于繪制當(dāng)前幀的后一幀圖像即可,在獨立的幀緩存空間中繪圖不會影響到當(dāng)前播放的幀。
雙緩沖技術(shù)的使用,以及多線程的應(yīng)用可以提高動畫的流暢度,對于改善播放效果非常有用。這樣,在雙緩沖和多線程結(jié)合使用下,系統(tǒng)的投影儀端可以一邊接收用戶傳輸過去的圖像數(shù)據(jù),一邊播放幀緩沖區(qū)A中畫好的圖像的同時,在幀緩沖區(qū)B中繪制下一張要播放的圖像,這樣可以避免重畫造成的閃爍,在前后兩張圖的切換上幾乎沒有延時,使用戶完全感覺不到畫面切換 [9]。
5 服務(wù)器與邏輯處理
建立后臺服務(wù)器,使系統(tǒng)能夠在遠程的情況下投放廣告,同時擴展系統(tǒng)的業(yè)務(wù)邏輯處理能力。系統(tǒng)服務(wù)器采用分布式服務(wù)器,應(yīng)用程序、數(shù)據(jù)庫、文件三者得以運行。此處也根據(jù)情況而定,系統(tǒng)用戶較少時,用一個服務(wù)器將三者包括。
文件服務(wù)器需要存儲用戶上傳的內(nèi)容,需要較大的存儲空間,隨著用戶增多,數(shù)據(jù)庫的存儲空間不足,就會出現(xiàn)用戶訪問受到影響的情況,此時進行應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)器分離。如圖4所示。
系統(tǒng)用戶增多后,服務(wù)器就需要具備更強的業(yè)務(wù)邏輯處理能力,保證業(yè)務(wù)處理的響應(yīng)速度;面對逐步增多數(shù)據(jù)的處理,普通的服務(wù)器沒辦法及時處理眾多請求應(yīng)答,故引出邏輯服務(wù)器。
在一臺代理服務(wù)器后面掛N臺邏輯服務(wù)器,因為所有的用戶請求只需要針對代理服務(wù)器,并不關(guān)心其具體的工作流程;代理服務(wù)器把請求消息負載到不同的邏輯處理區(qū)上進行處理,待邏輯處理器完成后,將結(jié)果返回給代理服務(wù)器,再由代理服務(wù)器返回處理結(jié)果給用戶,這樣就可以達到邏輯服務(wù)器的應(yīng)用效果[10]。
發(fā)展到了一定程度,由于用戶數(shù)量大,操作消息多,此時還需設(shè)置一個消息路由關(guān)系,消息路由可以將信息劃分為不同類型的信息,發(fā)送給不同的邏輯服務(wù)器上,減少時間上的浪費,使得消息處理更加靈活,同時為了使得信息不丟失,使用邏輯服務(wù)器共享信息。
6 結(jié)束語
移動云投影系統(tǒng)運用了安卓、Java、無線WLAN技術(shù)及Android Studio軟件的應(yīng)用開發(fā)。開發(fā)出來的系統(tǒng)基本上實現(xiàn)了手機WiFi文件傳輸、文字通訊、屏幕共享等功能。MVP開發(fā)模式降低了各部件間的耦合度,增強了代碼的可測試性,雖然對于小型程序而言,開發(fā)成本有所提高,但同時也提高了應(yīng)用程序的可擴展性,為后續(xù)的再開發(fā)留下了足夠的空間和良好的重塑基礎(chǔ)。
參考文獻:
[1] 胡偉. Android系統(tǒng)架構(gòu)及其驅(qū)動研究[J]. 廣州廣播電視大學(xué)學(xué)報, 2010, 10(4):96-101.
[2] 高昂, 魏惠茹, 李曉東, et al. MVC設(shè)計模式研究[J]. 電腦知識與技術(shù), 2016, 12(1):88-89.
[3] 劉娜, 劉如起. MVC模式在Android開發(fā)上的應(yīng)用研究[J]. 山東工業(yè)技術(shù), 2017(3):137-137.
[4] 劉姝君, 左樂. MVC模式下的應(yīng)用軟件開發(fā)框架初探[J]. 通訊世界, 2017(5):281-282.
[5] 王念橋. 應(yīng)用MVP模式改進軟件架構(gòu)[J]. 計算機時代, 2012(4):37-38.
[6] 徐鵬. 基于Socket的無線數(shù)據(jù)傳輸?shù)尿?qū)動程序設(shè)計與實現(xiàn)[J]. 電腦知識與技術(shù):學(xué)術(shù)交流, 2018(2Z):105-109.
[7] 何文彥. 基于Android的屏幕分享控制系統(tǒng)的研究[D]. 西安:西安工業(yè)大學(xué),2016.
[8] 尹揆. 投影廣告系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京:北京交通大學(xué), 2013.
[9] 曾麒. MFC中雙緩沖處理貼圖閃屏問題[J]. 科技信息, 2011(3):68-68.
[10] 陳杰.服務(wù)器端分布式存儲與負載均衡算法[D]. 廣州:廣東工業(yè)大學(xué), 2016.
【通聯(lián)編輯:謝媛媛】