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