基于Android系統(tǒng)個人瀏覽器設(shè)計_第1頁
基于Android系統(tǒng)個人瀏覽器設(shè)計_第2頁
基于Android系統(tǒng)個人瀏覽器設(shè)計_第3頁
基于Android系統(tǒng)個人瀏覽器設(shè)計_第4頁
基于Android系統(tǒng)個人瀏覽器設(shè)計_第5頁
已閱讀5頁,還剩58頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

WiththepopularityofmobileInternetandsmartphones,theapplicationsofsmartphonehavebeengreatlydeveloped.AsanimportantwaytoconnecttotheInternet,thesmartphonebrowserisacommontoolforpeopletobrowseinformation.So,onthebasisabove,thistopicwilldesigna albrowserbasedontheAndroidplatform.ThisthesisgoesrespectivelyfromtheAndroidclientendandserverend,andfocusesonthedesignandimplementationofamobilewebbrowserwhichputsmanyfunctionstogether,suchasgettingweathermessage,browsingnews,filestorageonnetwork,downloadingfromnetwork,browsingbymultiwindows,andsoon.Thisthesisfirstlyintroducesthebackgroundandsignificanceofthistopic,andexpoundsthedevelopmentstatusofStruts2frameworkandWebViewathomeandabroad,thetaskandthinkingofthisthesis,andthechapterarrangementofthethesis.Secondly,throughthedetailedysisofthefunctionalrequirementsof albrowser,theoverallstructureofthesystemisplanned,andtwomodulesbasedonAndroidandserveraredesignedanddivided.Thirdly,thespecifcdetailsoftheimplementationofthesubmodulesofthetwomodulesaredescribed.Amongthem,intheAndroidmodule,Fragmentwiththedynamiclayoutisusedtoimplementthemulti-windowswhichcanaddandchangeandstorewebpages.Fortheprocessofacquiringthebasicnetworkdata,includingweatherinformation,news,and almessage,theHandlerandanextrathreadindependentofthemainUIthreadareused.Aftergettingthosemessages,stringparsingmodeofJsonisused.Finally,combiningwiththedemand,thefunctionaltestsofthewholesystemarecarriedout.Theoperatingresultsofthefinalsystemareshowed.:Browser;Android;Multi-windows;WebView;Struts2;Json;摘 第1章緒 課題背景與意 關(guān)于Struts2框架的國內(nèi)外現(xiàn) 所做工作及思 章節(jié)安 第2章個人瀏覽器需求分析與總體設(shè) 個人瀏覽器功能需求分 系統(tǒng)的模塊劃分與總體功能結(jié) 模塊劃 系統(tǒng)的總體功能結(jié) 個人瀏覽器Android端模塊設(shè) 個人瀏覽器服務(wù)器端模塊設(shè) 數(shù)據(jù)庫設(shè) Android端數(shù)據(jù)庫設(shè) 服務(wù)器端數(shù)據(jù)庫設(shè) 本章小 第3章個人瀏覽器Android端各模塊實 開發(fā)平臺與環(huán) 天氣信息模塊實 功能描 實現(xiàn)流 實現(xiàn)過 信息模塊實 功能描 實現(xiàn)過 數(shù)據(jù)庫模塊實 瀏覽器網(wǎng)頁瀏覽模塊實 概 實現(xiàn)過 實現(xiàn)難 瀏覽器書簽和歷史記錄模塊實 功能描 流程設(shè) 實現(xiàn)過 瀏覽器個人設(shè)置模塊和壁紙模塊實 功能描 界面設(shè) 實現(xiàn)過 瀏覽器模塊實 概 實現(xiàn)過 瀏覽器與服務(wù)器數(shù)據(jù)交互模塊實 功能描 實現(xiàn)過 交互數(shù)據(jù)分析與處 瀏覽器網(wǎng)絡(luò)文件模塊實 概 實現(xiàn)過 本章小 第4章個人瀏覽器服務(wù)器端各模塊實 服務(wù)器開發(fā)平臺與搭 服務(wù)器數(shù)據(jù)庫模塊實 客戶端文件和上傳模塊實 功能描 實現(xiàn)過 客戶端基本信息獲取模塊實 功能描 實現(xiàn)過 數(shù)據(jù)交互格式分 客戶端基本信息修改模塊實 本章小 第5章個人瀏覽器運試與結(jié) 個人瀏覽器Android端測試用例與天氣模塊測 信息模塊測 瀏覽器網(wǎng)頁瀏覽模塊測 瀏覽器設(shè)置和壁紙模塊測 網(wǎng)絡(luò)文件模塊測 瀏覽器與服務(wù)器模塊數(shù)據(jù)交互模塊測 瀏覽器模塊測 瀏覽器書簽和歷史模塊測 個人瀏覽器服務(wù)器端測試用例與客戶端文件和上傳模塊測 客戶端基本信息獲取模塊和基本信息修改模塊測 個人瀏覽器整體運行結(jié) 瀏覽器網(wǎng)頁瀏覽模塊運行效 天氣模塊運行效 模塊運行效 瀏覽器書簽和歷史記錄模塊運行效 瀏覽器模塊運行效 瀏覽器壁紙設(shè)置模塊和個人設(shè)置模塊相 瀏覽器網(wǎng)絡(luò)文件模塊運行結(jié) 瀏覽器與服務(wù)器數(shù)據(jù)交互界 本章小 結(jié) 致 參考文 WebView的一個軟件。而單純從智能瀏覽器而言,目前比較常見的就包括蘋果公司的Safari,UC瀏覽器,QQ瀏覽器,獵豹瀏覽器等等。但是很少有公司是從頭至尾地開器和第瀏覽器廠商[5]。瀏覽器與傳統(tǒng)的PC瀏覽器相比,具有不同的感知以及不同的使用場景[6]。相應(yīng)的,本課題的個人瀏覽器的設(shè)計與實現(xiàn),是基于AndroidWebKit[7]是一個開源的瀏覽器引擎,與GeckoTrident等相對應(yīng)。自從200892WebKit引擎,WebKit以其穩(wěn)定高效,良好的兼容性,清晰的源碼結(jié)構(gòu),易于等優(yōu)點,相繼吸引了Safari、Chrome、傲游3、獵豹瀏覽器、瀏覽器、Opera瀏覽器等的使用。但是在2013年4月,Opera宣布放棄它的推出極大地削弱了WebKit在瀏覽器市場的。在WebKit之后,WebKit2在201048日發(fā)布了。WebKit2WebKitAPI,和網(wǎng)絡(luò)的強大組合,它同時繼承了兩個方面的優(yōu)點。簡單說來,它是將一個Web開發(fā)應(yīng)用程序裝載在一個本地的容器里進行開發(fā)。而這種開發(fā)方式則需要有一個移動的Web應(yīng)用,但是同時它也通過重新設(shè)計新的本地代碼來彌補它的局限性[8]。關(guān)于Struts2框架的國內(nèi)外現(xiàn)Struts[9]SPSrvltl類Struts使的自身認控器,并且在模型層的實現(xiàn)過與相關(guān)的數(shù)據(jù)技術(shù)相結(jié)合[10]在Sruts內(nèi)部,提供自定義的標(biāo)記庫,通過使用這些自定義的標(biāo)記與系統(tǒng)中模型層中的模型實現(xiàn)交SPtionForm的有效映射,完成用戶對數(shù)據(jù)的完整封裝[1。試方面出發(fā),Struts1ServletAPI嚴重耦合,導(dǎo)致基于其設(shè)計的應(yīng)用難以進Struts1Struts1API[15],所以被歸類于侵入性框架[16]。Struts2,顧Struts的第二代Struts1WebWork[17]的技術(shù)基礎(chǔ)上合并的全新的Struts2框架[18]。目前,Struts已經(jīng)分化成了兩個框架,其中一個就是在傳統(tǒng)Struts1的基礎(chǔ)上,融合了優(yōu)WebWebWork而構(gòu)成的Struts2。Struts2雖然是在Struts1的基礎(chǔ)上構(gòu)建和發(fā)展起來的,但是其實質(zhì)卻是將WebWork框架作為。從此,Struts2Strut1WebWork框架的理念,很好得統(tǒng)一1.3所做工作及思的整體設(shè)計、Android端和服務(wù)器端各模塊實現(xiàn)、整體測試等幾個步驟進行論述。Android端模塊實現(xiàn)即是具體描述其中的各個模塊的實現(xiàn)方法,而的實現(xiàn)過程。在接口實現(xiàn)過,將先進行數(shù)據(jù)庫和數(shù)據(jù)庫操作方法的設(shè)計,再逐步發(fā),所以完成接口和配置的連接將成為一項不小的。塊兩部分進試。而在測試中,遇到的最大的問題往往是測試不夠全面,系統(tǒng)內(nèi)部依舊存在著某些未知的錯誤,而且在測試過,只能使用白盒測試方法。所以,測1.4章節(jié)安5第1章為緒論,介紹課題背景意義以及的總體概要第2章為個人瀏覽器的功能需求以及其整體設(shè)計,簡單介紹各個模塊的功能。22-1功能類別功能名稱描基本信息顯天氣信息顯顯示天氣信信息顯顯示信城市選選擇具體的城市,用于顯示具體的城市的天氣信瀏覽網(wǎng)網(wǎng)頁瀏根據(jù),瀏覽指定的網(wǎng)書簽添添加指定為書書簽瀏瀏覽書簽列歷史記錄瀏瀏覽歷史記關(guān)鍵字搜搜索欄搜索關(guān)鍵字,點擊搜索按鈕后,顯示具體頁網(wǎng)指定給他基本設(shè)文字大小設(shè)設(shè)置并改變?yōu)g覽的網(wǎng)頁的字體大搜索引擎設(shè)設(shè)置瀏覽器搜索框的搜索引無痕模式設(shè)設(shè)置瀏覽器的無痕模式,無痕模式開啟時,不將瀏覽網(wǎng)頁歷史記壁紙設(shè)設(shè)置瀏覽器壁緩存數(shù)據(jù)清清除在網(wǎng)頁瀏覽過的各種緩存數(shù)恢復(fù)默認設(shè)還原瀏覽器的設(shè)置為默認設(shè)網(wǎng)絡(luò)數(shù)據(jù)交登登陸個人賬用戶從服務(wù)器賬賬號基本信息修連接服務(wù)器,修改賬戶的基本信賬號信息修連接服務(wù)器,修改賬戶的網(wǎng)絡(luò)文瀏覽網(wǎng)頁時,網(wǎng)頁上的文服務(wù)器文賬號登陸后,服務(wù)器中的文上傳服務(wù)器文賬號登陸后,上傳本地文件到服務(wù)2-1功能性需求分類表(續(xù)表功能類別功能名稱描網(wǎng)絡(luò)數(shù)據(jù)交服務(wù)器書簽簽本地書簽上賬號登陸后,上傳本地到服務(wù)器模塊劃城市的選擇和確定、的獲取和顯示、網(wǎng)頁的基本瀏覽、主頁的綜合、瀏覽器個性化設(shè)置、壁紙設(shè)置、網(wǎng)頁書簽和顯示、網(wǎng)頁瀏覽歷史記錄顯示、瀏覽器、瀏覽器網(wǎng)絡(luò)文件、瀏覽器個人賬戶登錄、瀏覽器與服務(wù)器數(shù)據(jù)基本數(shù)據(jù)交2Android模塊和服務(wù)器模塊。其中,Android模塊又可分為以下子模塊,分別有天氣信息模塊、信息覽器網(wǎng)絡(luò)文件模塊等。服務(wù)器模塊,可分為以下子模塊,分別有服務(wù)器數(shù)據(jù)模塊、系統(tǒng)的總體功能2-1個人瀏覽器Android在首頁中僅僅顯示有限條數(shù)的的標(biāo)題,以此供用戶點擊從而閱讀的詳細信息。在首頁的基礎(chǔ)上,加的項用戶點擊后則會開啟另界面,加多列表。在軟件設(shè)計過,數(shù)據(jù)的至關(guān)重要。在使用文件的同時,也必須使用Android自帶的[19]數(shù)據(jù)庫。在該軟件中,書簽的、歷史記錄的和文件時文件狀態(tài)的均要使用數(shù)據(jù)庫來實現(xiàn)。瀏覽器網(wǎng)頁瀏覽該模塊為設(shè)計中的模塊,其余所有模塊均是為其服務(wù)。該模塊使用2種界面天氣信息查詢、信息等諸多小功能;而基礎(chǔ)頁功能,則是加載用戶需要獲得的網(wǎng)瀏覽器書簽?zāi)g覽器歷史記錄瀏覽器個人設(shè)置瀏覽器壁紙設(shè)置瀏覽器模瀏覽器與服務(wù)器數(shù)據(jù)交互模瀏覽器網(wǎng)絡(luò)文件模過該模塊可控制文件的和暫停等諸多功能相對于Android客戶端,服務(wù)器也部署了基于MySql的數(shù)據(jù)庫[20],用于基該模塊相對于Android客戶端的本地文件上能和服務(wù)器文件功能,用戶務(wù)器具體的獲取所需要的基本文字信息,從而實現(xiàn)各種文字信息的獲取和顯示Android端數(shù)據(jù)庫設(shè)在該軟件的Android客戶端中,使用數(shù)據(jù)庫的有書簽的、歷史記錄的存儲以及文件時狀態(tài)的,對應(yīng)于Android模塊設(shè)計,整個軟件中需要建立3個表,具體設(shè)計如表2-2、表2-3、表2-4所示。2-2字段字段意義字段類型備書簽記錄編主鍵,并設(shè)定為自增書簽代表的無該條記錄無書簽代表的url字段對應(yīng)的網(wǎng)頁的標(biāo)2-3字段字段意義字段類型備歷史記錄編主鍵,并設(shè)定為自增歷史記錄代表的無該條記錄無歷史記錄代表的url字段對應(yīng)的網(wǎng)頁的標(biāo)表2-4文件信息字段字段意義字段類型備記錄編建開啟的的線程的無需要的文件的當(dāng)前開始位無需要的文件的當(dāng)前結(jié)束位無文件時已的部分文件的小無需要的文件對應(yīng)的無23史表中,同時,對之前就存在于據(jù)中的,系統(tǒng)內(nèi)部將通比對時間新具體的網(wǎng)頁信息。特定的網(wǎng)頁添書簽時當(dāng)用戶確定添加時系統(tǒng)會將該具體信息添加到表22書簽表中。表24為了記錄在網(wǎng)絡(luò)文件過的文件進度狀態(tài),過,通過多次新該表現(xiàn)文件過暫停、開始、度服務(wù)器端數(shù)據(jù)庫2-5字段字段意義字段類型備用戶賬主用戶無字段字段意義字段類型備用戶稱默認 用戶2-6字段字段意義字段類型備書簽編主鍵,設(shè)置為自增自該書簽所屬用無書簽名無書簽無體為,循序漸進。在軟件設(shè)計過,主要包括Android端各種功能模塊和界面設(shè)計、服務(wù)器端多過可以保證思路的清晰,保證軟件內(nèi)部結(jié)構(gòu)良好的藕合性。3章個人瀏覽器AndroidEclipseAndroidADT啟動Eclipse,點擊Help>InstallNewSoftware…,打開安裝界面后,點擊Add按鈕,系統(tǒng)彈出AddRepository窗口,在Name欄中輸入“ADT”,在Location輸入 /android/eclipse”,點擊OK。點擊SelectAll按鈕開始安裝點擊按鈕AndroidSDKManagerSDKAndroid4.2.2版本的SDK。Genymotion進入Genymotion官網(wǎng)Genymotion賬號,并Genymotion應(yīng)用文件到本地電腦,點擊安裝。安裝成功后,登陸Genymotion賬號,4.2.2版本的虛擬機。功能描實現(xiàn)流3-1UI未加載之前,首先需要通過新建線程的方法,從網(wǎng)絡(luò)中獲得具體的天氣信息,獲得后,再去刷新UI實現(xiàn)過點擊。當(dāng)用戶點擊時,將獲取更加詳盡的天氣信息并顯示于另外的Activity中。FragmentFragment加載對應(yīng)的layoutHandlerMessageMessagemessage,發(fā)送具Handler主程序,開啟線程進行獲取網(wǎng)絡(luò)數(shù)據(jù)操作。在網(wǎng)絡(luò)數(shù)據(jù)獲取過程中,首先獲取系統(tǒng)內(nèi)的輕量級類SharedPreferences中的code_city字段的code_city變量,即各個城市對應(yīng)的編號,其中默認為(,接著根據(jù)編號構(gòu)造指UrlUrlJson的格式返回并且解析,Weather中,因為考慮到之后需要獲取多日的天氣數(shù)據(jù),所以與此同時也通過同樣的方法獲取數(shù)據(jù),其數(shù)據(jù)返回并在自定義變MyDateWeatherMyDate類型的變量均為靜態(tài)私有變量,所以在對應(yīng)的Fragment中,均可得到使用。綁定天氣信息部分的4個控件,其中有1個ImageView和3個TextView。ImageView根據(jù)自定義變量MyDate中的weather1屬性判斷當(dāng)前天氣情況,并且填充以相應(yīng)的天 新建一個Activity顯示具體的天氣信息,其中所有信息均來源于天氣信息獲取到的MyDate變量中的數(shù)據(jù)。該Activity通過解析MyDate中的各種數(shù)據(jù),綁定多個ImageView和TextView用于顯示和文字。同時,為了更好地反應(yīng)天氣的變化,在city.json填充布局,接著重寫手勢事件,通過手勢來控制城市的變動,并且為了達到類似于輪轉(zhuǎn)的效果,在每次改變城市后,系統(tǒng)都將改變文字的。當(dāng)用戶選擇了系統(tǒng)內(nèi)的輕量級類SharedPreferences中的code_city字段的code_city變量中,以新的MyDate,以此加載新的code_city對應(yīng)的天氣情況。功能描該功能能夠方便用戶了解社會,使閱讀變得不再繁瑣實現(xiàn)過Android2.3UI和網(wǎng)絡(luò)連接等一些費時的操作,應(yīng)分開不同的線程編寫,以免發(fā)生UI主線程阻塞,所以在實現(xiàn)過采用了除了天氣信息HanlderAsynk,以下為相應(yīng)發(fā)的代碼:publicpublicclass kGetNewsextends k<Integer,String, 結(jié)構(gòu)體 protected 結(jié)構(gòu)體>newss=獲 return//}}不論是在首頁中顯示還是在界面中顯示,均是使用了列表的方式來顯示,即是用ListView控件顯示。而在使用ListView控件時,因為涉及到和文字等多種類型數(shù)據(jù)的顯示,所以在顯示的過,需要通過自定義構(gòu)造適配器,搭建起ListViewListView所對應(yīng)的適配器中的getViewViewBaseAdapterViewHolder包含各個子View,并且通過BaseAdapter中的getView函數(shù)得到每個View,填充ListView。在Asynk中的數(shù)據(jù)操作中,將獲得數(shù)據(jù)可以通過實例化BaseAdpter適配器賦值,從而實現(xiàn)數(shù)據(jù)和UI的真正結(jié)合。在上述適配器中,因為涉及到的詳//初始化intent,連接需要條狀的//}的信息界面,其根本為一WebView,該界面對應(yīng)的Activity在初始化時,通過getIntent().getStringExtra("url")的方法,獲得上層列表中發(fā)送的url數(shù)據(jù),然后該WebView加載該url數(shù)據(jù),從而達到瀏覽具體信息的目的。方法也由Android平臺自動提供。首先建立數(shù)據(jù)庫操作類Helper,擴展自O(shè)penHelper類,并且通過其默認方法onCreate,創(chuàng)建各種表,通過onUpgrade//獲得數(shù)據(jù)庫句Databasedb=//數(shù)據(jù)庫查詢語myCursor_one//獲得數(shù)據(jù)庫句Databasedb=//數(shù)據(jù)庫查詢語myCursor_one=dbrawQuery(需要查詢的數(shù)據(jù)庫語句//數(shù)據(jù)庫增刪改語db.execSQL(需要操作數(shù)據(jù)庫的語句概該模塊的主要功能是為了讓用戶瀏覽網(wǎng)頁。在該模塊中分別設(shè)計有主頁和基礎(chǔ)其主,嵌天模模塊時使用ndroid中種控提各種接口,供用點擊?;A(chǔ)頁只有個功能,就是加載指的顯示幕中。同時,在模塊中添加了多窗口機制,實現(xiàn)多個窗口間切換瀏覽網(wǎng)頁。實現(xiàn)過在首頁中,分別是第一首頁和第二首頁。在設(shè)計中,通過自定義控件 其中第一首頁中鑲嵌了天氣信息模塊和信息模塊,以及一些常用的的快捷方第一首頁中,系統(tǒng)通過實例化Handler和Asynk,分別獲取網(wǎng)絡(luò)數(shù)據(jù),最終將數(shù)據(jù)顯示于UI界面中。同時,在初始化UI界面的過,綁定常用的的快捷首頁中,通過實例化ExpandableListView控件顯示,該控件綁定相應(yīng)的適配器ExpandableListViewAdapter,顯示各類名。同時在其點擊事件中,綁定各類名和其對應(yīng)的,當(dāng)用戶點擊該名稱時,系統(tǒng)將基礎(chǔ)頁,加載該指定的。基礎(chǔ)頁主要功能是加載指定的,并且實現(xiàn)網(wǎng)頁的后退、前進等操作WebView的CustomWebView控件,通過WebView的loadurl方法用于加載指定的。之后,在基礎(chǔ)頁的初始化過,設(shè)置CustomWebView控件的WebViewClient屬性和WebChromeClient屬性,當(dāng)系統(tǒng)加載完需要加載的后,添加該到數(shù)據(jù)庫模塊中,作為歷史記錄。同時,使用WebView的goBack方法和goForward方法,判中的后退和前進按鈕的可操作性,可操作性通過后退和前進按鈕上加載的背景顏該過,分為多窗口的添加和多窗口的切換。因為需要多次建立相同的基礎(chǔ)頁的Fragment,用以表示各個窗口,所以添加類PhoneWebViewFragment,繼承自基礎(chǔ)頁,即BaseWebViewFragment,而在PhoneWebViewFragmentViewGroup類型。址StartFragmentPhoneWebViewFragment,并且顯示在屏幕,同時在系統(tǒng)內(nèi)部,將該個新建的PhoneWebViewFragment添加到全局靜hashMapfragments中,并且將表示當(dāng)前Fragemnt的全局靜態(tài)變量currentFragment置為該PhoneWebViewFragmenthashMapfragmentsHashMap<Integer,PhoneWebViewFragment>,其作用就是用來之后添加的基礎(chǔ)頁。如果當(dāng)前頁不為首頁,則添加過,先隱藏當(dāng)前的而在添加 部將之前所有PhoneWebViewFragmentStartFragment的當(dāng)前截圖,保存到全局hashMapbitmapHashMap<Integer,Bitmap>,作用就是保存所界面,其內(nèi)部采用ListView顯示,ListViewImageViewButton構(gòu)成,ImageViewhashMapbitmapButton則是為了移除在hashMapbitmap中的截圖,其點擊事件,就是移除所選項對應(yīng)的hashMapbitmap中的值以及其值對應(yīng)的Fragment。實現(xiàn)難FragmentTransactionft=fragmentManager.beginTransaction();,Fragment的過程,在此處通過以下FragmentTransactionft=fragmentManager.beginTransaction();,PhoneWebViewFragmentPhoneWebViewFragment都使用同一個布局,如果此時使用靜態(tài)布局文件顯示布局,將出現(xiàn)錯誤,因為同一個局在同一間只能由一個View使用,所以在PhoneWebViewFragment中,動態(tài)布局和ViewGroup配合使用,使得初始化多個PhoneWebViewFragment時依舊可以正常顯示。在窗口的隱藏中,因為窗口僅僅顯示PhoneWebViewFragment的生命周期不應(yīng)該中斷或者銷毀,所以在隱藏窗口時,采用FragmentTransactionhide和showreplaceFragmentTransaction的replace方法后,F(xiàn)ragment對應(yīng)的生命周期會先銷毀,之后再添Fragment產(chǎn)模式,所以切換過的邏輯難以把握。在系統(tǒng)實現(xiàn)過,通過hashMapfragments這個哈希表的數(shù)據(jù)結(jié)構(gòu)系統(tǒng)新建的各個PhoneWebViewFragment,同時為了記錄當(dāng)前顯示于屏幕的PhoneWebViewFragment,使用currentFragment全局靜態(tài)變量,切換時,時刻更新currentFragment內(nèi)的值。因為切換時需要顯示各個Fragment對應(yīng)的“緩存”,所以在切換時使用各個Fragment對應(yīng)的截圖替代,每次當(dāng)用戶點擊按鈕,系統(tǒng)顯示當(dāng)前切換窗口界面時,系統(tǒng)內(nèi)部將取出hashMapfragments所有內(nèi)容,獲取其當(dāng)前截圖并且存儲于hashMapbitmap,此時就涉及到StartFragment這個特殊的Fragment,其特殊性表現(xiàn)在StartFragment也只有一個在顯示多窗口過如果某一個是StartFragment的界面,則添加到hashMapfragments中的內(nèi)容為null。同理,截圖時,如果驗證得到hashMapfragments中某一項內(nèi)容為null時,則在該項對應(yīng)的hashMapbitmap中添加StartFragment的截圖。當(dāng)用戶點擊以hashMapbitmap為數(shù)據(jù)源的ListView中的項時,系統(tǒng)得到其點擊的Interger值通過該值得到對應(yīng)的PhoneWebViewFragment或者null,如果是null,則通過show方法顯示StartFragment,如果不為null,則調(diào)用show方法顯示PhoneWebViewFragment,并且設(shè)置currentFragment 的值為當(dāng)前功能描流程設(shè)由圖3-2顯示所示,在添加書簽過,需要嚴重數(shù)據(jù)庫中是否存在著相同的書簽,如果存在,則是更新該條書簽,否則就是3-3中,3-23-3實現(xiàn)過當(dāng)WebView加載完某個后,首先驗證當(dāng)前模式是否是無痕模式,如果非無首先驗證此在歷史記錄數(shù)據(jù)表是否存在,若存在,則更新此記錄,修改添加時間,若不存在,則直接添加,如圖3-3所示。類似,書簽的添加也使用此方法,保持書簽在顯示過,歷史記錄和書簽均使用ListView的形式顯示,自定義繼承于BaseAdapter的適配器,使用ListViewsetAdapter方法設(shè)置適配器,而其數(shù)據(jù)源則加了2個TextView和1個Button,其中2個TextView分別顯示和標(biāo)題,至Buttondeletebh刪除在其數(shù)據(jù)系統(tǒng)新建基礎(chǔ)頁PhoneWebViewFragment,加載該ListView中對應(yīng)的,同時設(shè)置全局靜態(tài)變量currentFragment為新建的PhoneWebViewFragment。功能描界面設(shè)TextView顯示當(dāng)前的字關(guān)于等均使用上述列表形式,但是為了顯示當(dāng)前的選擇選項,在每個RelativeLayout加入標(biāo)志性圖標(biāo)表示該選項被選中,內(nèi)部邏輯通過改變所有的RelativeLayout中的該標(biāo)志性的可見性突出表示通過設(shè)置gridview的適配器實現(xiàn)。實現(xiàn)過SharedPreferences.Editor//將字體大小size的 到字段textsizeSharedPreferencesSharedPreferencespreferences=getSharedPreferences("textsize",intsize=preferences.getInt("textsize",2);//Set<Integer>set=ValuehashMapfragmentskeySet();for(Integerinteger:set){WebViewwebView;if(p!={//webview中的文字大小設(shè)置為size在用戶瀏覽 據(jù)有搜索引擎的輸入記錄、網(wǎng)頁中的賬號和、瀏覽歷史記錄、s、緩存等。搜索引擎的輸入記錄在SharedPreferences,刪除過只需將輸入記錄對應(yīng)的字段設(shè)置為空;網(wǎng)頁中的賬號和存在系統(tǒng)自主建立的數(shù)據(jù)庫webview.db中,調(diào)用系統(tǒng)方法deleteDatabase刪除;歷史記錄,則是刪除數(shù)據(jù)庫historyDB;s,通過Manager加以刪除;緩存則是通過刪除文件的方法,先通getCacheDir得到緩概 在界面設(shè)計中,此模塊采用彈出窗口的模式顯示,使用PopupWindow控件實現(xiàn)。界面包括4個圖標(biāo),分別 、、郵箱,表示需要通過何途徑給好友,同時在圖標(biāo)后添加取消按鈕,用于關(guān)閉此PopupWindow如下圖3-4所示是實現(xiàn)的總體流程圖如圖3-4所示,在過,因為首頁表示為空,無法,所以需要先體的實現(xiàn)過當(dāng)用戶點擊菜單中的按鈕時,系統(tǒng)默認在首頁中無法,只有當(dāng)用戶在進入基礎(chǔ)頁才可進行對的。在實現(xiàn)過,分別設(shè)計5個途徑,、微信、、郵件和。//通過AppID初始化wxApi=WXAPIFactory.createWXAPI(Activity,//App 開放平臺SDK實現(xiàn)。首先 臺名為MyBrowser的應(yīng)用,填寫具體的簽名和報名以及相關(guān)圖標(biāo),得到 的//通過AppID初始化wxApi=WXAPIFactory.createWXAPI(Activity,//App // geUrl=WXMediaMessagemsg=new //msg.title=//SendMessageToWX.Reqreq=newSendMessageToWX.Req();req.transaction=String.valueOf(System.currentTimeMillis());req.message=msg;//通過flag設(shè) 途徑,flag=0表 ,flag=1表 :Demo和的郵箱和這3個實現(xiàn)方法不同于和 其均是Android系統(tǒng)中內(nèi)部提供跳轉(zhuǎn)功能,而非借助第實現(xiàn)。以下分別是、郵箱、3個功能實現(xiàn)的代碼:1.到的代////設(shè) 內(nèi)StringsmsBody我正在瀏覽這個,覺得真不錯,推薦給你哦~地址webUrl;UrismsToUri=Uri.parse("smsto:");//sendIntent.putExtra("sms_body",smsBody); =newBody我正在瀏覽這個,覺得真不錯,推薦給你哦~地址//// ,"請選擇郵件發(fā)送內(nèi)容"),板//板clip.setText(“需 的具 的功能描在該模塊中,主要實現(xiàn)云的功能。用戶可以實現(xiàn),登陸等功能,當(dāng)用戶身的文件內(nèi)容,或者刪除,也可上傳本地文件。實現(xiàn)過文件。//設(shè)置默認編HttpPosthttpPostnewHttpPost(HttpClientclient=new////判斷是否連接成returnJson}elsereturn}基本數(shù)據(jù)文字信息的獲取中,采用HandlerMessage實現(xiàn),以下以用//設(shè)置默認編HttpPosthttpPostnewHttpPost(HttpClientclient=new////判斷是否連接成returnJson}elsereturn}SocketsocketnewSocket(服務(wù)器地址,服務(wù)器端口書簽。為了上傳書簽到服務(wù)器,當(dāng)用戶點擊上傳書簽的按鈕時,系統(tǒng)將新建一個bookmark.txt文件,并將所有書簽中的內(nèi)容按照一定格式寫入該文件中,然后上傳該程,設(shè)置上傳文件的各種參數(shù),如文件名稱、屬性、用戶ID等,之后建立SocketsocketnewSocket(服務(wù)器地址,服務(wù)器端口OutputStreamOutputStreamoutStream=OutStream.write(http請求頭//URLurl=new//根據(jù)url連接服務(wù)myconnection=(HttpURLConnection)url.openConnection();//myconnection.setRequestProperty("Range","bytes="+(startPos+compeleteSize)+"-"+endPos);randomAccessFile=newRandomAccessFile(mylocalfile,"rwd");randomAccessFile.seek(startpos+compeletesize); 將 的文件寫到保存在保存路徑下的文件is=myconnection.getInputStream();byte[]buffer=newbyte[4096];文件的使用的是輕量級異步類Asynk機制。在界面顯示上,文件使和一個按鈕Button,當(dāng)不處于狀態(tài)時,ProgressBar和TextView均處于隱藏URLurl=new//根據(jù)url連接服務(wù)myconnection=(HttpURLConnection)url.openConnection();//myconnection.setRequestProperty("Range","bytes="+(startPos+compeleteSize)+"-"+endPos);randomAccessFile=newRandomAccessFile(mylocalfile,"rwd");randomAccessFile.seek(startpos+compeletesize); 將 的文件寫到保存在保存路徑下的文件is=myconnection.getInputStream();byte[]buffer=newbyte[4096];intintlength=-while((length=isread(buffer))!=-{randomAccessFile.write(buffer,0,length);compeletesize+=length;updataInfos(threadId,compeleteSize, 用消息 信息傳給進度條,對進度條進行更}}交互數(shù)據(jù)分析與他數(shù)據(jù)均是使用Json的方式實現(xiàn),所以在系統(tǒng)實現(xiàn)中對各種Json數(shù)據(jù)的解析尤為重//listkeyJSONArrayarray=newJSONObject(json).getJSONArray("list");for(inti=0;i<array.length();i++){//獲得為i位的結(jié)構(gòu)JSONObjectjsonObject=ServerUseruser=newServerUser//listkeyJSONArrayarray=newJSONObject(json).getJSONArray("list");for(inti=0;i<array.length();i++){//獲得為i位的結(jié)構(gòu)JSONObjectjsonObject=ServerUseruser=newServerUser概在該模塊中,使用ListView控件,顯示內(nèi)容,同時在每個ListView中添加下載按鈕,點擊后啟動該項中對應(yīng)的文件的。時,使用控件ProgressBar顯實現(xiàn)過MyWebviewDownlistenermyWebviewDownlistener=new事件MyWebviewDownlistenerDownloadListener,并且重寫接口中的onDownloadStart方法,通過該方法被綁定將需要的文件的添加到全局變量中,待之后用戶啟動界面后。同時MyWebviewDownlistenermyWebviewDownlistener=new事件之處在于構(gòu)造的不同。3.1Android端的開發(fā)過,主要分為數(shù)據(jù)的獲取和數(shù)據(jù)的顯示兩個部分。在上述,取中,通常需要開啟新的線程而非在主線獲取。數(shù)據(jù)的獲取、分析和整理,是體4面則使用MySql數(shù)據(jù)庫。Tomcatv7.0,點擊Finish按鈕該模塊涉及到服務(wù)器中其余的多個模塊,是信息的基本模塊,使用MySql信息。其中需要的信息有,書簽信息和系統(tǒng)用戶信息。//設(shè)置服務(wù)器和Mysql數(shù)據(jù)庫之間連接的驅(qū)動//設(shè)置服務(wù)器和Mysql數(shù)據(jù)庫之間連接的驅(qū)動dbUserConnectioncon=null;PreparedStatementResultSetResultSetStringsql=需要操作數(shù)據(jù)庫的SQLtry}catch(Exceptione)}功能描該模塊用于Android端和服務(wù)器端之間的文件的上傳和。Android端通過連夾中,實現(xiàn)“云”。同時,Android端通過指定文件下的文件,獲實現(xiàn)過<!--用<!--用),<constantname="struts.configuration.xmlreload"<!--解決亂碼<constantname="struts.i18n.encoding"value="UTF-<!- 指定允許上傳的文件最大字節(jié)數(shù)。默認(200M)--<!- 設(shè)置上傳文件的臨時文件夾,默認使用javax.servlet.context.tempdir//獲得客戶端請HttpServletRequest//獲得請求中字段//獲得客戶端請HttpServletRequest//獲得請求中字段id對應(yīng)的參String以下是文件操作的代碼//////byte[]buffer=newbyte[1024];intlen=while((lenfis.read(buffer1){fos.write(buffer,0,}操作類DbControl,書簽到書簽表中,最終完成書簽的上傳過程。至于文件的,其關(guān)鍵在于Struts.xml中該文件類的接口設(shè)置。在實現(xiàn)//設(shè)置接口名,綁定相應(yīng)方//設(shè)置返回類型,為數(shù)據(jù)流類//設(shè)//設(shè)置接口名,綁定相應(yīng)方//設(shè)置返回類型,為數(shù)據(jù)流類//設(shè) 文件的內(nèi)容類<param<paramname="contentType">application/octet-//設(shè) 文件的來源<param//設(shè)置需 的文件名 的方<param //設(shè) 緩沖區(qū)的大<param//的大小,通過綁定方法中的fileSize<param功能描據(jù)庫模塊和客戶端請求之間的橋梁,由各種不同的接口構(gòu)成,供端使用。實現(xiàn)過//定義接口名稱和接口對應(yīng)的方法名//設(shè)置返回數(shù)據(jù)的類<result//設(shè)置需要返回的參數(shù),以下表//定義接口名稱和接口對應(yīng)的方法名//設(shè)置返回數(shù)據(jù)的類<result//設(shè)置需要返回的參數(shù),以下表示返回該方法中除了變量id外的所有變<param數(shù)據(jù)交互格式分//得到指定文件夾file下的所有文for(inti=0;i<files.length;{if(files[i].isFile())myFile.setsize(getsize(path,各種查詢結(jié)果,其中有BookMark、User和MyFile三種,分別用于書簽信息、用戶信息、客戶端文件信息。結(jié)合數(shù)據(jù)庫模塊,解//得到指定文件夾file下的所有文for(inti=0;i<files.length;{if(files[i].isFile())myFile.setsize(getsize(path,該模塊與上述客戶端基本信息獲取模塊類似,均是使用接口得到端請求數(shù)在整個系統(tǒng)中,需要修改的數(shù)據(jù)有,用戶的基本信息和用戶的信息。兩種信息操作的均是同一個數(shù)據(jù)表。在實現(xiàn)過,建立2個接口類,分別是ChangeUser和ChangePassword,該接口均擴展自ActionSupport。使用HttpServletRequest獲得客戶DbControl操作數(shù)據(jù)庫修改數(shù)據(jù)表中SQL語DbControl的構(gòu)造和第5章個人瀏覽器運試與結(jié)個人瀏覽器Android天氣模塊測天氣網(wǎng)絡(luò)數(shù)據(jù)的獲取天氣數(shù)據(jù)和代表天氣的顯示無誤。信息模塊測驗證首頁和界面中數(shù)據(jù)獲取的正確獲取驗證界面下拉到底加載的功能驗證列表中點擊標(biāo)題顯示內(nèi)容的功能保證網(wǎng)絡(luò)信號和網(wǎng)絡(luò)數(shù)據(jù)的連接Android或者Android模擬器的Android版本至少為4(1)首頁和界面中數(shù)據(jù)獲取的正確獲取測試過(2)界面下拉到底加載的功能測試過列表中點擊標(biāo)題顯示內(nèi)容的功能測試過分別在首頁中和界面中,選擇列表中某一項選項,點擊(1)首頁和界面中數(shù)據(jù)獲取的正確獲(2)界面下拉到底加載的功在界面,每次下拉列表到底部時,軟件多加載了20條數(shù)據(jù)填充到(3)列表中點擊標(biāo)題顯示內(nèi)容的功點擊列表,軟件重新打開新的界面,加載列表中點擊到的的具體內(nèi)容瀏覽器網(wǎng)頁瀏覽模塊測驗證首頁的正確顯示驗證基礎(chǔ)頁的正確顯示驗證搜索編輯框搜索功驗證后退和菜單按鈕的功能驗證菜單按鈕的功能驗證首頁按鈕的功能驗證顯示多窗口按鈕的功能驗證多窗口切換的邏輯正確性保證網(wǎng)絡(luò)信號和網(wǎng)絡(luò)數(shù)據(jù)的連接Android或者Android模擬器的Android版本至少為4首頁的正確顯示驗證基礎(chǔ)頁的正確顯示點擊首頁中快捷方式圖標(biāo),進入基礎(chǔ)頁搜索編輯框搜索功能過后退和菜單按鈕的功能快捷方式,瀏覽主頁,并且點擊進入,點擊后退和前進按鈕。菜單按鈕的功能驗證首頁按鈕的功能過顯示多窗口按鈕的功能態(tài)下,點擊首頁上的快捷方式,進入主頁,點擊多窗口按鈕。多窗口邏輯測試首頁的正確顯示基礎(chǔ)頁的正確顯示軟件隱藏首頁,添加基礎(chǔ)頁,顯示主頁搜索編輯框搜索功能 搜索后退和菜單按鈕的功 首頁按鈕的功能顯示多窗口按鈕的功能多窗口切換的邏輯正確瀏覽器設(shè)置和壁紙模塊驗證瀏覽器設(shè)置中壁紙設(shè)置功能驗證瀏覽器設(shè)置中文字大小設(shè)置功驗證瀏覽器設(shè)置中搜索引擎設(shè)置功驗證瀏覽器設(shè)置中瀏覽器標(biāo)志設(shè)置功能驗證瀏覽器設(shè)置中的清除數(shù)據(jù)功能驗證瀏覽器設(shè)置中的無痕模式驗證瀏覽器設(shè)置中的恢復(fù)默認設(shè)置保證網(wǎng)絡(luò)信號和網(wǎng)絡(luò)數(shù)據(jù)的連接瀏覽器設(shè)置中壁紙設(shè)置功能測試過瀏覽器設(shè)置中文字大小設(shè)置功能測試過瀏覽器設(shè)置中搜索引擎設(shè)置功能測試過設(shè)置選項,選擇。瀏覽器設(shè)置中瀏覽器標(biāo)志設(shè)置功能測試過標(biāo)志設(shè)置選項,選擇MyBrowser;標(biāo)志設(shè)置選項,選擇Android。瀏覽器設(shè)置中的清除數(shù)據(jù)功能測試瀏覽器設(shè)置中的無痕模式測試過程瀏覽器設(shè)置中的恢復(fù)默認設(shè)置測試瀏覽器設(shè)置中壁紙設(shè)置功能瀏覽器設(shè)置中文字大小設(shè)置功能瀏覽器設(shè)置中搜索引擎設(shè)置功能瀏覽器設(shè)置中瀏覽器標(biāo)志設(shè)置功結(jié)果二:設(shè)置主界面瀏覽器標(biāo)志為Android。瀏覽器設(shè)置中的清除數(shù)據(jù)功能瀏覽器設(shè)置中的無痕模打開無痕模式時,進入首頁,點擊快捷方式,進入主頁,待加載完后,通過菜單進入歷史記錄界面,不存在瀏覽主頁的歷史記錄;關(guān)閉后,同樣的操作方法,通過菜單進入歷史記錄界面,發(fā)現(xiàn)存在瀏覽主頁的歷史記錄。瀏覽器設(shè)置中的恢復(fù)默認設(shè)置網(wǎng)絡(luò)文件模塊測保證網(wǎng)絡(luò)信號和網(wǎng)絡(luò)數(shù)據(jù)的連接 點擊,點擊Android版 通過菜單進 ,最 成功瀏覽器與服務(wù)器模塊數(shù)據(jù)交互模塊測驗證用戶登錄功驗證用戶功能驗證用戶修改功能驗證用戶上傳書簽功能驗證用戶同步書簽功能驗證用戶服務(wù)器文件功能驗證用戶上傳本地文件功能保證網(wǎng)絡(luò)信號和網(wǎng)絡(luò)數(shù)據(jù)的連接保持與服務(wù)器之間的連用戶登錄功能測試過用戶功能測試過碼欄和再次輸入欄輸入“1212”,點擊按鈕;欄和再次輸入欄輸入“1212”,點擊按鈕。用戶修改功能測試過過程一:用戶11a登陸成功,進入用戶操作界面,點擊修改界面,在舊過程二:用戶11a登陸成功,進入用戶操作界面,點擊修改界面,在舊過程三:用戶11a登陸成功,進入用戶操作界面,點擊修改界面,在舊密用戶上傳書簽功能測試用戶同步書簽功能測試用戶服務(wù)器文件功能測試過用戶上傳本地文件功能測試過用戶登錄功用戶功用戶修改功能結(jié)果一:修改失敗,軟件顯示提示信息“舊錯誤,請重新輸入用戶上傳書簽功用戶同步書簽功系統(tǒng)顯示提示,書簽成功用戶服務(wù)器文件功軟件服務(wù)器文件,完后,提示文件完成用戶上傳本地文件功能瀏覽器模塊測驗證的功能保證網(wǎng)絡(luò)信號和網(wǎng)絡(luò)數(shù)據(jù)的連接在瀏覽器當(dāng)前頁為首頁時,添加菜單按鈕,打開菜單,點擊功能在瀏覽器當(dāng)前頁為首頁時,點擊快捷方式,進入基礎(chǔ)頁,加載基礎(chǔ)頁,點擊按鈕,選擇到 或者;在瀏覽器當(dāng)前頁為首頁時,點擊快捷方式,進入基礎(chǔ)頁,加載基礎(chǔ)頁,點擊按鈕,選擇到或者郵箱;在瀏覽器當(dāng)前頁為首頁時,點擊快捷方式,進入基礎(chǔ)頁,加載基礎(chǔ)頁,點擊按鈕,選擇。軟件顯示“首頁無法進行此操作”的提示信軟件跳轉(zhuǎn) 或 界面,軟件跳轉(zhuǎn)到或者郵箱界面,軟件成功的瀏覽器書簽和歷史模塊驗證瀏覽器書簽添加功驗證瀏覽器書簽和歷史記錄點擊功保證網(wǎng)絡(luò)信號和網(wǎng)絡(luò)數(shù)據(jù)的連接瀏覽器書簽添加功能測試過 瀏覽器書簽和歷史記錄點擊功能測試過瀏覽器書簽添加功能瀏覽器書簽和歷史記錄點擊功能客戶端文件和上傳模塊測驗證服務(wù)器端供客戶端文件功能驗證服務(wù)器端供客戶端上傳文件功客戶端和服務(wù)器端處于同一個局域網(wǎng),并保持連接服務(wù)器端正常運服務(wù)器端所在的本地數(shù)據(jù)庫正常運服務(wù)器端供客戶端文件功能測試過服務(wù)器端供客戶端上傳文件功能測試過結(jié)果一:客戶端正常;服務(wù)器端供客戶端上傳文件功能MyEclipse服務(wù)器端標(biāo)準(zhǔn)輸入輸出窗口,顯示上傳的文件的名稱、大小等基本信客戶端基本信息獲取模塊和基本信息修改模塊1驗證客戶端基本信息獲取功能驗證客戶端基本信息修改功能2客戶端和服務(wù)器端處于同一個局域網(wǎng),并保持連接服務(wù)器端正常運服務(wù)器端所在的本地數(shù)據(jù)庫正常運3客戶端基本信息獲取功能測試過驗證客戶端基本信息修改功4客戶端基本信息獲取功客戶端基本信息修改功瀏覽器網(wǎng)頁瀏覽模塊運行效5-15-2年6月3日當(dāng)前的頭條。圖5-2則是一些快捷方式 圖5-1第一首頁截 圖5-2第二首頁截當(dāng)用戶瀏覽淘寶網(wǎng)某時的基礎(chǔ)頁截圖。圖5-3菜單截 圖5-4瀏覽淘寶的基礎(chǔ)頁截5-5天氣模塊運行效5-620156圖5-6天氣詳細信息界 圖5-7城市選擇界模塊運行效 圖5-8界 圖5-9某一條詳瀏覽器書簽和歷史記錄模塊運行效以下是書簽和歷史記錄兩大模塊運行效果截圖。圖5-105-11分別是書簽列表界面和歷史記錄列表界面。圖5-12為用戶在瀏覽并添加為書簽時的截圖。圖5-10書簽列表界 圖5-11歷史記錄列表界5-12瀏覽器模塊運行效以下是模塊中的的截圖。界面和菜單界面相似,都是從下彈出的占據(jù)了小半個屏幕的界面。圖5-13中顯示的是用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論