马 丽
(渤海大学,辽宁 锦州 121013)
随着移动通信技术与手机软硬件技术的发展,产生了基于智能手机的移动学习,并逐渐成为教育领域的应用热点。学习者可以利用零碎时间进行非正式学习,解决了传统学习受时间和空间限制等问题,并实现了无障碍及时交互[1]。移动学习符合终身学习的理念,学习者可以根据自身需要选择学习内容,提高了学习的积极性和主动性[2]。Android操作系统是目前智能手机领域最受欢迎的操作系统,市场占有率多年来稳居第一位,尤其备受青年学生的青睐。Android已经积累了相当多的应用,更多的应用使得Android更加流行,从而吸引更多的开发者开发更多更好的应用,形成一个良性循环,开发基于Android的移动学习平台具有广阔的前景[3]。针对目前移动学习开展缓慢、移动学习资源相对匮乏、移动学习平台功能单一和移动平台开发周期长等现状,文中以充分的系统调研和需求分析为基础,基于软件工程思想和移动开发最新技术展开研究,为移动学习平台开发提供解决方案,也为Android领域其他系统开发提供借鉴。
Android是一种基于Linux的移动终端操作系统,具有开放性和免费性的特点,能促进技术创新,有着极短的开发时间,有助于降低开发成本,成为全球最受欢迎的智能手机操作系统之一。Android继承了Java跨平台的优点,任何Android应用几乎无需任何修改就能运行于所有的Android设备。Android利用Java跨平台的性质,选择使用Java进行各项API开发,在Dalvik虚拟机上搭建了一个Java的application framework,所有的应用程序都是基于Java的application framework之上[4]。Android系统的应用及框架如图1所示。
图1 Android框架及应用
图1所示的Android框架及应用由Application Framework和Applications两部分构成,简要描述如下[5-6]:
(1)Application Framework,是系统为应用程序提供的各种API接口,目的是简化组件重用。可以调用这些系统提供的API或构建满足自身业务需求的API。Application Framework核心组件有5个,活动管理器(Activity Manager)管理应用的生命周期,通知管理器(Notification Manager)在状态栏中显示自定义的提示信息,资源管理器(Resource Manager)提供非代码资源访问,内容提供器(Content Provider)使得应用程序访问另一个程序的数据,视图系统(View System)提供用于构建应用程序的用户界面元素。
(2)Applications,是Application Framework提供的供开发者使用的应用。操作系统代表一个完整的生态圈,没有丰富的应用支持,很难大规模流行开来。Android装配一个核心Applications应用程序集合,具体包括短信、日历、地图、浏览器、联系人、电子邮件、媒体播放器、计算器、语音拨号、相册、闹铃、时钟、即时通讯和相机等,软件开发时可将这些应作为组件使用。由于Android具有开源性的特点,开发者可以对这些应用的底层Java代码进行修改,使之满足个性化的需求。
基于Android的移动学习平台使用SSH2框架开发,SSH2框架与SSH框架的区别在于SSH2框架应用Struts2。Struts2是基于MVC设计模式的Web应用框架,以WebWork设计思想为核心,统一了Struts1和WebWork两个框架,基于OGNL强大的数据存取方式,采用无侵入的架构设计,针对拦截器开发,业务逻辑控制器Action由框架提供,拦截器将处理结果转换成用户响应,具有设计灵活和控制简单等优点[7]。该平台的层次结构如图2所示。
图2 平台层次结构设计
图2所示的平台层次结构由6层构成:用户层,是用户进行移动学习或系统管理的各种终端设备,系统管理通常使用台式机,学生用户使用最多的是智能手机和终端电脑;表现层,用户和系统间进行交流的桥梁,由用户界面构成,用户通过表现层与系统进行交互,接受用户请求并返回处理结果;控制层,负责系统的访问控制、数据加载和注销,是系统的核心控制单元,具体工作就是将用户请求从页面传到后台代码;逻辑层,处理与业务相关的部分,实现系统的业务逻辑,是系统主要的运算和数据处理单元,包含了系统所需要的所有功能上的算法和计算过程;持久层,为业务层提供数据服务,为系统进行数据操作提供统一入口,具体工作就是将逻辑层的处理结果保存到可掉电式存储设备中;数据层,存储各类数据,主要是学习资源,可以是数据库方式,也可以是各种类型文件,该系统采用二者相结合的方式,具体的移动学习资源采用文件存储,学习资源的相关信息存储到数据库中。
移动学习平台设计基于以下设计理念:一是,适合于自我发起的非正式场合学习,具有较强的亲和力和交流性,学习不再仅仅是接受知识,而是能够发现问题和解决问题;二是,提供丰富的学习功能,学习的内涵和形式更加丰富,体现出“做中学、玩中学、游中学”的新特点,适合于利用零散时间;三是,基于Web3.0开发,平台中的信息可以直接和其他平台进行交互,通过信息平台对其他学习资源进行整合,实现资源存储和访问的均衡分配[8]。基于以上理念进行的总体设计如图3所示。
图3 移动学习平台总体结构
图3所示的移动学习平台总体结构由四部分构成:第一,移动学习终端环境,包括移动学习终端设备和移动学习网络接入。移动学习终端设备包括智能手机和平板电脑等。移动学习网络接入是指代Wifi、Wlan和Wimax这类接入网络。Wlan是无线局域网络,相当便利的数据传输系统。Wifi其实是Wlan的一个标准,是属于Wlan的子集。Wimax是一项新兴技术,可以为高速数据应用提供更出色的移动性。该平台推荐三种方式结合使用。第二,移动学习功能环境,提供各种功能及资源,是平台的核心部分。通信协议与通信标准实现客户端功能与学习资源的交互,移动学习客户端主要包括资源中心、任务下达和协作学习等功能,移动学习资源包括文本、音频、视频和微课等类型。第三,移动学习服务环境,包括对移动学习内容的选择和分割。移动学习要在相对零散的时间内完成相对独立的学习内容,以片段化资源代替大量的学习内容,片段化的内容不能随意切割,要以元知识点为核心,通过内容之间的某种联系形成紧密的知识体系。第四,移动学习平台后台维护环境[9],是为管理员提供的维护操作功能,数据备份与恢复、用户权限管理、系统配置管理和界面布局动态规划等。
Android系统的开放性使用户界面存在各种不协调因素,且缺乏统一规范。Android的屏幕类型有几百种不同的尺寸,设计时要考虑兼容不同的屏幕尺寸。Application Framework提供的接口以及Java通用类库提供的解决方案,使界面设计相对简单。屏幕界面设计包括布局设计、信息呈现设计和交互设计等[10]。屏幕内容及程序结构如图4所示。
图4 屏幕内容及程序结构
(1)屏幕(Android.app.Activity)[11]。应用程序实现活动时需要继承Activity类。Activity是一个最直接与用户接触的应用程序组件,一个Activity就是一个单独屏幕,用来完成与用户之间的交互,Activity之间通过Intent进行通信。Activity在Active/Running、Paused、Stoped和Killed等状态转换之间回调接口,可以重载实现以便执行相关代码。
(2)内容(Android.view.View)。View是Android一切视图的基础,Android程序中使用的视图一般都继承自View类。View是所有与用户交互的组件的Widgets的基类(Buttons和textField等)。Android中View比传统意义的视图具有更广泛的含义,包含了用户交互和显示,实现一个View时需要实现框架中一些所有Views公用的方法。
Android客户端除了完成与用户交互外,另一个重要作用就是提交数据、验证数据和解析显示数据;服务器将客户端页面接收的各种不同类型数据,通过服务器的Servlet子类Http Servlet对象提交给服务器端处理逻辑,完成客户端与服务器的交互。客户端与服务器的通信流程如图5所示[12-13]。
图5 数据通信流程
在图5所示的通信流程中,Http Client提供高效和功能丰富的支持HTTP协议的客户端编程工具包,并且支持HTTP协议最新版本,不仅使客户端发送HTTP请求变得容易,而且也方便了开发人员测试接口。客户端业务逻辑组件通过API接口管理调用指定的API Service,将VO(Value Object值对象)解析为HTTP请求参数,再调用Http Client向服务器端发送HTTP请求。XML解析采用PULL方法,Android已经将PULL技术集成到系统中,允许应用程序代码主动从解析器中获取事件,满足需要的条件后就不再获取事件。API接口管理采用显示来声明接口是[HttpGet]或者[HttpPost],避免出现请求的资源不支持TPPT方法等问题[14]。业务逻辑组件使用Enterprise JavaBean的方式处理,可以将处理后的数据直接存储,提供较好的安全性和可靠性。
移动学习是一种新型的学习方式,是在新技术孕育下产生的。作为教育服务的延伸,拓展了教育的范围和方式。以移动学习相关理论及Android开发技术设计的移动学习平台,充分考虑了学习者的需求,解决了系统开发关键性的技术问题,提供了层次结构设计、总体结构设计、屏幕界面设计和数据通信设计的集成化解决方案。以此设计结果为基础构建软件开发架构后,开发人员可以直接编写代码,提高了系统开发的质量和效率。软件开发时可根据系统需要以及学科特点,融合移动开发最新技术,对系统功能进行扩展和延伸,以便开发出针对性更强、用户体验更好和技术更先进的移动学习平台。