孙华林(常州机电职业技术学院信息工程系,常州 213164)
Android移动客户端新闻采集器的设计与实现
孙华林
(常州机电职业技术学院信息工程系,常州213164)
摘要:
关键词:
Android;JSON;手机模拟器;新闻采集器
近几年,随着移动通信技术的快速发展和Web应用技术的不断更新,移动互联网已成为移动网发展的主流。移动终端设备硬件性能大幅度提高,手机操作系统日益智能化以及通信网络基础设施的建设日益成熟,基于移动互联网的业务层出不穷,日益繁荣。移动互联网使人们可以随时随地、方便快捷地通过移动终端设备连入网络,获取需要的信息,如各种新闻、图片、音频、视频、办公文档等,同时借助移动终端设备强大的功能,来处理各种事情。安装在移动终端(如Android手机)的App应用(如新闻客户端App)也非常重视用户的体验,但移动终端产品的繁杂(主要是屏幕尺寸方面)使得软件开发人员要开发出用户高体验效果的APP软件越来越不容易。同时,传统的新闻采集管理(手工编辑新闻信息)也越来越不适应新的发展趋势。这就要求能开发出“智能”移动客户端新闻采集器,可以针对Android手机屏幕大小在PC端实现手机模拟器,可以让用户针对不同屏幕大小进行选择开发,更好地提高用户体验;同时实现网页新闻动态采集功能,用鼠标抓起某网站的新闻链接并拖拽到模拟器中,就可以实现新闻编辑,允许自定义新闻页面的配置,提高新闻编辑效率。
1.1Android平台架构及组件
Android是由Google(谷歌)公司和手机开放联盟(Open Handset Alliance)主导开发的一种基于Linux的操作系统,凭借其开源性和良好的可移植性,比其他手机开发平台如iOS、PalmOS、Symbian等更具有优势和竞争力。Android操作系统的OS架构采用“低耦合”的分层架构,从高到低分为四层,分别是应用程序层、应用框架层、系统运行库层和Linux核心层:其中应用程序由运行在Dalvik虚拟机平台上的各种Application应用程序构成;应用框架层主要由View、活动管理器、通讯管理器等组件组成,这些组件可以由程序员直接调用自由及开放源代码的优势;内核层包括Driver驱动、进程(Process)管理、内存(Memory)管理、网络协议栈等组件,这一层的核心系统服务包括安全性、内存管理、进程管理、网路协议以及驱动模型等,它们都依赖于Linux内核。
1.2JSON技术
JSON(JavaScript对象表示法)是采用JavaScript (Standard ECMA-262 3rd Edition - December 1999)语法来描述数据对象的一种轻量级的数据交换格式,其具体表现形式有四种:(1)对象是一个无序的“‘键/值’对”集合;(2)数组是有序的值(value)的集合;(3)值(value):值(value)可以是字符型(string)、数值型(number)、逻辑性(true|false)、null、对象(object)或者数组(array)等数据类型,必须用双引号括起来,这些结构可以嵌套;(4)字符串(string):是指一个由“任意个数量”的字符构成的、且使用双引号括起来的集合(Collection),使用引号括起来的任何一个字符(Character)都可以构成一个单独的字符串(Character String),这里的字符串和C语言、C++语言、C#语言或者Java语言重点的字符串类似。类似于XML,JSON是一种具有“自我描述性”、可以使用JavaScript进行解析、支持AJAX进行数据传输的纯文本,容易阅读和编写,这些特点使JSON成为理想的数据交换语言。
2.1技术方案选择
(1)服务器端:基于JavaEE5.0平台,采用MyE-clipse8.0作为开发环境、MySQL5.1作为数据库服务器、Tomcat6.0应用作为服务器,实现新闻采集器。
(2)移动客户端:基于Android4.2平台,采用E-clipse+ADT开发环境。移动手机客户端请求PC端的Servlet中的通过JSON格式化过的数据,构建出手机客户端新闻App应用。
2.2包结构设计
本系统包含7个实体类,7个数据访问接口、7个具体接口实现类、4个servlet及一些工具类和JSON数据化格式类。
(1)7个实体类:Bottom、Category、Content、News、Styel、Title、UserInfo。
(2)7个数据访问接口:BottomDao、CategoryDao、ContentDao、NewsDao、StyleDao、titleDao、UserDao。
(3)7个具体接口实现类:BottomDaoImpl、CategoryDaoImpl、ContentDaoImpl、NewsDaoImpl、StyleDaoImpl、TitleDaoImpl、UserDaoImpl。
(4)4个Servlet:GetNewsByTimeServlet、GetSpecifyCategoryNewsServlet、GetStyleCategoriesServle、Get-NewsServlet。
(5)数据格式化类:JSONObject、JSONArray、JSONString、JSON工具类。
它们之间的关系如下图1所示:
图1 包结构及关系图
2.3服务器端功能模块设计
服务器端功能模块包括新闻栏目管理、新闻采集器、模拟器尺寸设置、Android客户端App配置和用户登录等五个模块。
(1)模拟器尺寸设置主要实现模拟器屏幕尺寸的修改与设置操作,主要包括获取模拟器尺寸信息及修改模拟器尺寸等方法。
(2)Android客户端App配置模块主要实现对Android客户端显示的文字、颜色、背景、新闻数量等进行配置,主要包括:①对文字的修改和颜色的切换;②为中间页面传递Title实体,修改标题区域;③为中间页面传递Content实体,修改正文区域;④为中间页面传递Bottom实体,修改底部区域。
新闻采集器主要实现对新闻基本信息进行维护,包括对新闻基本信息的添加,删除,修改,其中新闻添加有手动添加和拖拽链接添加2种方式,类图及序列图如图2所示。
2.4Android客户端功能模块设计
Android客户端App应用包含四个功能模块,即:(1)取实时新闻、(2)获取执行栏目及新闻、(3)Android客户端界面设置、(4)获取新闻详情。这四个部分功能都需要和服务器端进行通信,并传递JSON对象,需要使用JSON解析相关信息并将解析后的内容放入View中,以方便在客户端APP中调用。具体流程如下图4所示:
图2 新闻采集器类图
图3 新闻采集器序列图
图4 Android客户端调用流程
下面以获取指定栏目及新闻为例子,具体步骤如下:
(1)编写方法调用接口获取新闻信息;
(2)解析新闻信息;
(3)将解析后的新闻信息显示到View当中,url为:http://127.0.1.1:8080/NewsProj/getSpecifyCategoryNe-ws?startnid=0&count=10&cid=1;
(4)模拟器中调用,url为:http://10.0.2.2:8080/News Proj/ getSpecifyCategoryNews?startnid =0&count = 10&cid=1,其中10.0.2.2为IP地址,真实手机以服务器IP地址为准。
(5)参数说明:①startnid:分页使用起始位置;②count:返回数目;③cid:新闻栏目。
3.1新闻采集器的实现
新闻采集器主要由Android模拟器(模拟中心)、配置中心及新闻采集器、新闻管理中心等组成。Android模拟中心主要在PC端实现Android手机模拟器效果,可以设置模拟器尺寸大小并预览(主要通过输入宽度、高度等数据后系统可以自动进行模拟器尺寸的计算)、Android模拟器的实现可以提供用户对栏目的添加、修改,新闻的添加、修改,提升用户体验效果。新闻中心主要实现新闻的动态采集功能,即手动拖拽页面地址就可以将页面中的新闻添加进来,实现方式即是将页面地址拖拽到指定区域即可,页面如下图5所示:
图5 新闻动态采集
左边的图显示的是将一个页面地址拖拽到指定区域“松开鼠标预览新闻”,然后将鼠标左键松开,此时Android模拟器将可以自动解析拖拽过来的页面内容,并将成功解析的内容填入自动跳转到的页面(右图)中。需要注意的是,如果在右边页面中显示的内容出现乱码,则可以更改左边页面中的编码方式后再拖拽地址。
3.2Android客户端App的实现
Android客户端App即“N新闻”可以实现数据与PC端数据同步配置、同步更新,方便用户使用手机移动终端实时查看最新新闻焦点。Activity部分代码如下所示:
public void onCreate(Bundle savedInstanceState)
{
……
setContentView(R.layout.home_activity);
//设置页面样式
preference = getSharedPreferences("main",MODE_PRIVATE);
String titlename = preference.getString("tite0","新闻");
String titlecolor = preference.getString("color0"," #FFFFFF");
String titlebgcolor = preference.getString("bgcolor0","#FFBBFF");
private boolean getCateNews(List<HashMap<String,Object>>newsList)
{……}……
private class LoadTask extends AsyncTask<Object,Integer,Integer>
{
protected void onPreExecute()
{
//隐藏刷新按钮
mTitlebarRefresh.setVisibility(View.GONE);
//显示进度条
mLoadnewsProgress.setVisibility(View.VISIBLE);
}
}
……
protected void onPostExecute(Integer result)
{
//根据返回值显示相关的Toast
if(result==ERROR)
Toast.makeText(HomeActivity.this,R.string.load_news_failure,Toast.LENGTH_LONG).show();
mNewsListAdapter.notifyDataSetChanged();
//显示刷新按钮
mTitlebarRefresh.setVisibility(View.VISIBLE);
//隐藏进度条
mLoadnewsProgress.setVisibility(View.GONE);
}
}
}
……
本文基于Android、J2EE平台及JSON技术在PC端实现了一个“手机模拟器”,通过对手机模拟器的尺寸、字体、颜色等参数的设置,可以定制出相同样式的客户端App界面,具有对任何一个Web页面中的新闻内容进行动态抓取的功能,即新闻采集人员只要用鼠标选中页面地址并按住鼠标左键拖拽到新闻采集器的指定区域,系统将自动解析并提取页面中关于新闻的标题、内容、发布时间等要素并显示,整个过程交互性强、操作简单、方便;同时完成了Android客户端App,用户体验感较好。
参考文献:
[1]林立,邹昌伟.基于Android平台的云计算研究[J].软件导刊,2010,9(11):137-139.
[2]王艺璇.基于Android平台的移动图书馆客户端设计与实现[J].智能计算机与应用,2011,1(4):28-30
[3]刘昌平,范明钰,王光卫等.Android手机的轻量级访问控制[J].计算机应用研究,2011.3.
[4]李慧等.基于物联网Android平台的水产养殖远程监控系统.农业工程学报,2013.7
[5]龚成莹等.基于JSON的Android移动终端与PHP及MySQL数据通信.工业仪表与自动化装置,2013.2.
Introduces the Android platform architecture and JSON,describes the design of the news collector in details from the following aspects:the technical scheme selection,the design of the package structure,the design of the server and the mobile client,gives the concrete realization of the news collector and Android App.
Keywords:
Android;JSON;Mobile Phone Simulator;News Collector
Design and Implementation on News Collector Based on Android
SUN Hua-lin
(Changzhou Vocational Institute of Mechatronic Technology,Changzhou 213164)
Abstract:
介绍Android平台架构及JSON技术等相关概念,从技术方案选择、包结构设计、服务器端及移动客户端功能模块设计等方面详细阐述新闻采集器的设计,给出新闻采集器和Android客户端App的具体实现。
文章编号:1007-1423(2016)15-0073-05
DOI:10.3969/j.issn.1007-1423.2016.15.018
作者简介:
孙华林(1977-),男,江苏徐州人,讲师,研究方向为移动互联应用、软件组件技术、图像处理
收稿日期:2016-03-25修稿日期:2016-05-15