[優(yōu)秀論文]基于Android的旅游導(dǎo)航APP的設(shè)計(jì)與實(shí)現(xiàn)
基于Android的旅游導(dǎo)航APP的設(shè)計(jì)與實(shí)現(xiàn)
摘 ?要
截止目前我國(guó)已經(jīng)建成比較完善的高速鐵路系統(tǒng),交通十分便捷,同時(shí)80、90后悄然成為了社會(huì)主體,他們崇尚自由時(shí)尚的生活方式,樂于與人分享自己的生活,喜愛在路途中結(jié)交志同道合的朋友。而前往全國(guó)乃至全球各地旅游正是表達(dá)他們鮮活個(gè)性的重要方式之一,手機(jī)旅游類APP應(yīng)用而生,觀察我們周圍的人,旅游類手機(jī)應(yīng)用基本是必備的,因此旅游APP設(shè)計(jì)具有極其廣闊的市場(chǎng)前景。
本文采用了Java語言作為主要的開發(fā)語言,并結(jié)合安卓系統(tǒng)所能提供的功能,對(duì)旅游信息進(jìn)行了整理與分類,可以方便的查詢不同地點(diǎn)、不同時(shí)間、不同分類的旅游信息進(jìn)行展示,用戶可以查看旅游的主題、具體的旅游地點(diǎn)、旅游的出發(fā)時(shí)間、行程、以及旅游的價(jià)格,此外還提供了發(fā)起此次旅游的俱樂部,可以致電旅游的負(fù)責(zé)人咨詢具體情況。用戶還可以瀏覽不同景點(diǎn)的魅力圖片,可以實(shí)時(shí)了解驢友們?cè)谕獍l(fā)回的景點(diǎn)信息,以及他們對(duì)這個(gè)景點(diǎn)的評(píng)價(jià),方便用戶更真切的了解這個(gè)景點(diǎn)的相關(guān)信息,此外,還為用戶規(guī)劃了出行的路線,推薦的景點(diǎn),還可以使用第三方登陸,發(fā)表個(gè)人看法和觀點(diǎn)等。
?
關(guān)鍵字:數(shù)據(jù)分類;Android組件沖突處理;旅游;導(dǎo)航
?
?
?
?
?
?
?
?
?
?
Based on the Design and Implementation of Android's Travel Navigation APP
Abstract
So far our country has built more perfect high-speed rail system, the traffic is very convenient, quietly after 80, 90, at the same time is to become the social main body, they advocate free fashionable way of life, to share your life and people, love in the way of making friends. And went to the country and travel around the world is one of the important way to express their lively personality, an APP for mobile travel class, observe the people around us, tourist class mobile APPlication basic is necessary, so the travel APP design has very broad market prospects.
This article used the Java language as the main development language, and combined with the functionality provided by the android system, tourist information for the arrangement and classification, can easily query different locations, different time, different classification of tourism information display, the user can view the theme and specific tourist destination of tourism, tourist's departure time, travel, and tourism, in addition also provides the travel club, can call the travel, the head of the advisory details. Users can also see pictures the charm of different sites, can live more information you trekkers out back to the scenic spots, and their evaluation in the scenic spot, convenient for users to more real understanding of the information about the scenic spots, in addition, also for the user to plan the travel route, the recommended attractions, you can also use the third party and published personal views and opinions, etc.
?
Key Words?: data classification ; Android component processing ; tourism conflict ; navigate
?
?
?
?
?
?
?
目??錄
1 ?概論
1.1 研究現(xiàn)狀
1.2 系統(tǒng)開發(fā)意義
1.3 系統(tǒng)開發(fā)背景
2 ?開發(fā)環(huán)境以及相關(guān)技術(shù)
2.1 Eclipse
2.2 Adroid
2.2.1 基本概念
2.2.2 簡(jiǎn)介
2.2.3 系統(tǒng)架構(gòu)
2.2.4 四大組件
2.3 Java語言
2.4 SQLite
2.4.1 簡(jiǎn)介
2.4.2 架構(gòu)
2.4.3 特點(diǎn)
2.5 FastJson
2.5.1 簡(jiǎn)介
2.5.2 FastJson解析JSON步驟
3 ?需求分析
3.1 可行性分析
3.1.1 技術(shù)可行性
3.1.2 經(jīng)濟(jì)可行性
3.1.3 社會(huì)可行性
3.2 功能需求分析
3.3 特性需求分析
4 ?概要設(shè)計(jì)
4.1 系統(tǒng)總體功能結(jié)構(gòu)
4.2 系統(tǒng)總體架構(gòu)
5 ?詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
5.1 系統(tǒng)總體功能設(shè)計(jì)
5.1.1 服務(wù)器端說明
5.1.2 客戶端說明
5.2 系統(tǒng)的實(shí)現(xiàn)
5.2.1 活動(dòng)模塊
5.2.2 游記模塊
5.2.3 導(dǎo)航模塊
5.2.4 我的模塊
5.3 實(shí)現(xiàn)的技術(shù)點(diǎn)
5.3.1 界面布局的實(shí)現(xiàn)
5.3.2 代碼中所用到的技術(shù)
6 ?軟件測(cè)試
6.1 軟件測(cè)試的重要性
6.2 測(cè)試實(shí)例的研究與選擇
6.3 系統(tǒng)運(yùn)行情況
6.4 系統(tǒng)評(píng)價(jià)
7 ?總結(jié)
參考文獻(xiàn)
致??謝
外文原文
中文翻譯
?
?
1??概論
1.1 研究現(xiàn)狀
隨著手機(jī)通信技術(shù)在近些年的迅猛發(fā)展,智能手機(jī)時(shí)代悄然到來。這是一個(gè)新的時(shí)代,它改變著我們的生活方式,穿衣人們會(huì)去“淘寶”、“京東”足不出戶的買到喜歡的衣服,吃的會(huì)有“餓了么”等外賣的軟件,住又有諸如“58同城”這樣的APP應(yīng)用軟件,出行更有“12306”等眾多的手機(jī)應(yīng)用幫你訂票,訂酒店,先進(jìn)的網(wǎng)絡(luò)通信和智能手機(jī)讓我們的生活變得更加便捷,移動(dòng)手機(jī)端的網(wǎng)絡(luò)用戶人數(shù)早已經(jīng)超越其他方式上網(wǎng)人數(shù),有用戶就會(huì)有市場(chǎng),這是一個(gè)嶄新的通信時(shí)代。
手機(jī)的操作系統(tǒng),Android與IOS占據(jù)了絕大部分,由于IOS只應(yīng)用于蘋果手機(jī),因此Android系統(tǒng)是應(yīng)用最為廣泛的移動(dòng)端操作系統(tǒng),它是開源的,系統(tǒng)整體也是開放的,更新比較快,操作簡(jiǎn)單,用戶界面友好型在不斷進(jìn)步,正是因?yàn)檫@些其他系統(tǒng)不具備的優(yōu)點(diǎn),Android毫無疑問的成為了手機(jī)端操作系統(tǒng)的第一。
80、90后正在愛上旅行,在我的針對(duì)大學(xué)生是否愿意外出旅游的問卷調(diào)查中,只有極少數(shù)的人表示不愿意出行旅游,絕大多數(shù)人表示會(huì)在每年的起碼有兩次出行旅游的計(jì)劃。另外有關(guān)調(diào)查也證實(shí),年輕人出行更愿意自由自主結(jié)伴而行,在人數(shù)上以2到7人居多,其中可能有人是素未謀面,主要依靠網(wǎng)絡(luò)交流溝通,不是很愿意集體報(bào)團(tuán)出行。
我們與他人的認(rèn)識(shí)往往是通過一個(gè)班,一個(gè)學(xué)校,一個(gè)社團(tuán)、一個(gè)公司等等的一個(gè)個(gè)的小圈子互相了解,這樣的認(rèn)識(shí)方式有著很大的局限性,你不知道你是否會(huì)遇到和你一樣喜歡旅行的人,旅游APP的出行正好解決這個(gè)問題,人們?cè)谶@里交流,寫下自己的心得體會(huì),可以結(jié)伴出行,可以給還沒出行旅游準(zhǔn)備去的人建議,甚至于大家可以在路上進(jìn)行交流,這樣的應(yīng)用極大程度的減少了我們自己去篩選朋友去旅行的時(shí)間,給了喜歡旅行的人們一片快捷交流的樂土。
1.2 系統(tǒng)開發(fā)意義
我們可以看到,周邊的智能手機(jī)越來越多的出現(xiàn),幾乎已經(jīng)成為了年輕人的必需物品,這個(gè)比例還在不斷的增大,與此同時(shí)4G已經(jīng)是全面進(jìn)入了我們的生活,用戶的需求越來越多要求越來越高,正是在這樣的大的時(shí)代背景下,各種應(yīng)用軟件開始進(jìn)入手機(jī)市場(chǎng),并且日益成為互動(dòng)娛樂的焦點(diǎn)。
我國(guó)的旅游業(yè)有著極其廣闊的市場(chǎng),旅游已經(jīng)成為了大多數(shù)家庭每年的假期必備的活動(dòng)之一,各個(gè)旅游景點(diǎn)的收入幾何式良性增長(zhǎng),景區(qū)投入不斷增多,基礎(chǔ)設(shè)施不斷得到改善,給了游客更加美好的旅游體驗(yàn),進(jìn)一步吸引著游客的到來,這是一種良性的增長(zhǎng),旅游市場(chǎng)必將繼續(xù)長(zhǎng)期健康發(fā)展,中國(guó)的旅游人數(shù)規(guī)模每一年都在創(chuàng)造新的記錄,這得益于我們的國(guó)家的迅猛進(jìn)步,全世界都在爭(zhēng)奪中國(guó)的游客,優(yōu)惠措施不斷,目前出境游也是比較普遍的一種旅游方式。
因此,旅游業(yè)的迅猛發(fā)展是的傳統(tǒng)的人工導(dǎo)游方式不在能滿足新時(shí)代用戶的多元化需求,長(zhǎng)期以來游客在景點(diǎn)旅游時(shí)只能是走馬觀花,對(duì)景點(diǎn)信息了解甚少,并且對(duì)于一些外來游客可能會(huì)由于語言障礙而導(dǎo)致旅游質(zhì)量下降。于是,基于上述種種,旅游導(dǎo)航APP也成為了現(xiàn)在炙手可熱的手機(jī)APP之一。
本設(shè)計(jì)是為實(shí)現(xiàn)一個(gè)方便用戶出行的目的。具體而言,本設(shè)計(jì)可以推薦旅游景點(diǎn),瀏覽驢友們?cè)谝巴馔讲降膱?chǎng)景,通過導(dǎo)航信息,用戶可以方便的了解一個(gè)景點(diǎn)的特色,最近的活動(dòng),有沒優(yōu)惠價(jià),以及根據(jù)時(shí)間分類,可以準(zhǔn)確的推薦最近一段時(shí)間的旅游團(tuán)動(dòng)向,并附有旅游團(tuán)的聯(lián)系方式,方便用戶直接用電話進(jìn)行咨詢,再確定是否參加本次活動(dòng);在此基礎(chǔ)上,根據(jù)數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu)以及字段分析,把旅游的信息按地點(diǎn)進(jìn)行分類,每個(gè)城市的旅游信息直觀的展現(xiàn)在用戶的面前,并且將旅游的類型進(jìn)行了匯總,冒險(xiǎn)類、休閑類、娛樂類等豐富信息供用戶選擇,此外也考慮到了用戶的經(jīng)濟(jì)承受能力,所以,還實(shí)現(xiàn)了根據(jù)本次旅游的價(jià)格信息進(jìn)行進(jìn)一步整合,可以讓用戶很直觀并且很快得找見適合自己經(jīng)濟(jì)承受能力的旅游景點(diǎn)。當(dāng)然,光有這些信息是完全不夠的,用戶之間最好能進(jìn)行互動(dòng),交流旅游心得,欣賞對(duì)方去過的地方,還可以進(jìn)行點(diǎn)贊,要實(shí)現(xiàn)這個(gè)功能,當(dāng)然離不開第三方登陸,微博、QQ可以任意選擇,在登陸成功后可以對(duì)個(gè)人信息進(jìn)行查看與設(shè)置,擁有這些功能,符合廣大用戶的需求,這也是我做這個(gè)軟件的初衷。
1.3 系統(tǒng)開發(fā)背景
近些年來,手機(jī)有關(guān)于旅游的智能應(yīng)用在旅游人群中的使用越來越普遍,整個(gè)旅游業(yè),在這種大背景的情況下,已經(jīng)進(jìn)入了一個(gè)手機(jī)客戶端時(shí)代,這里面的原因顯而易見,相比傳統(tǒng)的旅游營(yíng)銷形式,它的成本相對(duì)低廉,給游客更加直觀的體驗(yàn),旅游資源豐富,所展示的旅游資源更便于被游客接受選擇。我們現(xiàn)在看國(guó)內(nèi)目前的情況,途牛旅游,阿里旅行等等眾多APP已經(jīng)在線上有了不俗的表現(xiàn),這個(gè)市場(chǎng)正在蓬勃發(fā)展,前景非常好。面對(duì)眾多的旅游類APP,我們開發(fā)的應(yīng)用軟件有著殘酷的競(jìng)爭(zhēng)環(huán)境,為了讓我們的應(yīng)用有一席之地,這就要求我們必須嚴(yán)把軟件質(zhì)量關(guān),優(yōu)化界面,提供便捷的功能,也需要后期推廣工作的跟進(jìn)。下面我們來談?wù)撘幌挛覈?guó)有關(guān)旅游的APP的幾種類型:
1.導(dǎo)游類
導(dǎo)游類可以說是旅游類APP中最多的類型之一,應(yīng)用及其廣泛,它擁有著很強(qiáng)大的功能,可以為游客提供導(dǎo)航、查看地圖、語音助手等多種幫助,甚至有一部分APP擁有規(guī)劃出行行程的功能。我們以“澳門旅游導(dǎo)覽”智能手機(jī)為例,游客在使用時(shí),只需要將攝像頭對(duì)準(zhǔn)周圍建筑,就可以得到景點(diǎn)、飯店、交通方式等信息在屏幕上,此時(shí)游客可以選擇查看需要的詳細(xì)信息;還有以“圖讀世界”為特色的FotoPedia,他們聘用專業(yè)的攝影師,在每一個(gè)城市中取景、拍攝,進(jìn)而進(jìn)行圖片的整理和分類,這樣,游客就可以在家里完善自己的APP上有的城市的旅游行程。當(dāng)然這些手機(jī)應(yīng)用軟件都是需要部署在智能手機(jī)之上的。
2.工具類
工具類APP相比其他主要類型,數(shù)量比較少,它針對(duì)特殊的一類游客,用以滿足游客的特別需求,因?yàn)樗墓δ軉我?,所以推廣范圍偏小。例如,蝸??萍嫉摹奥糜畏g隨我行”,這個(gè)APP可以為用戶提供翻譯的服務(wù),針對(duì)的是所在旅游地區(qū)的外語、方言等,便于游客的異鄉(xiāng)交流,作為游客的工具存在。又例如百度推出多年的“百度地圖”,可以為游客提供地鐵公交等不同的出行路線、方式,簡(jiǎn)單易用,可以為我們?cè)诼眯兄斜苊夂芏嗟穆闊?
3.預(yù)定類
預(yù)定類旅游APP是經(jīng)常出差,商務(wù)人士的必備軟件,同時(shí)也是很多游客所必需的旅游APP,可以十分便捷的解決用戶的的住、行兩大問題,提供火車、飛機(jī)等不同出行方式,便捷購票,也可以 讓我們便捷的預(yù)定酒店。這類APP的突出優(yōu)勢(shì)就是它的網(wǎng)絡(luò)預(yù)定服務(wù),為用戶解決了主要的問題。這類APP也是占據(jù)了主要的市場(chǎng),攜程旅行APP、藝龍等手機(jī)應(yīng)用就是他們的突出代表,它們與航空公司、鐵路部門等合作,提供了便捷的出行方式,它們與眾多連鎖酒店合作,長(zhǎng)期提供高中低各種酒店的預(yù)定服務(wù),無論是對(duì)于酒店還是游客都提供了極大的便利。
4.分享類
當(dāng)前的網(wǎng)絡(luò)中,社交網(wǎng)絡(luò)是最具影響力的,沒有之一。什么都離不開社交網(wǎng)絡(luò)的曝光和推廣。第四大類旅游APP我們就來說說分享類APP,它是旅行與社交結(jié)合的產(chǎn)物,這類APP提供了不同時(shí)期不同地區(qū)的游客對(duì)于特定旅游地的不同感覺,給別人提供一種參考,也可以是一種心得的分享,類似于在朋友圈的秀生活。它們把擁有同樣愛好旅行和社交的人都聚集在一起,給人們以交流空間。這里以“面包旅行APP”為例,它可以獲取游客的GPS定位記錄以及所拍照片的位置,軟件將會(huì)幫我們把足跡連接起來,得到完整的足跡,也可以生成照片墻,帶有時(shí)間軸,當(dāng)然也就可以為其他有興趣的游客實(shí)現(xiàn)直播一路的風(fēng)景。這類APP還在發(fā)展中,數(shù)量不是特別多,但是用戶不易流失,因?yàn)樗麄兌际巧缃慌c旅行的共同愛好者。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
2 ?開發(fā)環(huán)境以及相關(guān)技術(shù)
2.1 Eclipse
開發(fā)環(huán)境對(duì)于Android開發(fā)來說那一定是非常重要且必不可少的一項(xiàng)。我所使用的開發(fā)環(huán)境就是在Eclipse中配置了一下JDK的環(huán)境變量,然后還需要配置SDK(Software Development Kit)和ADT(Android Development Tools),從而搭建起開發(fā)Android所需要的環(huán)境。
Eclipse 是一個(gè)跨平臺(tái)的自由的集成性的軟件開發(fā)環(huán)境(IDE),是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。它是一個(gè)框架以及一組服務(wù),可以構(gòu)建我們所需要的開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。很多程序員喜歡把 Eclipse 視為 Java 開發(fā)環(huán)境(IDE),然而Ecplicse的功能卻完全不止這些而已。它還提供了插件的開發(fā)環(huán)境(PDE),軟件的開發(fā)相關(guān)人員可以使用這個(gè)來進(jìn)行功能的擴(kuò)展。
SDK簡(jiǎn)介:SDK提供了在Windows/Linux等系統(tǒng)下開發(fā)Android軟件的組件,Android支持的所有平臺(tái),其包含了在Android平臺(tái)上開發(fā)移動(dòng)應(yīng)用的各種工具集。SDK的基礎(chǔ)語言是Java,Android軟件應(yīng)用可以在此基礎(chǔ)上進(jìn)行開發(fā)。
ADT簡(jiǎn)介:在IED中建立安卓應(yīng)用的插件,它擴(kuò)展了極其豐富的功能,使得Eclipse更加實(shí)用,更加方便的創(chuàng)建一個(gè)APP的用戶界面。
在SDK與ADT的配置全部成功之后,Android應(yīng)用程序就可以正式開始進(jìn)行了。
2.2 Adroid
2.2.1 基本概念
Android在英文中譯為“機(jī)器人”,它是一個(gè)應(yīng)用于移動(dòng)端手機(jī)的操作系統(tǒng),也就是中文所說的安卓,安卓系統(tǒng)改革了手機(jī)的使用方式,觸摸屏開始廣泛被使用。于互聯(lián)網(wǎng)的推廣起到了極大的推進(jìn)作用。眾所周知Android,實(shí)際上是由java語言編寫而成,在面向?qū)ο蠓矫?,更易操作,使用的門檻特別低,這就為安卓的應(yīng)用開發(fā)以及推廣都提供了極大極大的便利。
2.2.2 簡(jiǎn)介
Android系統(tǒng)有以下5個(gè)特點(diǎn):
1.開放性。
2.應(yīng)用程序無界限。
3.應(yīng)用程序方便擴(kuò)展。
4.應(yīng)用程序可以更便于嵌入接口。
5.應(yīng)用程序可以并行運(yùn)行。
2.2.3 系統(tǒng)架構(gòu)
Android SDK是由內(nèi)核層、運(yùn)行層、框架層以及應(yīng)用層組成:
1.應(yīng)用層:使用仿真器運(yùn)行java程序。
2.框架層:簡(jiǎn)化開發(fā)過程,規(guī)范開發(fā)的設(shè)計(jì)過程。
3.運(yùn)行層:在運(yùn)行時(shí)可以通過一些不同的庫使得不同的組件可以更好的運(yùn)行,進(jìn)而更好的為我們服務(wù)。
4.內(nèi)核層:是Linux內(nèi)核搭載下的Android的核心系統(tǒng)服務(wù)。

2.2.4?四大組件
Android系統(tǒng)有四大組件,它們是安卓系統(tǒng)上實(shí)現(xiàn)對(duì)應(yīng)用程序的實(shí)例化所必需的部分,下面我們分別來看:
1.Activity
為Java開發(fā)的應(yīng)用程序提供一個(gè)可視化的,可以提供給用戶的界面。
2.Service
后臺(tái)運(yùn)行的,持續(xù)伴隨用戶使用的服務(wù),service可以在用戶使用時(shí)提供其他服務(wù)。
3.?Broadcast Receiver
接收響應(yīng)通知,特殊一類型的組件,它不包含任何的用戶界面。
4.Content Provider
這是由Android提供的一種標(biāo)準(zhǔn)的、可以共享數(shù)據(jù)的機(jī)制。
2.3 Java語言
Java的編程語言風(fēng)格,十分接近C、C++語言。從它誕生以來就由于它的簡(jiǎn)單易學(xué)的特性而飽受喜愛,而且它又是面向?qū)ο蟮恼Z言,幫助程序員簡(jiǎn)化了很多問題,跨平臺(tái)的特性更是具有極大的現(xiàn)實(shí)意義,自帶了垃圾回收機(jī)制,使得操作得到簡(jiǎn)化,因?yàn)樗鼡碛械倪@些眾多優(yōu)點(diǎn),java語言應(yīng)用十分廣泛。
2.4 SQLite
2.4.1 簡(jiǎn)介
SQLite是一個(gè)開源的嵌入式關(guān)系數(shù)據(jù)庫。它是D.?RichardHipp建立的公有領(lǐng)域項(xiàng)目。數(shù)據(jù)庫應(yīng)用廣泛,也是應(yīng)用最廣泛的數(shù)據(jù)庫操作系統(tǒng)之一,要求硬件環(huán)境低,操作簡(jiǎn)單,易于管理,容易嵌入到軟件中。
2.4.2 架構(gòu)
SQLite架構(gòu)由四個(gè)子系統(tǒng)構(gòu)成:
1.接口(Interface)
2.編譯器(Compiler)
3.虛擬機(jī)(Virtual Machine)
4.后端(Back-End)
2.4.3 特點(diǎn)
1.零配置(Zero Configuration)
2.可移植(Portability)
它是運(yùn)行在Windows,Linux,BSD,Mac OS X和一些商用Unix系統(tǒng),比如Sun的Solaris,IBM的AIX,同樣,它也可以工作在許多嵌入式操作系統(tǒng)下,比如QNX,VxWorks,Palm OS, Symbin和Windows CE。
3、小而緊湊(Compactness)
SQLite是被設(shè)計(jì)成輕量級(jí),自包含的。
4、簡(jiǎn)單(Simplicity)
5、靈活(Flexibility)
6、可靠(Reliability)
SQLite采用模塊化的編碼方式,因此語句比較可靠,也比較容易讓人認(rèn)知。
2.5?FastJson
2.5.1?簡(jiǎn)介
????阿里巴巴的FastJson是一個(gè)Json處理工具包,包括“序列化”和“反序列化”兩部分,它具備如下特征:
1、速度最快:
測(cè)試表明,F(xiàn)astjson具有極快的性能,超越任何其他的Java Json parser。包括自稱最快的JackJson;
????2、功能強(qiáng)大:
完全支持Java Bean、集合、Map、日期、Enum(枚舉);支持范型,支持自??;無依賴,能夠直接運(yùn)行在Java SE 5.0以上版本;支持Android;
Fastjson API入口類是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON類上的靜態(tài)方法直接完成。
public static final Object parse(String text); // 把JSON文本parse為JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject ???
public static final ?T parseObject(String text, Class clazz); // 把JSON文本parse為JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final ?List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 將JavaBean序列化為JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化為帶格式的JSON文本
public static final Object toJSON(Object javaObject); 將JavaBean轉(zhuǎn)換為JSONObject或者JSONArray。
2.5.2?FastJson解析JSON步驟
A、服務(wù)器端將數(shù)據(jù)轉(zhuǎn)換成json字符串
首先,服務(wù)器端項(xiàng)目要導(dǎo)入阿里巴巴的fastjson的jar包至builtPath路徑下;

然后將數(shù)據(jù)轉(zhuǎn)為json字符串,核心函數(shù)是:
????????public static String createJsonString(Object value)
?????????????{
?????????????????String alibabaJson = JSON.toJSONString(value);
?????????????????return alibabaJson;
?????????????}
B、客戶端將json字符串轉(zhuǎn)換為相應(yīng)的javaBean
1、客戶端獲取json字符串
public class HttpUtil
??????{
??????????public static String getJsonContent(String urlStr)
??????????{
??????????????try
??????????????{// 獲取HttpURLConnection連接對(duì)象
??????????????????URL url = new URL(urlStr);
??????????????????HttpURLConnection httpConn = (HttpURLConnection) url
??????????????????????????.openConnection();
??????????????????// 設(shè)置連接屬性
??????????????????httpConn.setConnectTimeout(3000);
??????????????????httpConn.setDoInput(true);
??????????????????httpConn.setRequestMethod("GET");
??????????????????// 獲取相應(yīng)碼
??????????????????int respCode = httpConn.getResponseCode();
??????????????????if (respCode == 200)
??????????????????{
??????????????????????return ConvertStream2Json(httpConn.getInputStream());
??????????????????}
??????????????}
??????????????catch (MalformedURLException e)
??????????????{
??????????????????// TODO Auto-generated catch block
??????????????????e.printStackTrace();
??????????????}
??????????????catch (IOException e)
??????????????{
??????????????????// TODO Auto-generated catch block
??????????????????e.printStackTrace();
??????????????}
??????????????return "";
??????????}
????
??????????private static String ConvertStream2Json(InputStream inputStream)
??????????{
??????????????String jsonStr = "";
??????????????// ByteArrayOutputStream相當(dāng)于內(nèi)存輸出流
??????????????ByteArrayOutputStream out = new ByteArrayOutputStream();
??????????????byte[] buffer = new byte[1024];
??????????????int len = 0;
??????????????// 將輸入流轉(zhuǎn)移到內(nèi)存輸出流中
??????????????try
?????????{
??????????????????while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
??????????????????{
??????????????????????out.write(buffer, 0, len);
??????????????????}
??????????????????// 將內(nèi)存流轉(zhuǎn)換為字符串
??????????????????jsonStr = new String(out.toByteArray());
??????????????}
??????????????catch (IOException e)
??????????????{
??????????????????// TODO Auto-generated catch block
??????????????????e.printStackTrace();
??????????????}
??????????????return jsonStr;
??????????}
?}
2、使用泛型獲取javaBean(核心函數(shù))
??????????public static T getPerson(String jsonString, Class cls) {
??????????????T t = null;
??????????????try {
??????????????????t = JSON.parseObject(jsonString, cls);
??????????????} catch (Exception e) {
??????????????????// TODO: handle exception
??????????????}
??????????????return t;
??????????}
?public static List getPersons(String jsonString, Class cls) {
??????????????List list = new ArrayList();
??????????????try {
??????????????????list = JSON.parseArray(jsonString, cls);
??????????????} catch (Exception e) {
??????????????}
??????????????return list;
??????????}
?public static List> listKeyMaps(String jsonString) {
??????????????List> list = new ArrayList>();
??????????????try {
???????????????????list = JSON.parseObject(jsonString,
??????????????????????????new TypeReference>>() {
??????????????????});
??????????????} catch (Exception e) {
??????????????????// TODO: handle exception
??????????????}
??????????????return list;
??????????}
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
3 ?需求分析
系統(tǒng)分析的真正含義就是對(duì)系統(tǒng),從技術(shù)可行性、經(jīng)濟(jì)可行性以及操作可行性來進(jìn)行分析。
3.1?可行性分析
在這里就依次從技術(shù)的、經(jīng)濟(jì)的、社會(huì)的可行性三個(gè)方面來對(duì)本旅游導(dǎo)航APP進(jìn)行深入的分析和研究。
3.1.1?技術(shù)可行性
該軟件是基于Java語言、并以SQLite為后臺(tái)數(shù)據(jù)庫。硬件、軟件的性能要求、環(huán)境條件等各項(xiàng)條件均良好。利用現(xiàn)有技術(shù)條件預(yù)計(jì)完全可以達(dá)到該軟件的功能目標(biāo)。時(shí)間安排相對(duì)比較充裕,預(yù)計(jì)完成沒有問題。
由以上分析可以知道:本設(shè)計(jì)是具有技術(shù)可行性的。
3.1.2?經(jīng)濟(jì)可行性
本設(shè)計(jì)采用的開發(fā)軟件都是開源的,不需用額外花費(fèi)費(fèi)用,這樣削減很多的精力和資源,起到減少成本的作用,因此在經(jīng)濟(jì)上具有可行性。
由以上分析可以知道:本設(shè)計(jì)具有經(jīng)濟(jì)的可行性。
3.1.3?社會(huì)可行性
本設(shè)計(jì)的社會(huì)可行性主要需要從法律因素、用戶使用可行性這兩方面進(jìn)行研究。
1.法律因素
本設(shè)計(jì)是根據(jù)80、90的青年人旅行的實(shí)際情況開發(fā)研制的,是通過大量的調(diào)研得出的,系統(tǒng)的軟件設(shè)計(jì)是在獨(dú)立的環(huán)境下完成的,無可供抄襲的軟件產(chǎn)品。
2.用戶使用可行性
本設(shè)計(jì)對(duì)用戶的要求,除了需要具備移動(dòng)設(shè)備以及第三方賬號(hào)外,并不需要特別的技術(shù)能力。使用系統(tǒng)的管理員,需要具備對(duì)java語言及Android開發(fā)環(huán)境的使用能力,在投入使用前,無需對(duì)操作系統(tǒng)的人員進(jìn)行培訓(xùn)。這樣減少了投入成本簡(jiǎn)化了操作環(huán)節(jié)。
由以上分析可以知道:本設(shè)計(jì)完全具有社會(huì)的可行性。
3.2?功能需求分析
Android系統(tǒng)目前在市場(chǎng)上占有很大的份額,從2010前Android就已經(jīng)呈現(xiàn)出很強(qiáng)勁的發(fā)展勢(shì)頭,而且到目前為止,還處于不斷的上升階段。無論你走在大街上、校園里、地鐵上亦或是公交上,總能看到人們拿著智能手機(jī)專心致志的做自己的事情,而且不難發(fā)現(xiàn),絕大多數(shù)都是Android手機(jī),人們低頭聚精會(huì)神的玩游戲、看小說、刷刷微博等等。手機(jī)中安裝的各種APP可以豐富并且滿足人們對(duì)業(yè)余生活的要求以及期望,其中的游戲娛樂、在線購物也是極大的刺激著整個(gè)社會(huì)的消費(fèi)水平。隨著時(shí)代的不斷發(fā)展,兼娛樂與通信功能的手機(jī)越發(fā)的流行,成為人們的一種新的追求。因而,這就更進(jìn)一步的促進(jìn)激發(fā)著手機(jī)軟件APP研發(fā)人員的熱情與積極性。
綜上,本設(shè)計(jì)是為了實(shí)現(xiàn)一個(gè)方便用戶出行,并可以推薦旅游景點(diǎn)的目標(biāo)。用戶可以通過瀏覽驢友們?cè)谝巴馔讲铰眯惺堑膱?chǎng)景,全方位的了解自己想要去的景點(diǎn)。通過展示的信息,用戶可以方便的了解一個(gè)景點(diǎn)的人文特色,最近是否有活動(dòng),是否擁有優(yōu)惠價(jià),以及根據(jù)時(shí)間分類,可以準(zhǔn)確的推薦最近一段時(shí)間的旅游團(tuán)動(dòng)向,并附有旅游團(tuán)的聯(lián)系方式,方便用戶直接用電話進(jìn)行咨詢,從而來確定是否參加本次活動(dòng);并且在此基礎(chǔ)上,根據(jù)數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu)以及字段分析,把旅游的信息按地點(diǎn)進(jìn)行一些分類,每個(gè)城市的旅游信息就可以直觀的展現(xiàn)在用戶的面前,并且將旅游的類型進(jìn)行了匯總,冒險(xiǎn)類、休閑類、娛樂類等豐富的信息以供用戶選擇,此外也考慮到了用戶的經(jīng)濟(jì)承受能力,還實(shí)現(xiàn)了根據(jù)本次旅游的價(jià)格信息進(jìn)行進(jìn)一步的整合,可以讓用戶更加直觀并且很快的找見適合自己經(jīng)濟(jì)承受能力的旅游景點(diǎn)。當(dāng)然,光有這些信息是遠(yuǎn)遠(yuǎn)不夠的,用戶之間最好能夠進(jìn)行互動(dòng),互相交流旅游心得,欣賞了解對(duì)方去過的地方,還可以進(jìn)行點(diǎn)贊,要想實(shí)現(xiàn)這個(gè)功能,當(dāng)然是離不開第三方登陸的,微博、QQ可以任意選擇,因而就要求用戶必須要擁有一個(gè)屬于自己的第三方的賬號(hào),在登陸成功后可以對(duì)個(gè)人信息進(jìn)行查看。
3.3?特性需求分析
一個(gè)較好的軟件應(yīng)該具有以下特性:
1、易操作和功能簡(jiǎn)單明確。一個(gè)好的旅游導(dǎo)航系統(tǒng)應(yīng)該功能明確,用戶可以很快的熟悉使用流程,而不是看到界面不知道應(yīng)該如何的操作,即操作要簡(jiǎn)單,界面友好易懂。
2、軟件功能流暢。軟件運(yùn)行時(shí)候不會(huì)發(fā)生崩潰和卡頓等問題,整個(gè)界面操作起來快捷流暢。
3、軟件易維護(hù)性。系統(tǒng)各個(gè)設(shè)計(jì)模塊明確,核心代碼要有必要的注釋,方便軟件的后期維護(hù)。
?
?
4 ?概要設(shè)計(jì)
概要設(shè)計(jì)是軟件開發(fā)周期過程中最重要的部分之一,具有極強(qiáng)的指導(dǎo)性,是最為重要的技術(shù)型文檔。
本設(shè)計(jì)主要是應(yīng)用于整個(gè)80、90后的旅游管理,所以對(duì)于實(shí)際中不同愛好的用戶,在本設(shè)計(jì)中基本都有著對(duì)應(yīng)其不同的頁面,即雖然不同的用戶擁有不同的功能,但是互相之間是有聯(lián)系的,不可獨(dú)立,從而體現(xiàn)了該軟件的完整性。
通過對(duì)旅游大巷系統(tǒng)的需求分析,了解了系統(tǒng)的總體功能結(jié)構(gòu)和模塊,以及各個(gè)模塊要實(shí)現(xiàn)什么功能,以下介紹了系統(tǒng)的總體功能模塊和系統(tǒng)總體架構(gòu)。
4.1?系統(tǒng)總體功能結(jié)構(gòu)
通過對(duì)旅游導(dǎo)航的需求分析,了解了本系統(tǒng)的基本邏輯結(jié)構(gòu)和功能。本系統(tǒng)實(shí)現(xiàn)了4個(gè)功能模塊,分別是活動(dòng)、游記、導(dǎo)航、我的四部分。系統(tǒng)功能模塊圖如圖4-1所示。

4.2?系統(tǒng)總體架構(gòu)
旅游導(dǎo)航的設(shè)計(jì)和實(shí)現(xiàn)的工作模式是客戶-服務(wù)器模式。服務(wù)端在服務(wù)器上運(yùn)行,服務(wù)端是各個(gè)景點(diǎn)的展示平臺(tái),本文中設(shè)計(jì)的旅游導(dǎo)航APP則屬于客戶端, 是基于Android手機(jī)平臺(tái)的,使用了徒步去旅行tubu.ibuzhai.com的api接口,以及百度地圖SDK。
在實(shí)現(xiàn)本設(shè)計(jì)的過程中,我主要是使用服務(wù)、 網(wǎng)絡(luò)和客戶三部分構(gòu)成, 其中服務(wù)器由請(qǐng)求數(shù)據(jù)的服務(wù)器和中間服務(wù)器構(gòu)成, 網(wǎng)絡(luò)主要有Internet、 3G/WLAN構(gòu)成。詳細(xì)了解徒步去旅行和百度地圖的查詢接口, 并獲得授權(quán)訪問。另一方面, 必須很好的設(shè)計(jì)客戶軟件和中間服務(wù)器間的訪問接口, 此外, 在客戶軟件在提供的用戶使用時(shí), 我們必須建立好中間服務(wù)器。目前考慮到實(shí)際需要, 中間的服務(wù)器沒有自己設(shè)計(jì), 選擇了徒步去旅行和百度地圖來實(shí)現(xiàn)我們的系統(tǒng)。
?
5 ?詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
5.1?系統(tǒng)總體功能設(shè)計(jì)
5.1.1?服務(wù)器端說明
服務(wù)器端是負(fù)責(zé)數(shù)據(jù)的獲取和對(duì)外提供接口的,服務(wù)器端的數(shù)據(jù)是會(huì)定時(shí)進(jìn)行更新的,同時(shí)也會(huì)對(duì)獲取的數(shù)據(jù)進(jìn)行簡(jiǎn)單的分類與整合。例如:在空間里評(píng)論別人消息的具體過程為:服務(wù)器端提供評(píng)論接口,讓用戶可以進(jìn)行評(píng)論,客戶端將用戶的評(píng)論信息進(jìn)行提交,同時(shí)會(huì)提醒用戶是否已提交成功。而服務(wù)器端接收用戶的提交請(qǐng)求后,獲取用戶的評(píng)論信息,同時(shí)又對(duì)外提供一個(gè)顯示不同用戶評(píng)論信息的接口。然后客戶端進(jìn)行刷新,這樣用戶便可看到自己以及其他人的評(píng)論信息內(nèi)容。
除此之外,由于安卓的智能手機(jī)型號(hào)較多又十分的繁雜。所以,安卓應(yīng)用的屏幕適配一直是一個(gè)較為頭疼的問題。服務(wù)器端進(jìn)行配合是十分必要的。客戶端可以獲取不同手機(jī)的屏幕尺寸和分辨率,并將這些信息提交到服務(wù)器端,服務(wù)器端會(huì)根據(jù)不同型號(hào)手機(jī)不同的分辨率信息,并且向客戶端返回不同大小不同分辨率的圖片,進(jìn)行屏幕的自適應(yīng)。
5.1.2 客戶端說明
客戶端的主要工作是對(duì)數(shù)據(jù)進(jìn)行處理與分類,然后進(jìn)行信息的展示,可以讓用戶直觀的查看各種服務(wù)。服務(wù)器端雖然對(duì)整體數(shù)據(jù)有一定的分類和歸納,但那僅僅是相對(duì)于計(jì)算機(jī)而言(根據(jù)字段或者關(guān)鍵字進(jìn)行的分類),客戶端的靈魂是有良好的用戶體驗(yàn),因而服務(wù)器端的數(shù)據(jù)分類是遠(yuǎn)遠(yuǎn)不能滿足實(shí)際用戶操作的需求的,而這些數(shù)據(jù)的處理,就是在客戶端進(jìn)行的。
用戶不但可以查看當(dāng)前的旅游信息,在游記模塊中,專門為用戶做了一個(gè)信息的篩選和推薦功能的推薦小組,進(jìn)入這個(gè)推薦便是全國(guó)各地中熱門的旅游景點(diǎn),包括對(duì)這些景點(diǎn)的詳細(xì)介紹,當(dāng)然還會(huì)推薦適合的人群類型,讓真正的愛好者找到自己真正想要去的地方,領(lǐng)略每個(gè)地方的美麗。
5.2 系統(tǒng)的實(shí)現(xiàn)
運(yùn)行本設(shè)計(jì),首先你會(huì)進(jìn)入到主頁面:
本設(shè)計(jì)大致分為4個(gè)模塊:活動(dòng)模塊、游記模塊、導(dǎo)航模塊、我的模塊。每個(gè)模塊各有自己的特點(diǎn)。

5.2.1 活動(dòng)模塊
相比即將介紹到的推薦模塊這個(gè)以游客信息為主的模塊,活動(dòng)模塊則更多是官方發(fā)布的信息,信息的分類更多而且更加全面?;顒?dòng)模塊可以分為兩個(gè)層次:第一個(gè)層次為官方分類的信息,有八種分類,分別為全部、周末活動(dòng)、長(zhǎng)線活動(dòng)、攝影、入門、進(jìn)階、雪山、培訓(xùn)這八項(xiàng),各種包含有不同特色的旅游以及時(shí)間段的區(qū)分,目的是更方便用戶的出行。第二個(gè)層次則是具體的信息,提供的參考字段主要有:景點(diǎn)信息的簡(jiǎn)要描述description、所屬的類型type、具體的位置信息place、出發(fā)的時(shí)間starttime、行程的天數(shù)duration、出行的費(fèi)用price、所屬的發(fā)布單位club、景點(diǎn)的插圖picture、是否屬于熱門景點(diǎn)ishot、是否處于特惠時(shí)間段內(nèi)islow等,這個(gè)層次是對(duì)景點(diǎn)的直觀展示,以便用戶對(duì)景點(diǎn)了解更加深刻。

圖5-2活動(dòng)模塊圖
?
5.2.2 游記模塊
從名字就可以知道,游記模塊側(cè)重于介紹各種出行信息,這些數(shù)據(jù)信息都是進(jìn)行分類羅列出來的,也是最近一段時(shí)間的信息,在游記這個(gè)模塊中,又詳細(xì)的分為直播和推薦兩個(gè)模塊,以下是這兩個(gè)小模塊的單獨(dú)介紹:
5.2.2.1 推薦模塊
在推薦模塊中,主要包含這幾個(gè)字段:景點(diǎn)的簡(jiǎn)要描述description,旅游的出發(fā)時(shí)間starttime,總共花費(fèi)的時(shí)間duration,圖文的發(fā)表人user,用戶設(shè)置的個(gè)人頭像head,點(diǎn)贊的數(shù)量number,評(píng)論的數(shù)量comments,被查看的人次people,景點(diǎn)的圖片pictures,此處景點(diǎn)是否處于熱門ishot,以上字段大致的介紹了景點(diǎn)的基本信息,也滿足了用戶了解景點(diǎn)信息的基本需求,在用戶感興趣時(shí)可以進(jìn)一步查看其詳細(xì):
?


在推薦的詳細(xì)信息內(nèi),除了包含以上字段信息外,還記錄了用戶每天的出行計(jì)劃,以及當(dāng)前游玩的心得等,你可以進(jìn)行評(píng)論和點(diǎn)贊。
5.2.2.2 直播模塊
直播模塊是最近一段時(shí)間內(nèi)的出行信息,一周前,各個(gè)月前等等都有可能,直播則是相對(duì)于其而進(jìn)行設(shè)計(jì)的,它是用戶出行的實(shí)時(shí)信息,也許就是此時(shí)此刻的游玩信息,它的時(shí)間跨度只有幾天,一半是不會(huì)超過一周。
?

?
在此模塊中,包含的字段信息有:用戶名name,用戶頭像head,更新的圖片數(shù)量picturenumber,更新的時(shí)間updatetime,更新的圖片pictures,更新的地點(diǎn)place,更新狀態(tài)的描述description等,由于用戶主要針對(duì)80、90的年齡,所以這種設(shè)計(jì)是基于比較熟悉的QQ空間模式的,目的是為了用戶之間良好的互動(dòng)交流能力。
?

直播詳情中,側(cè)重于圖片的展示,你從中可以看出,這些圖片完全是從一個(gè)游客的角度拍攝的,更具備真實(shí)性,將此信息進(jìn)行展示的目的是為了防止某些景點(diǎn)用虛假的景點(diǎn)圖片將游騙至其景點(diǎn),這樣的話游客行至此處時(shí)完全是和圖片信息是相符的。
5.2.3 導(dǎo)航模塊
導(dǎo)航模塊主要是用于外出旅行時(shí)起導(dǎo)航作用的。由于百度地圖是開源的并且有例子可以參考,所以在這個(gè)模塊,就直接在我的Android項(xiàng)目中調(diào)用百度地圖,來實(shí)現(xiàn)定位以及導(dǎo)航的功能。
百度地圖 的Android SDK是一套基于Android 2.1及以上版本設(shè)備的應(yīng)用程序接口。在運(yùn)用的過程中該套 SDK開發(fā)適用于Android系統(tǒng)移動(dòng)設(shè)備的地圖應(yīng)用。通過調(diào)用地圖SDK接口,使用者就可以很順利的調(diào)用百度地圖服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強(qiáng)的LBS(地圖類)應(yīng)用程序。百度地圖Android SDK提供的所有服務(wù)是免費(fèi)的,接口使用無次數(shù)限制。所以如果想要使用它,只需申請(qǐng)密鑰(key)后,即可使用了。


?

圖5-9導(dǎo)航頁面圖
5.2.4 我的模塊
我的模塊主要是個(gè)人信息的設(shè)置,這個(gè)主要是涉及到了第三方登陸,而所謂的第三方登陸,就是借助于國(guó)內(nèi)國(guó)外擁有得到龐大用戶量的平臺(tái),如Facebook、騰訊QQ、微博、人人、微信等等的平臺(tái)。實(shí)現(xiàn)方式主要是借助于第三方的shareSDK,然后根據(jù)接口文檔,下載完SDK后,即可以實(shí)現(xiàn)第三方平臺(tái)的登陸操作。具體的登陸界面效果圖如下:

在當(dāng)游客以自己的賬號(hào)成功的登陸以后,登陸的界面就會(huì)顯示游客在第三方平臺(tái)上的游客昵稱,以及游客的頭像,還有粉絲和關(guān)注的信息則是使用本APP上用戶之間的互粉與關(guān)注,在通知欄里信息是用戶在瀏覽景點(diǎn)時(shí)與其他用戶交流信息,或者預(yù)定了某個(gè)景點(diǎn)的信息。路線欄里包括用戶自己在出行時(shí)對(duì)路線進(jìn)行的標(biāo)記,包括去過的地方和想去的地方?;顒?dòng)信息是用戶在本APP上預(yù)定過的景點(diǎn)信息,以及參加過什么樣的團(tuán)體活動(dòng)等等。點(diǎn)贊信息欄則是匯總用戶自己對(duì)看到的其他用戶所發(fā)布的游記或者圖片點(diǎn)贊后的消息統(tǒng)計(jì)集合。

綜上所述,所有本設(shè)計(jì)上的功能點(diǎn)就基本介紹完畢了,實(shí)現(xiàn)的初衷是為了方便用戶的使用。所以,本設(shè)計(jì)的側(cè)重點(diǎn)在于信息的分類與展示,用戶之間的交流,咨詢活動(dòng)的組織者以及對(duì)特定地點(diǎn)的查詢導(dǎo)航的功能等。
5.3 實(shí)現(xiàn)的技術(shù)點(diǎn)
5.3.1?界面布局的實(shí)現(xiàn)
首先,進(jìn)入程序的首頁為一個(gè)activity,這個(gè)activity整體上是一個(gè)垂直的LinearLayout(線性布局),在這個(gè)布局中又劃分為上下兩個(gè)布局,上面布局用于承載活動(dòng)、游記、導(dǎo)航、我的這四個(gè)模塊的fragment,activity的下面放置了一個(gè)radiogroup組,在radiogroup組里放置了四個(gè)radiobutton,這四個(gè)button分別對(duì)應(yīng)活動(dòng)、游記、導(dǎo)航、我的這四個(gè)信息。
????<LinearLayout
????????android:id="@+id/ll_main_layout"
????????android:layout_width="match_parent"
????????android:layout_height="match_parent"
????????android:gravity="bottom"
????????android:orientation="vertical" >
????????<FrameLayout
????????????android:id="@+id/fragments_container"
????????????android:layout_width="match_parent"
????????????android:layout_height="0dp"
????????????android:layout_weight="1" >
????????</FrameLayout>
????????<RadioGroup
????????????android:id="@+id/rg_bottom"
????????????android:layout_width="match_parent"
????????????android:layout_height="wrap_content"
????????????android:background="#f6f5ec"
????????????android:gravity="center"
????????????android:orientation="horizontal" >
????????????<RadioButton
????????????????android:id="@+id/rb_onlive"
????????????????style="@style/bottom_five_button"
????????????????android:drawableTop="@drawable/bottom_activity"
????????????????android:text="活動(dòng)" />
????????????<RadioButton
????????????????android:id="@+id/rb_recommend"
????????????????style="@style/bottom_five_button"
????????????????android:checked="true"
????????????????android:drawableTop="@drawable/bottom_travel"
????????????????android:text="游記" />
????????????<RadioButton
????????????????android:id="@+id/radioButton3"
????????????????style="@style/bottom_five_button"
????????????????android:drawableTop="@drawable/bottom_route"
????????????????android:text="導(dǎo)航" />
????????????<RadioButton
????????????????android:id="@+id/radioButton4"
????????????????style="@style/bottom_five_button"
????????????????android:drawableTop="@drawable/bottom_mine"
????????????????android:text="我的" />
????????</RadioGroup>
????</LinearLayout>
????<LinearLayout
????????android:id="@+id/ll_cover"
????????android:layout_width="match_parent"
????????android:layout_height="match_parent"
????????android:visibility="gone"
????????android:orientation="vertical"
????????android:background="#a0000000" >
</LinearLayout>
5.3.1.1 活動(dòng)模塊布局的實(shí)現(xiàn)
活動(dòng)模塊的一級(jí)界面大致可以分為三個(gè)部分。
第一部分是水平的LinearLayout:最左邊是一個(gè)ImageView,里面放置一個(gè)圖片信息,然后是一個(gè)地點(diǎn)的分類信息,最后邊放置一個(gè)ImageButton,用于搜索的點(diǎn)擊按鈕。
第二個(gè)部分是分類信息的展示,采用的是Android中的GridView控件,它可以指定每行放置圖片的個(gè)數(shù),以及橫行縱行圖片的間距。
第三部分是一個(gè)ListView,它的每個(gè)Item元素復(fù)用同一個(gè)布局,他可以加載一批具有不同內(nèi)容但有相同的布局的元素,在每個(gè)布局中主要采用的是線性布局,這種布局的優(yōu)點(diǎn)在于不容易變形,對(duì)與不同屏幕可以進(jìn)行很好的適配。
5.3.1.2 游記模塊布局的實(shí)現(xiàn)
在游記模塊中,分為三個(gè)布局,上面的LinearLayout是顯示當(dāng)前處的模塊,第二部分又是一個(gè)RadioGroup組,里面放置兩個(gè)RadioButton,分別顯示直播、推薦這兩個(gè)子模塊,以保證當(dāng)前只能選中一個(gè)子模塊;第三部分是一個(gè)可以左右滑動(dòng)的ViewPager,在Viewpager中又放置了兩個(gè)fragment,在兩個(gè)子fragment中分別放置了一個(gè)ListView,用于承載顯示的具體信息,直播和推薦兩個(gè)子模塊除了每個(gè)Item的布局不同外,其余布局都基本相同。
5.3.1.3 導(dǎo)航模塊布局的實(shí)現(xiàn)
在導(dǎo)航模塊的布局過程中,既有自己位置定位的布局,也有搜索目的地的頁面布局。在編寫定位頁面的代碼過程中,當(dāng)然要先申請(qǐng)一個(gè)百度地圖API,下載過程是比較順利的。其中最主要的申請(qǐng)百度的API Key,這就要求要用本機(jī)的Eclipse的SHA1指紋以及自己項(xiàng)目的包名,當(dāng)然由于你的Eclipse中顯示的指紋肯定和我的是不一樣的,所以否則申請(qǐng)到的key也沒有用。當(dāng)然在編碼之前還是需要先將百度地圖Android版的SDK準(zhǔn)備好。Libs目錄是專門用來存放第三方j(luò)ar包的地方,而armeabi目錄則是專門用來存放壓縮包中so文件的地方。So文件是用c或c++語言進(jìn)行編寫,然后再用NDK編譯出來的。而libBaiduMapSDK_v2_3_1.so這個(gè)文件已經(jīng)由百度幫助我們編譯好了,因此直接放到armeabi目錄就可以使用了。然后就可以開始編寫這個(gè)頁面了。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
????android:layout_width="match_parent"
????android:layout_height="match_parent"
????android:orientation="vertical" >
????<LinearLayout
????????android:layout_width="match_parent"
????????android:layout_height="wrap_content"
????????android:background="#33B5E5" >
????????<ImageView
????????????android:id="@+id/iv_activity_logo"
????????????android:layout_width="wrap_content"
????????????android:layout_height="wrap_content"
????????????android:padding="8dp"
????????????android:src="@drawable/icon_titlebar" />
????????<TextView
????????????android:id="@+id/tv_activity_country"
????????????android:layout_width="wrap_content"
????????????android:layout_height="match_parent"
????????????android:gravity="center"
????????????android:padding="8dp"
????????????android:text="導(dǎo)航"
????????????android:textColor="#fffffb"
????????????android:textSize="20sp" />
????</LinearLayout>
<LinearLayout
????android:orientation="vertical" android:layout_width="match_parent"
????android:layout_height="match_parent">
????<LinearLayout
????????android:layout_width="match_parent"
????????android:layout_height="wrap_content"
????????android:orientation="horizontal">
????????<Button
????????????android:id="@+id/locate"
????????????android:text="定位"
????????????android:layout_width="wrap_content"
????????????android:layout_height="wrap_content"
????????????android:layout_weight="1"/>
????????<Button
????????????android:id="@+id/navi"
????????????android:text="導(dǎo)航"
????????????android:layout_width="wrap_content"
????????????android:layout_height="wrap_content"
????????????android:layout_weight="1"/>
????</LinearLayout>
????<com.baidu.mapapi.map.MapView
????????android:id="@+id/bmapView"
????????android:layout_width="fill_parent"
????????android:layout_height="fill_parent"
????????android:clickable="true" />
</LinearLayout>
</LinearLayout>
5.3.1.4 我的模塊布局的實(shí)現(xiàn)
?我的模塊主要是分為兩個(gè)布局,上面是一個(gè)linearlayout,里面放置的一個(gè)imageView,用戶顯示用戶未登錄是的頭像圖片,下面的一個(gè)linearlayout,里面則是放置的兩個(gè)textView,用于實(shí)現(xiàn)第三方登陸。
這樣頁面布局就基本介紹完畢了。
5.3.2 代碼中所用到的技術(shù)
在實(shí)際實(shí)現(xiàn)各項(xiàng)功能的過程中,毫無疑問的遇到了很多問題,Android中解決事件之間的沖突尤為重要,而且不同的功能點(diǎn)進(jìn)行組合時(shí)還會(huì)遇到很多問題,以下是遇到并解決的技術(shù)點(diǎn)。
5.3.2.1 活動(dòng)模塊
1.滑動(dòng)沖突的解決:在活動(dòng)模塊中用到的Android控件有Viewpager、Gridview、Listview,這三個(gè)控件為上中下三個(gè)層次的,他們?nèi)齻€(gè)要實(shí)現(xiàn)一起聯(lián)動(dòng)就要在外層套一個(gè)Scrollview,即同時(shí)上滑或者同時(shí)下滑,其中Gridview和Listview這兩個(gè)控件本身就在數(shù)據(jù)加載過多時(shí)就能滑動(dòng),它的父View Scrollview也是可以滑動(dòng)的,所以會(huì)起沖突,具體表現(xiàn)為Gridview和ListView顯示的數(shù)據(jù)不全問題,解決的辦法是重寫Gridview和Listview中的OnMersure()方法,讓其重新計(jì)算下數(shù)據(jù)的高度,便可解決此類沖突。
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_MOVE) {
return true;
}
return super.dispatchTouchEvent(ev);
}
}
2.Popupwindow與Listview之間的綁定:在實(shí)現(xiàn)地點(diǎn)的切換時(shí),Listview中的數(shù)據(jù)要跟著地點(diǎn)的不同展示當(dāng)前選中地點(diǎn)的信息,地址欄的展示使用的是Popupwindow,要想實(shí)現(xiàn)這種效果就必須把Popupwindow的點(diǎn)擊事件與Listview進(jìn)行綁定,要實(shí)現(xiàn)的方法時(shí)設(shè)置點(diǎn)擊事件OnClickListener,Android中的點(diǎn)擊事件類似于C語言的接口回調(diào)技術(shù)。
popup1.setBackgroundDrawable(drawables);
popup1.setOutsideTouchable(true);
popup1.setFocusable(true);
llFirst.setOnClickListener(this);
3.不同界面之間的傳值:在活動(dòng)模塊一級(jí)界面與二級(jí)界面跳轉(zhuǎn)的過程中涉及到數(shù)據(jù)的傳遞,Android中有一種跳轉(zhuǎn)機(jī)制為Intent,它可以攜帶數(shù)據(jù)信息,具體代碼為:
Intent intent=new Intent(this,MainActivity.class); intent.putExtra(“value”,1);
startActivity(intent);這樣便可以實(shí)現(xiàn)界面與界面之間的跳轉(zhuǎn),并且攜帶跳轉(zhuǎn)時(shí)數(shù)據(jù)信息。
5.3.2.2 游記模塊
1.界面的刷新:在這個(gè)模塊中比較重視數(shù)據(jù)的實(shí)時(shí)性,所獲得的數(shù)據(jù)必須要最新的,這就需要對(duì)界面的數(shù)據(jù)進(jìn)行刷新,Android在不斷的改進(jìn)發(fā)展過程中已經(jīng)有了很好的刷新控件,但是在這里我仍然使用的是第三方的可刷新庫,PulltoRefresh,它的基本原理也是重寫Android源碼,在刷新時(shí)經(jīng)常遇到的問題是刷新回不去,一直在刷新的情況,經(jīng)過摸索,解決的辦法是在Android中的Handler機(jī)制中執(zhí)行刷新的回調(diào)方法。
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
// TODO Auto-generated method stub
if (currrentPage <= totalPage) {
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
currrentPage++;
String url = APPConfig.RECOMMENDHEAD + currrentPage
+ APPConfig.RECOMMENDEND;
UpdateData(url);
handler1.sendEmptyMessage(1);
}
});
} else {
Toast.makeText(getActivity(), "已加載全部!", Toast.LENGTH_LONG).show();
}
}
2.Listview每個(gè)Item點(diǎn)擊事件的沖突處理:由于Listview每個(gè)Item復(fù)用一個(gè)布局,在點(diǎn)擊一個(gè)按鈕時(shí)會(huì)起沖突,解決的辦法是在BaseAdapter適配器中對(duì)每個(gè)點(diǎn)擊事件進(jìn)行處理。
View vv = getLayoutInflater().inflate(
R.layout.activity_sort_laout_style, null);
sortAdapter = new ArrayAdapter<String>(this,
R.layout.activity_sort_text_style, R.id.tv_activity_sort, sort);
sortList = (ListView) vv.findViewById(R.id.lv_activity_sort_listview);
sortList.setAdapter(sortAdapter);
popup2 = new PopupWindow(vv);
popup2.setWidth(getWindowManager().getDefaultDisplay().getWidth() / 2);
popup2.setHeight(LayoutParams.WRAP_CONTENT);
ColorDrawable drawabless = new ColorDrawable(Color.WHITE);
popup2.setBackgroundDrawable(drawabless);
popup2.setOutsideTouchable(true);
popup2.setFocusable(true);
llSecond.setOnClickListener(this);
5.3.2.3 導(dǎo)航模塊
在我的導(dǎo)航模塊中主要是調(diào)用百度地圖,在導(dǎo)入到項(xiàng)目的過程中,會(huì)有一些錯(cuò)誤,但是通過搜索解決方案,在不斷地嘗試后終于得到解決,找到合理的方式,實(shí)現(xiàn)了導(dǎo)航功能。
???? private void initNavi() {
BNOuterTTSPlayerCallback ttsCallback = null;
BaiduNaviManager.getInstance().init(this, mSDCardPath, APP_FOLDER_NAME, new NaviInitListener() {
@Override
public void onAuthResult(int status, String msg) {
if (0 == status) {
authinfo = "key校驗(yàn)成功!";
Log.i("key校驗(yàn)","success");
} else {
authinfo = "key校驗(yàn)失敗, " + msg;
}
BNDemoMainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(BNDemoMainActivity.this, authinfo, Toast.LENGTH_LONG).show();
}
});
}
public void initSuccess() {
Toast.makeText(BNDemoMainActivity.this, "百度導(dǎo)航引擎初始化成功", Toast.LENGTH_SHORT).show();
Log.i("初始化","success");
initSetting();
}
public void initStart() {
Toast.makeText(BNDemoMainActivity.this, "百度導(dǎo)航引擎初始化開始", Toast.LENGTH_SHORT).show();
}
public void initFailed() {
Toast.makeText(BNDemoMainActivity.this, "百度導(dǎo)航引擎初始化失敗", Toast.LENGTH_SHORT).show();
}
}, ?null, ttsHandler, null);
}
5.3.2.4 我的模塊
在我的模塊中的關(guān)鍵技術(shù)就是第三方登陸了,第三方登陸時(shí)依賴于第三方提供的sharesdk,登陸時(shí)要進(jìn)行授權(quán)的處理,在用戶登陸成功以后要獲取用戶的賬戶信息,如頭像、昵稱等個(gè)人設(shè)置信息,然后將這些信息展現(xiàn)到APP界面中。
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.share_qq:
plat = ShareSDK.getPlatform(acticity, QQ.NAME);
plat.setPlatformActionListener(this);
if (plat == null) {
return;
}
???plat.SSOSetting(true);
plat.showUser(null);
break;
case R.id.share_Sina:
plat = ShareSDK.getPlatform(acticity, SinaWeibo.NAME);
plat.setPlatformActionListener(this);
if (plat == null) {
return;
}
plat.SSOSetting(true);
plat.showUser(null);
break;
case R.id.btn_login_notify:
Intent intent = new Intent(acticity, NotifyActivity.class);
startActivity(intent);
break;
case R.id.iv_minefragment_setting:
Intent intent1 = new Intent(acticity, SettingActivity.class);
startActivity(intent1);
break;
default:
break;
}
}
以上只是APP中一級(jí)界面要用的部分技術(shù),此外還要處理數(shù)據(jù)量過大時(shí)造成的OOM(內(nèi)存溢出),數(shù)據(jù)的分類算法,各種點(diǎn)擊事件回調(diào)的處理等技術(shù),開發(fā)以上APP使用的第三方框架有:XUtils框架、PulltoRefresh可刷新庫、viewpagerindicatorlibrary等。
6 ?軟件測(cè)試
在我們的安卓應(yīng)用軟件開發(fā)的過程中,軟件測(cè)試也是極其重要的一環(huán)。大量的測(cè)試可以幫我們有效的保證設(shè)計(jì)軟件的質(zhì)量。這個(gè)測(cè)試的過程就是在條件的控制下對(duì)設(shè)計(jì)的各個(gè)模塊進(jìn)行預(yù)期結(jié)果的對(duì)比,盡可能的用軟件容易出現(xiàn)錯(cuò)誤的例子進(jìn)行驗(yàn)證,進(jìn)行各種各樣所設(shè)計(jì)軟件可能遇到的情況下的反饋是否正常,測(cè)試軟件的健壯性、正確性等。用樸實(shí)的話來講,針對(duì)設(shè)計(jì)軟件的測(cè)試,實(shí)際上就是找錯(cuò)。
6.1?軟件測(cè)試的重要性
這個(gè)模塊是非要重要的,測(cè)試必不可少,我們可以從各大IT公司看到,測(cè)試崗位是不可或缺的,軟件測(cè)試甚至重要性要遠(yuǎn)遠(yuǎn)高于我們程序的編碼階段,我們通過課本的學(xué)習(xí)已經(jīng)知道,軟件測(cè)試是有著很重要的地位的,它甚至可能會(huì)伴隨整個(gè)的軟件生命周期。好的測(cè)試環(huán)節(jié),可以幫助我們的設(shè)計(jì)在使用后擁有較好的穩(wěn)定性,同時(shí)在開發(fā)中,越早的發(fā)現(xiàn)錯(cuò)誤,無疑是耗損越小的。
基于Android的旅游導(dǎo)航APP同樣需要進(jìn)行大量的軟件測(cè)試,在每一個(gè)模塊,在每一個(gè)設(shè)計(jì)階段,模塊的測(cè)試,都是必不可少的,系統(tǒng)測(cè)試也是關(guān)乎軟件開發(fā)的進(jìn)程。在本APP的開發(fā)過程中,軟件測(cè)試的工作實(shí)際上占據(jù)了很大的比例,在測(cè)試中發(fā)現(xiàn)自己的問題,然后回頭查找問題,進(jìn)而改正問題。正是因?yàn)橛兄@樣的全面的軟件測(cè)試,才讓開發(fā)順利進(jìn)行,也讓我更加深刻的認(rèn)識(shí)到測(cè)試的重要性??偠灾?,這是一項(xiàng)必不可少的工作。
6.2?測(cè)試實(shí)例的研究與選擇
在我們大學(xué)的學(xué)習(xí)中,我們知道程序測(cè)試的概念,它的方法中主要有白盒方式測(cè)試、黑盒方式測(cè)試。
白盒測(cè)試:顧名思義,白盒測(cè)試實(shí)際上就是將我們所要被測(cè)試的軟件視為一個(gè)可視的白色盒子,一切結(jié)構(gòu)以及邏輯都是可以看到的,因此它也是一種針對(duì)結(jié)構(gòu)的一種測(cè)試。這樣的測(cè)試,主要要達(dá)到的預(yù)期結(jié)果是判斷邏輯是否正確,結(jié)構(gòu)是否合理。需要提出的是,這種測(cè)試方法要對(duì)源碼進(jìn)行十分必要的全部覆蓋,要發(fā)現(xiàn)所有可能存在的錯(cuò)誤,具體主要有兩種覆蓋方法:邏輯覆蓋法,路徑覆蓋法。
黑盒測(cè)試:也就是我們針對(duì)被測(cè)試程序的功能進(jìn)行測(cè)試。不去關(guān)心它的實(shí)現(xiàn),不去關(guān)心它的邏輯、結(jié)構(gòu),只重視結(jié)果,只考慮我們預(yù)期的功能是否實(shí)現(xiàn),判斷規(guī)格說明書中的內(nèi)容是否被合理實(shí)現(xiàn)。等價(jià)分類的方法,因果圖法,利用邊界值進(jìn)行分析方法等都是黑盒測(cè)試的常用方法。
基于Android的旅游導(dǎo)航APP軟件測(cè)試采用白盒測(cè)試、黑盒測(cè)試相結(jié)合的方法,綜合了二者各自優(yōu)點(diǎn),在測(cè)試當(dāng)中遵循了“盡早地和不斷進(jìn)行測(cè)試”,“確保了測(cè)試用例有效、完整”原則。通過測(cè)試達(dá)到以下測(cè)試目的:
1.功能檢查:查閱功能是否全部完善。
2.接口檢查:檢查做好的接口是否可以正常使用。
3.?dāng)?shù)據(jù)檢查:數(shù)據(jù)結(jié)構(gòu)是否正確,數(shù)據(jù)文件是否可以正常訪問。
4.性能檢查:檢查性能需求能否得到滿足。
5.初始化、終止檢查:檢查是否能夠進(jìn)行開始停止。
6.3?系統(tǒng)運(yùn)行情況
進(jìn)行全面的系統(tǒng)測(cè)試后,測(cè)試結(jié)果都是正常的,本軟件是完全可以正常運(yùn)行的。
以下是運(yùn)行的主要結(jié)果截圖:

本設(shè)計(jì)主要有4個(gè)模塊,其中第一部分是活動(dòng)模塊,詳細(xì)圖如下:

第二部分是游記模塊,具體可以分為直播和推薦兩個(gè)部分:

圖6-3直播頁面? ?

第三部分是導(dǎo)航頁面,具體實(shí)現(xiàn)如下:

???


第四部分為用戶登錄界面,詳細(xì)圖如下:

? ? ? ? ?

6.4?系統(tǒng)評(píng)價(jià)
系統(tǒng)評(píng)價(jià)就是指,我們對(duì)系統(tǒng)的功能、經(jīng)濟(jì)、技術(shù)等方面的客觀評(píng)價(jià)。針對(duì)本設(shè)計(jì)的評(píng)價(jià)如下:
1.系統(tǒng)功能評(píng)價(jià)
在開發(fā)完成后,我進(jìn)行了大量的測(cè)試運(yùn)行,經(jīng)過驗(yàn)證,基本實(shí)現(xiàn)了原先設(shè)定的功能,可以滿足既定用戶的不同需求,這說明設(shè)計(jì)較為合理。
2.系統(tǒng)技術(shù)評(píng)價(jià)
技術(shù)上,我們?cè)O(shè)計(jì)的APP響應(yīng)速度還比較快,功能基本完善的實(shí)現(xiàn)了,在測(cè)試中,長(zhǎng)期運(yùn)行也沒有問題,程序的安全性高,實(shí)用性強(qiáng),占用大小適中??梢灶A(yù)見會(huì)給用戶提供良好的服務(wù)。
3.系統(tǒng)經(jīng)濟(jì)評(píng)價(jià)
開發(fā)過程由自己進(jìn)行,所需要的時(shí)間并不長(zhǎng),開發(fā)周期短,后期維護(hù)費(fèi)用低廉,可以為用戶提供穩(wěn)定安全可靠的服務(wù)。為用戶節(jié)約大量的時(shí)間,節(jié)約旅游愛好者的旅游費(fèi)用。
7 ?總結(jié)
本軟件就為了青年人們出去旅行更加方便快捷高效而進(jìn)行各地旅游信息的整合及歸類,以Android為基礎(chǔ),基本實(shí)現(xiàn)了預(yù)期的功能,并且界面美觀友好,操作方便,做出了自己的特色。為了成功的完成畢設(shè),我先對(duì)各個(gè)方面的需求進(jìn)行分析,查閱了很多旅游類APP的現(xiàn)狀以及市面上已有的旅行APP應(yīng)用,看看有哪些可以借鑒的東西。第二步是概要設(shè)計(jì),就是對(duì)之前調(diào)查的總結(jié)分析,整理出一套可行的系統(tǒng)以及框架結(jié)構(gòu)。第三步是詳細(xì)設(shè)計(jì),是前兩步具體落實(shí)階段。第四步就是編碼,這也是最重要的一步,是把想法完全實(shí)現(xiàn)在眼前的過程。在這期間要細(xì)心再細(xì)心,這樣也可以省去因?yàn)樾薷腻e(cuò)誤代碼所浪費(fèi)的時(shí)間。這個(gè)過程雖然很辛苦,但是確實(shí)在自己不斷地編寫過程中,學(xué)到了很多以前沒有學(xué)習(xí)到的內(nèi)容,很大的補(bǔ)充了自己的整體知識(shí)體系。不僅如此,在遇到某一些自己沒有辦法解決的問題,通過多方面的搜索、請(qǐng)教,讓自己了解了一部分以前沒有學(xué)到過得知識(shí)。所以總體來說,編碼這個(gè)過程是痛并且快樂著的,也使得自己很滿足的很充實(shí)。第五步顯然就是對(duì)自己設(shè)計(jì)軟件的測(cè)試了,雖然基本代碼已經(jīng)完成但是具體界面以及某一些功能顯然還是要補(bǔ)充完整的。在測(cè)試過程中當(dāng)然也遇到了多多少少,大大小小的問題,但是都即時(shí)通過網(wǎng)絡(luò)或者請(qǐng)教老師同學(xué),將問題很好的解決了。然后逐漸修改代碼,把自己的界面做的更加形象更加符合用戶操作。
我一路看著系統(tǒng)中的各種功能從空想到實(shí)現(xiàn),這其中的艱難和收獲,讓我感慨頗多。這次的畢業(yè)設(shè)計(jì)就像是一場(chǎng)求學(xué)之路上必須經(jīng)過的磨難,又像是將理想照進(jìn)現(xiàn)實(shí)的魔鏡,它使我明白了自己過去的學(xué)習(xí)是多么的粗心大意,并且自己所做的努力是多么的微不足道。大一大二甚至到了大三的時(shí)候,還總覺得學(xué)習(xí)的專業(yè)課是多么多么的無聊,技術(shù)是多么多么的落后,殊不知這些都是通向成才之路上的一塊又一塊牢固的基石,如果沒有這些基礎(chǔ)的技術(shù)支持,那么我們的技術(shù)根本就難以向更高的層次去進(jìn)發(fā)去發(fā)展。在這次本科的畢業(yè)設(shè)計(jì)過程中,遇到不會(huì)的問題,我都會(huì)先去查找相關(guān)的資料,鍛煉自己對(duì)于松散資料的整合能力,這也是自學(xué)能力培養(yǎng)中很重要的一部分。由于自己在大學(xué)的學(xué)習(xí)中付出的努力太少,對(duì)于相關(guān)技術(shù)的掌握程度不是太好,這個(gè)系統(tǒng)的設(shè)計(jì)還有不少的缺陷有待改進(jìn)。我一定會(huì)在今后的學(xué)習(xí)生活中繼續(xù)著自己沒有完成的磨難,把自己打磨的耀眼一點(diǎn)。如此,便可不負(fù)自己的青蔥歲月。
?
參考文獻(xiàn)
[1]??曾薪夷. 基于Android平臺(tái)的GPS導(dǎo)航系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 重慶金美通信有限責(zé)任公司. 2012.
[2] ?馬凱. 基于Android平臺(tái)的移動(dòng)學(xué)習(xí)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[C]. 北京:?北京工業(yè)大學(xué), 2013.
[3] ?朱少民. 軟件工程導(dǎo)論[M]. 清華大學(xué)出版社, 2009.
[4] ?葉達(dá)峰.??ECLIPSE編程技術(shù)與實(shí)例(附光盤)[M]. 人民郵電出版社, 2006.
[5] ?趙亮, 張維. 基于Android技術(shù)的界面設(shè)計(jì)與研究[J]. 電腦知識(shí)與技術(shù), 2009(29).
[6] ?楊云君. ?Android的設(shè)計(jì)與實(shí)現(xiàn)[M]. 北京:?機(jī)械工業(yè)出版社, 2013.
[7] ?Eckel B. Thinking in Java[M]. Prentice Hall, 2006.
[8] ?Meier R. Professional Android APPlication Development[M]. Wrox Press Ltd., 2008.
[9] ?Silva V. Pro Android Games[M]. Springer, Berlin, 2013.
[10] W.?Frank Ableson,?Charlie Collins,?Robin Sen.?Android APPlication Fundamentals?[M].?北京:?人民郵電出版社,?2010:32-50.
[11]?王宜貴. 軟件工程[M]. 北京: 機(jī)械工業(yè)出版社, 2002:20-79.
[12] (美)克利夫頓. Android用戶界面設(shè)計(jì)[M]. 北京:?電子工業(yè)出版社, 2014.
[13] ?賀曉能, 薛濤.?手機(jī)應(yīng)用層軟件的功能要求和測(cè)試方法[J].?現(xiàn)代電信科技, 2007.
[14] ?崔啟亮, 胡一鳴.?國(guó)際化軟件測(cè)試[M].?電子工業(yè)出版社, 2006.
[15] 張晟. 基于Android的GSP應(yīng)用系統(tǒng)的研究與開發(fā)[M]. 湖北工程職業(yè)學(xué)院信息(管理)工程系,2015.
?
?
?
?
?
?
?
?
致 ?謝
隨著時(shí)間的流逝,不知不覺的就迎來了畢業(yè)的日子,畢業(yè)設(shè)計(jì)也接近尾聲。經(jīng)過幾個(gè)月的努力畢設(shè)也終于完成了。
在這個(gè)過程中我特別的感謝我的指導(dǎo)老師,每當(dāng)我遇到問題或者有消極情緒的時(shí)候總是孜孜不倦的開導(dǎo)我,為我解答疑惑。他就像是一位長(zhǎng)者,在我成長(zhǎng)的過程中授業(yè)解惑,讓我受益良多。還有就是我的同學(xué)們,大家在一起討論問題,相互幫助,聽一聽不同的建議幫助可以讓我更好的理解知識(shí),在這里由衷感謝老師和同學(xué)們。謝謝你們!
感謝我的家人們,你們是我永遠(yuǎn)的支持者,是你們堅(jiān)定的義無反顧的支持我才一步一步的完成我的學(xué)業(yè),沒有你們就沒有現(xiàn)在的我!我會(huì)一直把你們放在心里,是你們讓我擁有一個(gè)溫馨的家庭,在這個(gè)環(huán)境中,學(xué)會(huì)了感恩和做人。你們的支持和鼓勵(lì)是我永遠(yuǎn)前進(jìn)的動(dòng)力。
在這幾個(gè)月的時(shí)間里,自己不但是做了畢業(yè)設(shè)計(jì),還思考了開發(fā)者四年的大學(xué)生活。一開始以為畢設(shè)知識(shí)單純的運(yùn)用四年學(xué)到的知識(shí)就能解決,可在實(shí)踐的過程中才知道,自己的知識(shí)是多么的淺薄,很多東西都不了解或是知之甚少,學(xué)習(xí)的東西還很多提升的東西也還很多,在馬上要畢業(yè)的日子里。剛剛畢業(yè)的更應(yīng)該抱著一顆學(xué)習(xí)的心去面對(duì)社會(huì)?;叵氪笠蝗胄r(shí)候的懵懂少年,那時(shí)候剛來大學(xué),什么都不懂,什么都是新鮮的事物,轉(zhuǎn)眼之間就要畢業(yè)了,四年的磨練讓開發(fā)者的肩頭多了一份責(zé)任和承擔(dān)。
回憶過去,許許多多的事情浮現(xiàn)在腦海:懵懂的我初入校園,一切都是那么新鮮,那么富有吸引力?;叵肫饋?,有快樂也有艱辛,有收獲也有失落。這次畢設(shè)完成的過程是我人生中一段相當(dāng)難忘的經(jīng)歷,一路走來我獲得了很多人的幫助。最后我還要再次在此衷心的感謝指導(dǎo)老師對(duì)我的教導(dǎo),由于之前沒有項(xiàng)目開發(fā)的經(jīng)驗(yàn),獨(dú)自一人完成畢業(yè)設(shè)計(jì)還是相當(dāng)有難度的。當(dāng)我有解決不了的問題時(shí),總是向老師請(qǐng)教,無論時(shí)間早晚,老師總是及時(shí)的回復(fù)我,并且根據(jù)自己的經(jīng)驗(yàn)和廣闊的知識(shí)面為我提供絕佳的解決方法,使我能夠順利的完成這次的畢業(yè)設(shè)計(jì)。其次要感謝我的室友和同學(xué),他們?cè)谖覜]有頭緒的時(shí)候總是帶給我意想不到的收獲,為我搬掉了很多畢設(shè)路上的攔路虎,也幫助我彌補(bǔ)了不少知識(shí)點(diǎn)的空白。當(dāng)然,最后要感謝太原理工大學(xué)給了我美好的四年大學(xué)生活,培養(yǎng)了我專業(yè)的技能知識(shí)和學(xué)習(xí)能力,也祝母校的發(fā)展越來越好!
?