【Android论文栏目提醒】:网学会员Android论文为您提供基于Android智能手机系统平台的新闻接收客户端 - 期刊论文参考,解决您在基于Android智能手机系统平台的新闻接收客户端 - 期刊论文学习中工作中的难题,参考学习。
计 算 机 与 现 代 化 2012 年第 4 期 JISUANJI YU XIANDAIHUA 总第 200 期文章编号: ) (2012 04-0090-04 1006-2475 基于
Android智能手机系统平台的 新闻接收客户端 阙 锋 (江西日报社,江西 南昌 330006) 摘要:探讨如何利用Java语言在
Android2.3系统上开发一套能将服务器端的XML与JPG文件下载至本地供读者随时查看的 软件。
系统首先通过Http协议将XML文件以Inputstream方式下载到本地,然后通过SAX进行解析,并存入SQLite3数据库中, 当用户需要阅读时以ListActivity方式列表显示出来。
关键词:
Android;Java;SAX;Inputstream;SQLite3;ListActivity 中图分类号:TP311.5 文献标识码:A doi: 10.3969/j.issn.1006-2475.2012.04.024 Design and Implementation of New Receiver Client for Intelligent Mobile System Platform Based on
Android QUE Feng (Jiangxi Daily,Nanchang 330006,China) Abstract: This paper discusses how to use Java language to develop a system on
Android2.3. It can download server-side XML and JPG files to the local for readers to keep track of the software. First,through Http protocol,the system downloads XML file using the way of Inputstream to the local. And then it parses with SAX,stores data into SQLite3 database. When the user needs to read the list,it will display with the way of ListActivity. Key words:
Android;Java;SAX;Inputstream;SQLite3;ListActivity0 引 言 1 相关技术 近年来随着智能手机、3G等新技术的不断普及, 1.1 SAX如何利用智能手机等移动通讯平台实现移动办公自 ) SAX (simpleAPIforXML 是
Android平台上一种动化成为了一个广泛关注的话题。
本系统的主要功能 XML解析的方法。
因为SAX解析具有解析速度快的特就是通过下载服务器端存有新闻内容的XML文件和 点,它逐行扫描文档,一边扫描一边解析,但是SAX操JPG图片来获取新闻资源, 同时将新闻自动导入本地 作 复 杂 。
SAX 主 要 使 用 的 类 有 :SAXParserFactory、的数据库并保存。
当读者要阅读时,系统可以将新闻 SAXParser、 XMLReader、 InputSource、 DefaultHandler。
从数据库中调出,从而实现离线阅读。
1.2 SQLite数据库 本系统将选择
Android作为系统平台。
目前智能 SQLite是一款轻型的嵌入式数据库,是遵守ACID手 机 操 作 系 统 主 要 有 Apple Ios、
Android、Windows 的关联式数据库管理系统。
SQLite最大程度地实现了mobile、Blackberry、Symbian等。
其中
Android ) (安卓 系 self-contained,它非常适合应用于嵌入式设备,本系统统是Google于2007年11月5日发布的基于Linux平台的 将利用SQLite3数据库作为数据层。
开源手机操作系统。
其作为一款主流的智能手机操作系统,在2011年7月己占到全球智能手机操作系统市 1.3 Activity与ListActivity场份额的42,排名第一。
在一个
Android应用中,一个Activiy通常就是一个 收稿日期:2011-11-14 阙锋 ) 作者简介: (1968- 男江西宁都人江西日报社技术中心高级工程师硕士研究方向:软件项目管理。
2012 年第 4 期 基于
Android智能手机系统平台的新闻接收客户端 阙锋: 91单独的屏幕,而ListActivity是一个专门显示ListView ) 系统数据库名为news_db。
JPG文件形式保存 。
其中共的特殊的Activity类,它内置了ListView对象。
有两个表, 分别是新闻内容表newstable和系统参数表 systemtable。
系统将会在第一次使用时自动建立数据2 系统分析与设计 库和两个表。
newstable表结构如表1所示。
2.1 系统主要功能 表1 newstable表结构 本系统的主要功能是将服务器上以XML和JPG 字段名 类型 作用 备注文件形式保存的文本与图片新闻下载并保存在手机 _id Int 本地新闻 id 号 主键、自动编号客户端上,供使用者需要时调阅。
系统开发要求如下: ttext Text 新闻标题 ) (1 通过Http协议下载文件; stext Text 新闻内容 ) (2 解析XML文件, 获取新闻内容; sphoto Text 新闻配图文件名 (3 入库并保存新闻内容; ) oldid Text 服务器端新闻 id 号 (4 检索并按设定的格式显示新闻内容; ) (5 设定并保存系统参数。
) 4 系统实现2.2 系统结构 4.1 数据库操作类datacls 包含5个功能模块: 本系统为三层结构, 新闻列表、 该类继承于SQLiteOpenHelper类, 并重写了它的新闻阅读、 数据清除、 系统设定、 数据更新。
其中数据 onCreate、onUpgrade方法。
当第一次调用datacls时, 系层为SQLite3环境下开发的数据库news_db。
业务逻辑 统 会 自 动 建 立 news_db 库 及 两 个 表 newstable、层为Java开发的类, 按功能分别为:数据库操作类Dat- systemtable。
该类还重写了查询并返回一个cursor的方acls、基于Htpp协议的文件下载类HttpDownloader、写 法rawQuery、 执行SQL语句的方法execSQL等。
本地文件的类fileUtils、新闻SAX操作类news、 XMLCon- 4.2 写文件类fileutilstentHandler。
表示层为以Java和XML开发的3个Activ- 该类的主要功能是将一个inputstream写入到本ity,分别是首页主模块newsapp、新闻显示newsshow、 地SD卡中。
其主要方法是write2SDFromInput String (系统设定sysset。
其中主模块newsapp中包含了3个功 path, ) InputStream input , 可 将 一 个 String fileName,能: 从服务器端下载、解析并保存数据,清空本地数 InputStream里面的数据写入到SD卡中。
该方法代码如据, 读取并列表显示本地新闻数据。
系统结构如图1 下:所示。
( String fileName, public File write2SDFromInput String path, ) InputStream input { File file null; OutputStream output null; { try ( ) creatSDDir path ; ( ) file creatSDFile path fileName ; ) (file ; output new FileOutputStream 〔 byte buffer new byte 4 1024〕; ( (buffer ) -1 { while (input.read ) ) ( ) output.write buffer ; } (; output.flush ) } 图1 系统结构 ...3 数据库设计 return file; 本系统使用
Android自带的SQLite3数据库,用于 }保存下载的新闻内容和系统设定情况 (新闻图片以 4.3 基于Http协议的文件下载类HttpDownloader92 计 算 机 与 现 代 化 2012 年第 4 期 该类中主要功能是一个通过Http协议将网络服 tagName localName;务器上的文件下载到本地。
其主要方法getInputStream ( .trim ) String newsData newsDataBuilder.toString ) ( ;用于通过Http协议下载文件并返回inputstream。
该方 ( if startEntryElementFlag true)法代码如下: { ) (String urlStr public InputStream getInputStream ( ( ) if tagName.equals Etitle ) { { InputStream inStream null; ( ) news.setttitle newsData ; try } { ( ( ) else if tagName.equals Eoldid ) (urlStr ; URL infoUrlnew URL ) { URLConnection connection infoUrl.openConnection ) (; ) (newsData ; news.setoid HttpURLConnection httpConnection(HttpURLConnection) } ( ( ) else if tagName.equals Econtent )connection; { (; int responseCode httpConnection.getResponseCode ) ( ) news.setcontent temp ; ( if responseCode HttpURLConnection.HTTP_OK) } ( ( ) else if tagName.equals Enews ) { { (; inStream httpConnection.getInputStream ) ) (news ; newstable.add } startEntryElementFlagfalse; } } ( ( ) else if tagName.equals Ephoto ) ... { return inStream; ( ) news.setphoto newsData ; } }4.4 自定义实体容器类News (0 ; newsDataBuilder.setLength ) } 该类是按照服务器端XML文件结构设计的,主 }要是用于存放系统 通 过 XMLContentHandler 类 解 析XML文件所得的数据。
该类包括5组set和get方法分别 4.6 系统主程序newsapp类对应新闻的标题、内容、本地id、服务器id、图片名称 该类为系统的主程序, 继承于ListActivity类。
它等5个XML类的读写。
其中listshow.xml 的界面由main.xml和listshow.xml定义,4.5 XML文件解析类XMLContentHandler 中 定 义 了 list 的 列 表 结 构 。
系 统 在 该 类 通 过 option 该类是基于SAX技术的XML文件解析类。
它继 Menu实现了与各功能模块的链接, 通过list来进行新闻承于DefaultHandler类。
该类首先通过startDocument方 标题的列表显示。
法来识别XML文件的开始,并建立一个arraylist用于 ) (1 重写onCreateOptionsMenu和onOptionsItemSelected方保存解析出的一组新闻。
然后通过startElement方法实 法。
例 化 一 个 News 容 器 类 来 存 方 一 条 新 闻 。
再 通 过 这两个方法都是
Android定义的Menu按钮的相关Characters方法来取返回的字节,并通过endElement方 方法。
一个是创建菜单按钮,一个是响应菜单选择。
系法来识别这些字节所属的类型并写News容器中。
最 统通过这两个方法定义了4个功能菜单,分别是: 更后由getnewstable方法返回arraylist。
其中endElement方 新、删除数据,系统设定,查看新闻,另外还有退出系法是在SAX处理完一个XML元素时触发。
重写后将在 统。
其中系统设定是通过跳转到sysset的Activity中来该方法中对当前处理的XML标签进行判断,并按标签 实现。
另外3个功能在onOptionsItemSelected方法中实调用News类对.