基于Android的PDF课件阅读客户端的设计与实现

2018-11-14 12:58
赤峰学院学报·自然科学版 2018年10期
关键词:安卓开源应用程序

彭 飞

(安徽信息工程学院 计算机与软件工程学院,安徽 芜湖 241000)

目前,市场上关于移动学习的安卓程序较多,除了可以播放学习视频之外,绝大部分应用程序是将学习内容以网页化的形式在客户端进行展示,但目前高校教师团队的课件基本都是PPT/DOC/PDF格式,在经过转换之后,很难保证在客户端浏览的格式与电脑端保持一致,那么自然会降低学习效果和效率.因此,若能设计并研发出一款在安卓客户端直接对PPT/DOC/PDF格式的课件进行在线阅读的移动学习应用程序,其对促进教育的发展,所带来的社会效益都将是非常可观的[1].

1 Android概述

安卓是一个以Linux系统内核为基础,开放源代码,具有高度可扩展性的智能手机操作系统,是目前市场上使用率较高的手机操作系统之一[2].

正是由于安卓系统是开放式的,在不支付任何费用的情况都可直接使用,因此在目前国内,手机生产厂商基于企业利润或研发成本的考虑,都会选择安卓系统作为其生产的手机操作系统[20].

PDF课件阅读客户端之所以选择安卓系统作为平台的重要原因就是由于安卓具有以下优势:

1.1 平台开放性

因为安卓的开放性,智能移动终端的生产厂商很大一部分都已经成为安卓联盟中的一员,导致其拥有大量的开发者,系统用户和应用程序也日益增多,最终也就促使了安卓系统以极快的速度走向成熟.

1.2 不受运营商的限制

安卓操作系统目前支持所有的网络制式,包括CDMA、EV-DO、TD-SCDMA、GSM/EDGE、UMTS、Bluetooth、Wi-Fi、LTE、NFC和WiMAX.因此用户可以不受网络运营商的限制而连接入网络,能够更简单地进行网络数据的使用.

1.3 多种硬件选择

由于安卓的开发性,大量的设备制造厂商的加入,因而就会推出屏幕尺寸各异、各具功能特色、性能差异巨大,但又不缺失人性化的产品[3].

2 Eclipse平台介绍

目前企业中的安卓程序的研发人员大多数都在基于Eclipse平台进行代码编写和调试工作.Eclipse平台是一个开源的软件项目,由于它是一套软件框架和服务,所以就能够通过添加不同的插件来达到开发不同应用程序的目的.目前这个平台有众多版本,其中就包括谷歌公司专门针对开发安卓应用程序所开发的一一个版本,被称之为ADT-Bundle.ADT-Bundle本质上就是以Eclipse平台为基础,添加了ADT插件以及最新版本的安卓的SDK.研发人员就可以利用该平台直接新建安卓工程,编写调试代码,打包并发布安卓应用程序,创建安卓模拟器,在模拟器上安装并测试安卓应用程序,这样对于安卓应用程序的研发就可以更加集中精力,提高开发效率.

3 Android客户端的设计

3.1 系统拓扑结构

本移动客户端的的系统拓扑结构如图1所示.

图1 系统拓扑图

3.2 网络访问设计

HttpClient作为一个开源的、易于网络请求的HTTP客户端,由于其既可以发送请求,又可以接收响应,因此目前安卓项目已经集成了HttpClient用于请求发送和响应接受.安卓应用程序的开发人员能够直接利用HttpClient进行网络操作,来达到与Web服务器进行数据交互的目的.

在安卓程序中利用HttpClient进行网络操作,包括发送请求和接收响应,大致包括以下几个操作:

实例化HttpClient表示客户端.

实例化请求对象,根据请求方式分为两种情况:假如是GET,则实例化HttpGet类;假如是POST,则实例化HttpPost类.

执行客户端实例的execute方法用于进行请求,该方法的返回值为服务器响应对象,通过调用该对象的方法则可以获取服务器响应的各项数据.

根据响应对象的属性判断是否正常.

如果响应正常,则获得响应对象当中的数据.

3.3 课件阅读设计

不同于市场上大部分移动学习客户端都是以文本或网页直接在界面中呈现,为保证在本客户端中对课件的浏览内容和格式与在电脑端中保持一致,课件阅读模块是基于开源项目MuPDF案例的基础上,从服务器端获取课件文档数据后,然后直接浏览PDF格式的文件,同时具有翻页,放大缩小文档的功能.

课件阅读的时序图如图2所示.

图2 课件阅读时序图

4 Android客户端的实现

4.1 开发环境

本客户端以Eclipse作为开发环境,使用Java进行研发,采用SQLite进行客户端数据的存储[4].下载由谷歌公司推出的专门开发安卓应用程序的集成软件包:ADT Bundle.

4.2 网络数据访问

本客户端通过调用符合REST格式的WebService接口来完成与学习资源平台业务数据的交互,此时就需要一个公共的网络访问组件,那么我们把公共访问组件封装到HttpUtil类中,这个类是利用安卓系统SDK原生态的网络组件HttpClient搭建,可以通过网络地址以Get或者Post的方式向服务器请求并传递数据,然后获取服务器响应的数据.利用HttpClient进行网络访问有下面几步:

(1)实例化HttpClient对象,代码如下:

HttpClient httpClient=new DefaultHttpClient();

(2)根据请求方式,实例化httpGET或httpPost对象,这些对象的创建都要传入即将访问的网络地址,代码如下:

HttpPost post=new HttpPost(url);

(3)如果有数据需要传递给服务器,则将数据进行封装处理,代码如下:

(6)解析得到的响应数据内容.

(7)关闭http连接,释放对象资源,代码如下:

httpClient.getConnectionManager().shutdown();

4.3 集成MuPDF项目

MuPDF是目前在安卓设备上进行PDF浏览领域,集成应用最多的开源项目之一,其具有小而快速的特点.而且功能齐全,支持对PDF文件进行批注、搜索等一系列功能.

本客户端在实现课件阅读功能时,集成了基于MuPDF的开源项目,并对界面做了实用性修改,删除部分自带的冗余功能.具体实现如下:

(a)下载基于MuPDF的开源项目artifex.mupdf

(b)在本客户端项目src目录下创建包名com.artifex.mupdf,然后将开源项目中代码拷贝到该包下.注意:此处新建的包名不可做任何变动.

(c)将开源项目中的libmupdf.so文件复制到安卓工程中的指定的文件夹内,如图3所示:

图3 libmupdf.so文件位置

(d)在项目中的清单文件AndroidManifest.xml中,进行Activity的声明注册,代码如下:

(e)在客户端中进行课件阅读时,将非加密状态下的课件文档路径存入到Intent对象中,然后跳转到步骤4声明的MuPDFActivity,即可显示该课件进行阅读.代码如下:

4.3 课件阅读

课件阅读是基于开源项目MuPDF的项目案例,其具有小而快速浏览pdf文件的特性.由于MuPDF项目只能支持文件浏览,而不支持二进制数据,所以当从学习资源平台获取加密的文档数据之后,首先会在客户端本地生成临时文件,然后将临时文件的路径通过Intent对象传递给项目中浏览界面,进行文档的阅读.由于临时文件是不加密的,就存放于本地,为了课件的安全性,需要在浏览界面中重写onDestroy函数及时删除临时文件.

(a)将PDF文件浏览界面的Activity在清单文件AndroidManifest.xml进行注册.

(b)从服务端获取要浏览的课件数据,并在客户端本地通过IO读写生成文件,注意此时文件处于加密状态.

(c)将文件路径存入到Intent对象,并通过该对象跳转到文件浏览界面MuPDFActivity,代码如下:

(d)在MuPDFActivity类中的onCreate方法内,通过Intent对象完成文件路径的数据传值,利用DES解密算法对文件进行解密操作,生成可直接浏览的文件,同时根据文件路径删除加密文件.

(e)进行的课件的浏览,实现大小变化、上页下页等.

(f)在MuPDFActivity类中的onDestroy方法内,负责及时删除可直接浏览、不加密的课件,代码如下:

5 结束语

Android客户端实现了一个学习者可以利用服务器端中现有的课件等资源,在业余、闲散、碎片化的时间能够进行学习,及时地解决了当前大部分学习客户端软件不能直接浏览课件(PPT/DOC/PDF)的弊端.为保证服务器端中的现有课件在本客户端阅读时与电脑端的内容格式的一致,集成并应用开源项目MuPDF实现对PDF文件的在线浏览.

猜你喜欢
安卓开源应用程序
iPhone不卡的秘密曝光:安卓也能享受
文物表情包
删除Win10中自带的应用程序
五毛钱能买多少头牛
2019开源杰出贡献奖
谷歌禁止加密货币应用程序
一种基于安卓系统的手机侧抓包分析方法
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
安卓L未至安卓M来了!安卓首泄漏M系统