陆成茂 黄淳岚 杨晓慧 卢翰霖 徐彬 金海潮 乐光学
摘要:移动云投影系统采用三层体系结构,MVP开发模式,设有客户端、服务端和管理端;主要業务有两种:一是客户端将数据发送到服务端,二是客户端向后台发送请求,由后台服务器向服务端推送数据。该文通过介绍系统的各个组成结构及其业务流程,以及相关技术的应用,讲述整个系统的架构设计。
关键词:三层体系结构;MVC框架;无线投屏;Android应用架构
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2019)10-0062-03
开放科学(资源服务)标识码(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操作系统的源代码是半开放的,主要嵌入于移动设备,如智能手机和平板电脑等。它的内核属于Linux内核的一个分支,是Andy Rubin最先开始进行开发的,最开始主要是支持手机[1]。
移动互联网发展快速,微处理器技术也是发展迅猛。安卓手机在性能上逐年接近PC机,智能手机的功能逐步多样化,不再仅是用来进行普通的语音通话和短信发送,已经更多的应用于娱乐和一些办公场合。如音视频通讯、移动支付、移动监控等逐渐进入民众,给人们的生活带来不可替代的便捷应用。
移动应用满足着人们的衣食住行等各个方面,给人们提供了很大的便利。本文是主要对“移动云投影系统”的基本架构及其系统的规划与分析进行阐述。
2 架构
2.1 MVC开发模式
MVC的M代表模型,V代表视图,C代表控制器,它们三个的组合——是一种业务逻辑、数据、可视界面分离的组织代码的方法,将业务逻辑集中到组合的三个部件中的一个里面,在进行优化或者用户的个性化定制时,就不需要再重新编写一个新的业务逻辑,且一个模型可以对应多个可视界面[2-4]。MVC框架如图1所示。
MVC的设计思想,是不同的部件拥有不同的职责,各部件各司其职,将数据、可视界面的显示与控制互相独立,简化代码,提高复用,降低维护成本,提高开发者的UI设计开发效率。
Model包括了程序的业务规则、业务逻辑、还有数据等,用于保存实例数据。Model数据模型是JavaBean实体类,可以用一个实体类来表示客观世界中具有相同属性的事物。如一只小狗,通过定义和实例化Dog类表示。狗拥有的技能如进食、奔跑、伸舌头等就是类的方法,通过业务逻辑来编写。
View就是用户所看到的可进行操作的界面,视图界面,就是model数据模型的具体表现形式。它的主要任务是向用户展示数据以及接受用户的输入,因为在实际运营过程中,用户通常是看不到Model部分的。用户只能看到开发人员想让他们看到的内容,通过view向用户展示和交互。
Controller是MVC中的核心部分,是沟通model和View的桥梁。视图界面和数据实例的更新都是依靠Controller控制和调度,因为Model和View之间不能直接通信,在应用程序需要完成一个业务时,它们又必须要合作共同才能完成。于是,Controller就作为控制者,决定使用哪些model,并进行什么操作,该为view准备什么数据等。
2.2 MVP开发模式
MVP是一种软件框架级的设计架构,是从MVC开发模式演变而来。MVP为每个视图view定义抽象接口,再用这些接口标识视图view所支持的model。逻辑上等效的视图,在所有平台上拥有相同的接口,表示器通过这些接口与视图view进行交互[5]。
在MVC模式中,Activity作为安卓开发的核心组件,不仅承担视图View,同时也有Controller控制器的内容,这无疑是增加了代码的耦合度。当项目发展到一定程度,MVC开发模式的项目,开发和维护会变得麻烦。而在MVP模式中,因为Activity的UI逻辑被抽象成了View接口,业务逻辑抽象成了Presenter接口。View接口和Presenter接口的设计简化了Activity的工作,降低耦合度,方便进行单元测试,同时因为后台线程对Activity的引用而导致的“Activity的资源无法被系统回收,发生内存泄露的问题也能得到规避。
3 系统规划与分析
3.1 系统架构规划
移动云投影系统采用三层C/S的软件系统体系结构,所有安卓设备连接上同一无线AP,无线AP作为交互桥梁,联合构成局域网的通信结构,保证文件传输的速度。通过对数据流的处理,将安卓手机的屏幕显示内容同步绘制到投影仪的屏幕上,达到实时同屏的效果[6-7]。
系统以Pad平板电脑为管理端,以手机等移动终端为用户端,投影仪为服务端,使用无线WiFi连接技术,将用户端当前屏幕显示的信息(如演示的PPT、照片、视频等)同步传输到投影仪,投影仪再将其进行投影,实现实时投屏展示。
系统的主要功能为屏幕分享和广告投放,分别对应了系统的两种使用模式:多用户单投屏和单用户多投屏。管理端可以管理和查看其在投影仪投放的音视频在各个投影仪上的投放实况。
业务流程:①多用户单投屏;②单用户多投屏。
①账户登录-选择业务-屏幕分享-输入正确密钥-进入会议间-请求投影-获取管理员同意-开始投影-结束投影
②账户登录-选择业务-广告投放-添加广告-浏览文件-选择文件类型-选择单次时长(若是视频选择视频播放的开始时间到结束时间)-选择投影仪-备注-完成添加-开始投放。
在实现移动终端和投影仪进行一对一的信息交互时,提供蓝牙和WiFi两种连接模式,以便移动终端和投影仪在无网络环境下进行信息交互展。
3.2 多用户单投屏模式
由作为系统服务端的智能投影仪打开socket服务端口,管理员——Pad使用管理口令连接智能投影仪,用户——智能手机通过用户口令连接智能投影仪,用户向Pad发出投屏请求,Pad同意后,手机开始向智能投影仪传输屏幕信息数据流,投影仪接收并同步播放,以达到同屏效果,如图2所示。
3.3 单用户多投屏模式
智能投影仪打开服务端口,用户通过口令验证连接相应的智能投影仪,智能手机向智能投影仪传输影音文件,智能投影仪就收文件后,若无特定情况按照预先设置好的算法进行先排序后循環播放,特殊情况下管理端pad也可以任意改变播放顺序,以达到用户需求。如图3所示。
通过Android 的File类,智能手机向投影仪传输文件,从安卓投影仪上获取到本地的存储空间,达到文件传输的效果。投影仪再使用播放器解码播放,达到广告投放的效果[8]。
4 缓冲机制
图像数据缓冲采用双缓存的机制。在投影仪端的程序上设置两个缓冲区,接收来自智能手机端的影音文件。双缓冲是一种良好的能够防止动画闪烁的缓冲机制,同时是一种多线程应用。其实很简单,就是在主线程外另开一条线程,用于绘制当前帧的后一帧图像即可,在独立的帧缓存空间中绘图不会影响到当前播放的帧。
双缓冲技术的使用,以及多线程的应用可以提高动画的流畅度,对于改善播放效果非常有用。这样,在双缓冲和多线程结合使用下,系统的投影仪端可以一边接收用户传输过去的图像数据,一边播放帧缓冲区A中画好的图像的同时,在帧缓冲区B中绘制下一张要播放的图像,这样可以避免重画造成的闪烁,在前后两张图的切换上几乎没有延时,使用户完全感觉不到画面切换 [9]。
5 服务器与逻辑处理
建立后台服务器,使系统能够在远程的情况下投放广告,同时扩展系统的业务逻辑处理能力。系统服务器采用分布式服务器,应用程序、数据库、文件三者得以运行。此处也根据情况而定,系统用户较少时,用一个服务器将三者包括。
文件服务器需要存储用户上传的内容,需要较大的存储空间,随着用户增多,数据库的存储空间不足,就会出现用户访问受到影响的情况,此时进行应用服务和数据服务器分离。如图4所示。
系统用户增多后,服务器就需要具备更强的业务逻辑处理能力,保证业务处理的响应速度;面对逐步增多数据的处理,普通的服务器没办法及时处理众多请求应答,故引出逻辑服务器。
在一台代理服务器后面挂N台逻辑服务器,因为所有的用户请求只需要针对代理服务器,并不关心其具体的工作流程;代理服务器把请求消息负载到不同的逻辑处理区上进行处理,待逻辑处理器完成后,将结果返回给代理服务器,再由代理服务器返回处理结果给用户,这样就可以达到逻辑服务器的应用效果[10]。
发展到了一定程度,由于用户数量大,操作消息多,此时还需设置一个消息路由关系,消息路由可以将信息划分为不同类型的信息,发送给不同的逻辑服务器上,减少时间上的浪费,使得消息处理更加灵活,同时为了使得信息不丢失,使用逻辑服务器共享信息。
6 结束语
移动云投影系统运用了安卓、Java、无线WLAN技术及Android Studio软件的应用开发。开发出来的系统基本上实现了手机WiFi文件传输、文字通讯、屏幕共享等功能。MVP开发模式降低了各部件间的耦合度,增强了代码的可测试性,虽然对于小型程序而言,开发成本有所提高,但同时也提高了应用程序的可扩展性,为后续的再开发留下了足够的空间和良好的重塑基础。
参考文献:
[1] 胡伟. Android系统架构及其驱动研究[J]. 广州广播电视大学学报, 2010, 10(4):96-101.
[2] 高昂, 魏惠茹, 李晓东, et al. MVC设计模式研究[J]. 电脑知识与技术, 2016, 12(1):88-89.
[3] 刘娜, 刘如起. MVC模式在Android开发上的应用研究[J]. 山东工业技术, 2017(3):137-137.
[4] 刘姝君, 左乐. MVC模式下的应用软件开发框架初探[J]. 通讯世界, 2017(5):281-282.
[5] 王念桥. 应用MVP模式改进软件架构[J]. 计算机时代, 2012(4):37-38.
[6] 徐鹏. 基于Socket的无线数据传输的驱动程序设计与实现[J]. 电脑知识与技术:学术交流, 2018(2Z):105-109.
[7] 何文彦. 基于Android的屏幕分享控制系统的研究[D]. 西安:西安工业大学,2016.
[8] 尹揆. 投影广告系统的设计与实现[D]. 北京:北京交通大学, 2013.
[9] 曾麒. MFC中双缓冲处理贴图闪屏问题[J]. 科技信息, 2011(3):68-68.
[10] 陈杰.服务器端分布式存储与负载均衡算法[D]. 广州:广东工业大学, 2016.
【通联编辑:谢媛媛】