孫華林(常州機(jī)電職業(yè)技術(shù)學(xué)院信息工程系,常州 213164)
?
Android移動(dòng)客戶端新聞采集器的設(shè)計(jì)與實(shí)現(xiàn)
孫華林
(常州機(jī)電職業(yè)技術(shù)學(xué)院信息工程系,常州213164)
摘要:
關(guān)鍵詞:
Android;JSON;手機(jī)模擬器;新聞采集器
近幾年,隨著移動(dòng)通信技術(shù)的快速發(fā)展和Web應(yīng)用技術(shù)的不斷更新,移動(dòng)互聯(lián)網(wǎng)已成為移動(dòng)網(wǎng)發(fā)展的主流。移動(dòng)終端設(shè)備硬件性能大幅度提高,手機(jī)操作系統(tǒng)日益智能化以及通信網(wǎng)絡(luò)基礎(chǔ)設(shè)施的建設(shè)日益成熟,基于移動(dòng)互聯(lián)網(wǎng)的業(yè)務(wù)層出不窮,日益繁榮。移動(dòng)互聯(lián)網(wǎng)使人們可以隨時(shí)隨地、方便快捷地通過(guò)移動(dòng)終端設(shè)備連入網(wǎng)絡(luò),獲取需要的信息,如各種新聞、圖片、音頻、視頻、辦公文檔等,同時(shí)借助移動(dòng)終端設(shè)備強(qiáng)大的功能,來(lái)處理各種事情。安裝在移動(dòng)終端(如Android手機(jī))的App應(yīng)用(如新聞客戶端App)也非常重視用戶的體驗(yàn),但移動(dòng)終端產(chǎn)品的繁雜(主要是屏幕尺寸方面)使得軟件開(kāi)發(fā)人員要開(kāi)發(fā)出用戶高體驗(yàn)效果的APP軟件越來(lái)越不容易。同時(shí),傳統(tǒng)的新聞采集管理(手工編輯新聞信息)也越來(lái)越不適應(yīng)新的發(fā)展趨勢(shì)。這就要求能開(kāi)發(fā)出“智能”移動(dòng)客戶端新聞采集器,可以針對(duì)Android手機(jī)屏幕大小在PC端實(shí)現(xiàn)手機(jī)模擬器,可以讓用戶針對(duì)不同屏幕大小進(jìn)行選擇開(kāi)發(fā),更好地提高用戶體驗(yàn);同時(shí)實(shí)現(xiàn)網(wǎng)頁(yè)新聞動(dòng)態(tài)采集功能,用鼠標(biāo)抓起某網(wǎng)站的新聞鏈接并拖拽到模擬器中,就可以實(shí)現(xiàn)新聞編輯,允許自定義新聞頁(yè)面的配置,提高新聞編輯效率。
1.1Android平臺(tái)架構(gòu)及組件
Android是由Google(谷歌)公司和手機(jī)開(kāi)放聯(lián)盟(Open Handset Alliance)主導(dǎo)開(kāi)發(fā)的一種基于Linux的操作系統(tǒng),憑借其開(kāi)源性和良好的可移植性,比其他手機(jī)開(kāi)發(fā)平臺(tái)如iOS、PalmOS、Symbian等更具有優(yōu)勢(shì)和競(jìng)爭(zhēng)力。Android操作系統(tǒng)的OS架構(gòu)采用“低耦合”的分層架構(gòu),從高到低分為四層,分別是應(yīng)用程序?qū)印?yīng)用框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux核心層:其中應(yīng)用程序由運(yùn)行在Dalvik虛擬機(jī)平臺(tái)上的各種Application應(yīng)用程序構(gòu)成;應(yīng)用框架層主要由View、活動(dòng)管理器、通訊管理器等組件組成,這些組件可以由程序員直接調(diào)用自由及開(kāi)放源代碼的優(yōu)勢(shì);內(nèi)核層包括Driver驅(qū)動(dòng)、進(jìn)程(Process)管理、內(nèi)存(Memory)管理、網(wǎng)絡(luò)協(xié)議棧等組件,這一層的核心系統(tǒng)服務(wù)包括安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)路協(xié)議以及驅(qū)動(dòng)模型等,它們都依賴于Linux內(nèi)核。
1.2JSON技術(shù)
JSON(JavaScript對(duì)象表示法)是采用JavaScript (Standard ECMA-262 3rd Edition - December 1999)語(yǔ)法來(lái)描述數(shù)據(jù)對(duì)象的一種輕量級(jí)的數(shù)據(jù)交換格式,其具體表現(xiàn)形式有四種:(1)對(duì)象是一個(gè)無(wú)序的“‘鍵/值’對(duì)”集合;(2)數(shù)組是有序的值(value)的集合;(3)值(value):值(value)可以是字符型(string)、數(shù)值型(number)、邏輯性(true|false)、null、對(duì)象(object)或者數(shù)組(array)等數(shù)據(jù)類型,必須用雙引號(hào)括起來(lái),這些結(jié)構(gòu)可以嵌套;(4)字符串(string):是指一個(gè)由“任意個(gè)數(shù)量”的字符構(gòu)成的、且使用雙引號(hào)括起來(lái)的集合(Collection),使用引號(hào)括起來(lái)的任何一個(gè)字符(Character)都可以構(gòu)成一個(gè)單獨(dú)的字符串(Character String),這里的字符串和C語(yǔ)言、C++語(yǔ)言、C#語(yǔ)言或者Java語(yǔ)言重點(diǎn)的字符串類似。類似于XML,JSON是一種具有“自我描述性”、可以使用JavaScript進(jìn)行解析、支持AJAX進(jìn)行數(shù)據(jù)傳輸?shù)募兾谋?,容易閱讀和編寫(xiě),這些特點(diǎn)使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。
2.1技術(shù)方案選擇
(1)服務(wù)器端:基于JavaEE5.0平臺(tái),采用MyE-clipse8.0作為開(kāi)發(fā)環(huán)境、MySQL5.1作為數(shù)據(jù)庫(kù)服務(wù)器、Tomcat6.0應(yīng)用作為服務(wù)器,實(shí)現(xiàn)新聞采集器。
(2)移動(dòng)客戶端:基于Android4.2平臺(tái),采用E-clipse+ADT開(kāi)發(fā)環(huán)境。移動(dòng)手機(jī)客戶端請(qǐng)求PC端的Servlet中的通過(guò)JSON格式化過(guò)的數(shù)據(jù),構(gòu)建出手機(jī)客戶端新聞App應(yīng)用。
2.2包結(jié)構(gòu)設(shè)計(jì)
本系統(tǒng)包含7個(gè)實(shí)體類,7個(gè)數(shù)據(jù)訪問(wèn)接口、7個(gè)具體接口實(shí)現(xiàn)類、4個(gè)servlet及一些工具類和JSON數(shù)據(jù)化格式類。
(1)7個(gè)實(shí)體類:Bottom、Category、Content、News、Styel、Title、UserInfo。
(2)7個(gè)數(shù)據(jù)訪問(wèn)接口:BottomDao、CategoryDao、ContentDao、NewsDao、StyleDao、titleDao、UserDao。
(3)7個(gè)具體接口實(shí)現(xiàn)類:BottomDaoImpl、CategoryDaoImpl、ContentDaoImpl、NewsDaoImpl、StyleDaoImpl、TitleDaoImpl、UserDaoImpl。
(4)4個(gè)Servlet:GetNewsByTimeServlet、GetSpecifyCategoryNewsServlet、GetStyleCategoriesServle、Get-NewsServlet。
(5)數(shù)據(jù)格式化類:JSONObject、JSONArray、JSONString、JSON工具類。
它們之間的關(guān)系如下圖1所示:
圖1 包結(jié)構(gòu)及關(guān)系圖
2.3服務(wù)器端功能模塊設(shè)計(jì)
服務(wù)器端功能模塊包括新聞欄目管理、新聞采集器、模擬器尺寸設(shè)置、Android客戶端App配置和用戶登錄等五個(gè)模塊。
(1)模擬器尺寸設(shè)置主要實(shí)現(xiàn)模擬器屏幕尺寸的修改與設(shè)置操作,主要包括獲取模擬器尺寸信息及修改模擬器尺寸等方法。
(2)Android客戶端App配置模塊主要實(shí)現(xiàn)對(duì)Android客戶端顯示的文字、顏色、背景、新聞數(shù)量等進(jìn)行配置,主要包括:①對(duì)文字的修改和顏色的切換;②為中間頁(yè)面?zhèn)鬟fTitle實(shí)體,修改標(biāo)題區(qū)域;③為中間頁(yè)面?zhèn)鬟fContent實(shí)體,修改正文區(qū)域;④為中間頁(yè)面?zhèn)鬟fBottom實(shí)體,修改底部區(qū)域。
新聞采集器主要實(shí)現(xiàn)對(duì)新聞基本信息進(jìn)行維護(hù),包括對(duì)新聞基本信息的添加,刪除,修改,其中新聞添加有手動(dòng)添加和拖拽鏈接添加2種方式,類圖及序列圖如圖2所示。
2.4Android客戶端功能模塊設(shè)計(jì)
Android客戶端App應(yīng)用包含四個(gè)功能模塊,即:(1)取實(shí)時(shí)新聞、(2)獲取執(zhí)行欄目及新聞、(3)Android客戶端界面設(shè)置、(4)獲取新聞詳情。這四個(gè)部分功能都需要和服務(wù)器端進(jìn)行通信,并傳遞JSON對(duì)象,需要使用JSON解析相關(guān)信息并將解析后的內(nèi)容放入View中,以方便在客戶端APP中調(diào)用。具體流程如下圖4所示:
圖2 新聞采集器類圖
圖3 新聞采集器序列圖
圖4 Android客戶端調(diào)用流程
下面以獲取指定欄目及新聞為例子,具體步驟如下:
(1)編寫(xiě)方法調(diào)用接口獲取新聞信息;
(2)解析新聞信息;
(3)將解析后的新聞信息顯示到View當(dāng)中,url為:http://127.0.1.1:8080/NewsProj/getSpecifyCategoryNe-ws?startnid=0&count=10&cid=1;
(4)模擬器中調(diào)用,url為:http://10.0.2.2:8080/News Proj/ getSpecifyCategoryNews?startnid =0&count = 10&cid=1,其中10.0.2.2為IP地址,真實(shí)手機(jī)以服務(wù)器IP地址為準(zhǔn)。
(5)參數(shù)說(shuō)明:①startnid:分頁(yè)使用起始位置;②count:返回?cái)?shù)目;③cid:新聞欄目。
3.1新聞采集器的實(shí)現(xiàn)
新聞采集器主要由Android模擬器(模擬中心)、配置中心及新聞采集器、新聞管理中心等組成。Android模擬中心主要在PC端實(shí)現(xiàn)Android手機(jī)模擬器效果,可以設(shè)置模擬器尺寸大小并預(yù)覽(主要通過(guò)輸入寬度、高度等數(shù)據(jù)后系統(tǒng)可以自動(dòng)進(jìn)行模擬器尺寸的計(jì)算)、Android模擬器的實(shí)現(xiàn)可以提供用戶對(duì)欄目的添加、修改,新聞的添加、修改,提升用戶體驗(yàn)效果。新聞中心主要實(shí)現(xiàn)新聞的動(dòng)態(tài)采集功能,即手動(dòng)拖拽頁(yè)面地址就可以將頁(yè)面中的新聞添加進(jìn)來(lái),實(shí)現(xiàn)方式即是將頁(yè)面地址拖拽到指定區(qū)域即可,頁(yè)面如下圖5所示:
圖5 新聞動(dòng)態(tài)采集
左邊的圖顯示的是將一個(gè)頁(yè)面地址拖拽到指定區(qū)域“松開(kāi)鼠標(biāo)預(yù)覽新聞”,然后將鼠標(biāo)左鍵松開(kāi),此時(shí)Android模擬器將可以自動(dòng)解析拖拽過(guò)來(lái)的頁(yè)面內(nèi)容,并將成功解析的內(nèi)容填入自動(dòng)跳轉(zhuǎn)到的頁(yè)面(右圖)中。需要注意的是,如果在右邊頁(yè)面中顯示的內(nèi)容出現(xiàn)亂碼,則可以更改左邊頁(yè)面中的編碼方式后再拖拽地址。
3.2Android客戶端App的實(shí)現(xiàn)
Android客戶端App即“N新聞”可以實(shí)現(xiàn)數(shù)據(jù)與PC端數(shù)據(jù)同步配置、同步更新,方便用戶使用手機(jī)移動(dòng)終端實(shí)時(shí)查看最新新聞焦點(diǎn)。Activity部分代碼如下所示:
public void onCreate(Bundle savedInstanceState)
{
……
setContentView(R.layout.home_activity);
//設(shè)置頁(yè)面樣式
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);
//顯示進(jìn)度條
mLoadnewsProgress.setVisibility(View.VISIBLE);
}
}
……
protected void onPostExecute(Integer result)
{
//根據(jù)返回值顯示相關(guān)的Toast
if(result==ERROR)
Toast.makeText(HomeActivity.this,R.string.load_news_failure,Toast.LENGTH_LONG).show();
mNewsListAdapter.notifyDataSetChanged();
//顯示刷新按鈕
mTitlebarRefresh.setVisibility(View.VISIBLE);
//隱藏進(jìn)度條
mLoadnewsProgress.setVisibility(View.GONE);
}
}
}
……
本文基于Android、J2EE平臺(tái)及JSON技術(shù)在PC端實(shí)現(xiàn)了一個(gè)“手機(jī)模擬器”,通過(guò)對(duì)手機(jī)模擬器的尺寸、字體、顏色等參數(shù)的設(shè)置,可以定制出相同樣式的客戶端App界面,具有對(duì)任何一個(gè)Web頁(yè)面中的新聞內(nèi)容進(jìn)行動(dòng)態(tài)抓取的功能,即新聞采集人員只要用鼠標(biāo)選中頁(yè)面地址并按住鼠標(biāo)左鍵拖拽到新聞采集器的指定區(qū)域,系統(tǒng)將自動(dòng)解析并提取頁(yè)面中關(guān)于新聞的標(biāo)題、內(nèi)容、發(fā)布時(shí)間等要素并顯示,整個(gè)過(guò)程交互性強(qiáng)、操作簡(jiǎn)單、方便;同時(shí)完成了Android客戶端App,用戶體驗(yàn)感較好。
參考文獻(xiàn):
[1]林立,鄒昌偉.基于Android平臺(tái)的云計(jì)算研究[J].軟件導(dǎo)刊,2010,9(11):137-139.
[2]王藝璇.基于Android平臺(tái)的移動(dòng)圖書(shū)館客戶端設(shè)計(jì)與實(shí)現(xiàn)[J].智能計(jì)算機(jī)與應(yīng)用,2011,1(4):28-30
[3]劉昌平,范明鈺,王光衛(wèi)等.Android手機(jī)的輕量級(jí)訪問(wèn)控制[J].計(jì)算機(jī)應(yīng)用研究,2011.3.
[4]李慧等.基于物聯(lián)網(wǎng)Android平臺(tái)的水產(chǎn)養(yǎng)殖遠(yuǎn)程監(jiān)控系統(tǒng).農(nóng)業(yè)工程學(xué)報(bào),2013.7
[5]龔成瑩等.基于JSON的Android移動(dòng)終端與PHP及MySQL數(shù)據(jù)通信.工業(yè)儀表與自動(dòng)化裝置,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平臺(tái)架構(gòu)及JSON技術(shù)等相關(guān)概念,從技術(shù)方案選擇、包結(jié)構(gòu)設(shè)計(jì)、服務(wù)器端及移動(dòng)客戶端功能模塊設(shè)計(jì)等方面詳細(xì)闡述新聞采集器的設(shè)計(jì),給出新聞采集器和Android客戶端App的具體實(shí)現(xiàn)。
文章編號(hào):1007-1423(2016)15-0073-05
DOI:10.3969/j.issn.1007-1423.2016.15.018
作者簡(jiǎn)介:
孫華林(1977-),男,江蘇徐州人,講師,研究方向?yàn)橐苿?dòng)互聯(lián)應(yīng)用、軟件組件技術(shù)、圖像處理
收稿日期:2016-03-25修稿日期:2016-05-15