APP下载

基于Android平台的资讯播报软件设计与实现

2014-09-26储正阳

安徽开放大学学报 2014年2期
关键词:网络通信资讯频道

邹 乐, 费 训, 储正阳

(合肥学院 网络与智能信息处理重点实验室,合肥 230601)

一、引 论

随着网络的普及和快速发展,互联网已成为获取信息的主要渠道,越来越多的用户使用网络来获取新闻[1]。但是传统的网页浏览方式也暴露了很多问题,比如,网页中大量的无关广告和信息给我们带来了很多困扰,对于一些门户网站,我们需要经过多层链接才能看到我们需要的信息,这些过程会花费用户非常多的时间,同时无法满足老人,儿童等特殊群体听资讯的需求。

本文介绍了基于Android平台的资讯播报软件,该软件克服因显示屏、视觉等因素造成的阅读不便,满足用户听资讯的需求,利于老人、儿童等特殊群体的使用。

二、相关技术简介

(一)Android软件

Android软件包含操作软件、一些关键的应用程序(如GoogleMap)以及中间件,开发语言采用Java,是一组面向移动设备的软件开发包[2-4]。Google提供了一套基于eclipse开发平台的工具包供开发设计人员使用。

(二)语音合成

语音合成,又称文语转换(Text to Speech)技术,它涉及声学、语言学、数字信号处理、计算机科学等多个学科技术,是中文信息处理领域的一项前沿技术,解决的主要问题就是如何将文字信息转化为可听的声音信息,也即让机器像人一样开口说话[5]。文语转换软件其过程是先将文字序列转换成音韵序列,再由软件根据音韵序列生成语音波形。

三、软件设计

(一)架构设计

软件总体架构如图1所示。

图1 软件总体架构

本软件主要分为五个模块,分别是手机客户端UI,资讯业务子软件,语音服务子软件,资讯服务支撑平台,语音合成服务平台。主要模块说明如下:

手机客户端UI:提供一个可视化的平台,带给用户良好的视觉效果,使用者可以根据自己的需求进行不同的操作。

资讯业务子软件:手机端对于资讯频道与内容的相应功能的实现。用户获取服务端预设的频道信息选择订阅,根据所订阅的频道取得资讯内容并下载到本地。

语音服务子软件:手机端对于语音播报的相应功能的实现。用户可以对播音自定义设置,发送请求得到转换的音频,如同音乐播放器一样可以选择播放、暂停或下一首等等。

资讯服务支撑平台:提供资讯的相应服务。预先设定资讯频道的信息,进行数据的采集。保存记录不重复并及时更新数据库,根据手机端上传的信息将查找指定的资讯内容并将结果返回。

语音合成服务平台:提供文语转换服务,本次采用的是MSP语音云平台。

(二)交互设计

本软件所用的通信都是基于HTTP协议的。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用软件之间的通信,从而实现各类应用资源超媒体访问的集成。

软件中的交互主要是手机客户端与服务器之间的交互。本软件有六个部分的交互:资讯内容浏览、资讯频道查看、语音服务、数据采集、版本控制和频道管理。

(1)资讯内容浏览的交互过程:进入资讯主界面,发送HTTP请求给网络通信层,网络通信层调用NewsList接口访问服务支撑接口,支撑接口根据请求信息查询数据库中的资讯详细内容,返回所需的资讯内容到支撑接口,支撑接口将结果生成为XML文档,返回给网络通信层,手机端解析返回的数据并以列表显示,将下载数据格式重组保存在本机。

(2)资讯频道查看的交互:进入频道订阅界面,发送HTTP请求给网络通信层,网络通信层调用SourceCategoryList接口访问服务支撑接口,支撑接口查询数据库中存储的资讯频道,返回所需的频道信息到支撑接口,将结果生成为XML文档,返回给网络通信层,手机端解析返回的数据显示给用户进行操作,将下载的数据保存在本机。

(3)语音服务过程的交互:开启语音播报,发送请求至网络通信层,链接到MSP语音云端进行语音会话,在此过程中将资讯内容的文本上传给云端,进行文语转换,并将合成的音频返回到网络通信层,手机端取得音频开始播放。

(4)版本升级:开始版本检查,发送HTTP请求给网络通信层,网络通信层调用version接口访问服务支撑接口,支撑接口查询业务数据库中的版本号,返回版本号到支撑接口进行比较,将版本相关信息以XML的格式返回给网络通信层,手机端解析返回的数据后让用户选择操作。

(5)数据采集:服务启动后,由服务端根据频道设置从网络来源上进行数据采集,过滤网页噪声将采集结果返回到资讯采集接口,并且将得到的数据信息存入到业务数据库中保持实时更新。

(6)频道管理:由管理员进行操作,调用ManagerService访问服务支撑接口,对数据库中的频道信息进行改动,将处理结果返回到页面。

(三)数据存储设计

本软件业务数据所涉及的主要实体包括:source,category,news,category-news。它们之间的关系如图2所示。

source-category:一对多关系,反应资讯频道的来源中所含有的分类信息。

category-category-news:一对多关系,反应资讯频道的分类中所包含的新闻记录。

category-news-news:一对一关系,反应资讯分类新闻记录中所对应的相应新闻内容的具体信息。

图2 资讯信息ER图

四、服务端的开发

(一)服务端类与模块说明

服务器端采用基于ASP.NET的三层架构,其主要类与组件如下:

1.RSS解析组件

RSS解析部分作为一个单独的组件,包含Channel类、Feed类与Item类,Channel类和Item类分别定义了RSS规范中来源和项的数据结构。

2.实体类

实体类是负责各层之间数据交互的载体,包含NewsModel类、SourceModel类、InstallModel类、CategoryNewsModel类、CategoryModel类,它们与数据库中的同名表相映射。

3.数据库访问层

数据库访问层主要负责与数据库的增删改查的基本操作,其中包括 CategoryDAL 类、CategoryNewsDAL 类、InstallDAL 类、NewsDAL 类、SourceDAL类。

4.业务逻辑层

业务逻辑层主要负责实现软件的业务逻辑。主要包括CategoryBLL类、CategoryNewsBLL类、InstallBLL类、NewsBLL类、SourceBLL类。

(二)核心功能处理流程

1.资讯采集

对网络上的资讯信息进行数据采集,其流程如图3所示。

图3 资讯采集流程图

资讯采集是服务器端实现的关键技术,服务器会定时地通过RSS链接地址向新浪、网易等媒体网站获取最新资讯。在ASP.NET中,Application在网站第一次响应请求启动,到应用程序关闭结束。在Application-Start中设置一个定时器以实现此功能。在这个定时器中加入事件,负责资讯采集,并清理过期新闻。

资讯采集过程中,首先通过预设的RSS Feed地址,获取RSS的内容,调用RSS解析组件,根据RSS文档规范解析XML,此处使用基于DOM模型的解析方式。取得新闻的标题与内容链接之后,为新闻标题计算MD5值,并根据此值查找数据库中是否有重复的记录。

如果无重复记录则由新闻内容的链接地址请求新闻全文,并通过HTML过滤器HtmlHelper类,来获取新闻的纯文本信息,过滤的方法按技术简介中所述,根据正则表达式截取主体内容,同时这里使用了微软的组件MSHTML访问HTML对象模型,遍历DOM的节点元素把文本段落中的文字提取出来,而把图片、样式等多余节点中的内容忽略。最后将采集到的新闻内容与相关信息插入到数据库中。

根据正则表达式截取主体内容的实现过程如下:

2.资讯服务

根据手机客户端的请求信息,提供相应的资讯业务内容,其流程如图4所示。

图4 资讯服务流程图

资讯服务主要是响应手机客户端的请求,包括资讯内容与频道信息的请求,并提供相应的业务服务。以资讯内容服务为例,服务器端接收到手机客户端发送的请求包并进行解析,其格式如软件设计中所述,取得相应的参数信息,然后根据请求的参数查询数据库,重组数据生成XML文档返回给手机客户端。

五、手机客户端的开发

(一)核心功能处理流程

一个Android程序默认情况下只有一个进程Process。UI Thread在Android程序运行的时候就被创建,是一个Process当中的主线程,主要是负责控制UI界面的显示、更新和控件交互。在Android程序创建之初,一个Process呈现的是单线程模型,所有的任务都在一个线程中运行。因此,我们认为,UI Thread所执行的每一个函数,所花费的时间都应该是越短越好。而其他比较费时的工作(访问网络,下载数据,查询数据库等),都应该交由子线程去执行,以免阻塞主线程。

获取资讯的过程是比较耗时的操作,此处创建一个新的线程LoadNewsThread来管理新闻读取。为了让主线程知道子线程的状态,并在主线程更新UI,我们使用了Thread+Handler的方式。由Handler来根据接收的消息,处理UI更新。Thread线程发出Handler消息,通知更新UI。

(二)语音播报

对选择的资讯内容进行语音播报,其流程如图5所示。

图5 语音播报流程图

语音播报中的语音合成与播放都是在后台进行的,但同时也需要与主Activity进行交互,传递参数或者方法调用,因此这里使用bind/unbind方法启动/关闭服务Service来进行语音播报的管理。

为了避免合成的文本过大,等待时间过长,对设置的文本资源进行了分段处理。同时为了控制播报流程需要为播放器设置监听器TTSPlayerListener。

在语音播报服务过程中,会发生状态的改变,包括播放状态,当前的条目位置等,同时要在UI上更新显示。使用Broadcast,Service发出广播,Activity负责接收,再对接收到的数据进行处理,就达到了预期的目的。

(三)频道订阅

获取资讯频道的列表,进行订阅选择,其流程如图6所示。

图6 频道订阅流程图

在进入频道界面时需要先下载频道信息,为了避免UI阻塞,同样使用了Thread+Handler的方式异步更新UI,此处不再详述。

获取频道信息的过程,首先向服务器端发出请求,然后由服务器端处理请求返回一个包含所有频道信息的XML文档,同时将下载的频道数据保存到文件,以供网络数据无效时访问。

六、结束语

本软件使用Android技术构建手机客户端,通过和服务器端的通讯获得RSS频道的最新资讯,并通过特定的协议能够动态的管理自己订阅的频道。通过对RSS及其相关技术标准的研究,设计出RSS解析组件。并根据RSS中的网页地址获取相应资讯的HTML全文,由这些信息提炼出有用的内容。用户使用软件能即时获得订阅频道的最新资讯。通过对Android源文件下的bin目录生成的.apk文件在手机端的测试,验证了程序代码的正确性。

[1]庾志成.移动互联网的发展现状和发展趋势[J].移动通信,2008(9),22-24.

[2]魏崇毓,张菲菲.基于 Android平台的视频监控系统设计[J].计算机工程,2012,38(14),214-216.

[3]曾健平,邵艳洁.Android软件架构及应用程序开发研究[J].微计算机信息,2011(9),1-3.

[4]杨文志.Google Android程序设计指南[M].北京:电子工业出版社,2009.

[5]党建成,周晶.语音合成技术及其应用[J].计算机与信息技术,2007(6),31-34.

猜你喜欢

网络通信资讯频道
资讯Information①
基于网络通信的智能照明系统设计
4K频道开播,你准备好了吗
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
寒假快乐频道
频道
专家频道
资讯