Android智慧旅游助手軟件開發(fā)V_第1頁(yè)
Android智慧旅游助手軟件開發(fā)V_第2頁(yè)
Android智慧旅游助手軟件開發(fā)V_第3頁(yè)
Android智慧旅游助手軟件開發(fā)V_第4頁(yè)
Android智慧旅游助手軟件開發(fā)V_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、南京鐵道職業(yè)技術(shù)學(xué)院畢 業(yè) 論 文題 目: Android智慧旅游助手軟件開發(fā) 作 者: 貝晶 學(xué) 號(hào): 05312100233 二級(jí)學(xué)院: 軟件學(xué)院 系 : 軟件技術(shù)系 專 業(yè): 軟件技術(shù)(安卓) 班 級(jí): 軟件技術(shù)(安卓)1003 指導(dǎo)者: 張衛(wèi) 副教授 評(píng)閱者: 2013 年 5 月畢業(yè)設(shè)計(jì)(論文)中文摘要Android智慧旅游助手軟件開發(fā)摘要 自Google公司和開發(fā)手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)Android后,android逐漸成為手機(jī)系統(tǒng)主流。隨著智能手機(jī)的發(fā)展及應(yīng)用,使得智能手機(jī)軟件等應(yīng)用需求日益劇增,而android軟件的開發(fā)需求就更為明顯。Android是一種基于Linux的自有操作系

2、統(tǒng),而且對(duì)于源代碼具有開放性,這就對(duì)于iphone相較于有優(yōu)勢(shì)。如今大家的生活節(jié)奏相對(duì)較快,很多人為了緩解心情,會(huì)選擇去一些名勝古跡旅游?;谶@兩點(diǎn),本此設(shè)計(jì)選擇了Java語(yǔ)言開發(fā)的一個(gè)應(yīng)用于Android手機(jī)的智慧旅游助手軟件-旅伴。以前在旅行前總是需要制定一個(gè)繁復(fù)的計(jì)劃,包括了行程、消費(fèi)、交通查詢等等,而有了旅伴,當(dāng)用戶使用此軟件時(shí),能明確知道自己的所在位置,附近的景點(diǎn)、如何在最短時(shí)間內(nèi)到達(dá)該景點(diǎn),以及在該景點(diǎn)附近的飲食及住宿信息。當(dāng)用戶位于景點(diǎn)區(qū)時(shí),能聽到景區(qū)的專業(yè)導(dǎo)游解說關(guān)于這個(gè)項(xiàng)目,我使用了Android中BaiduMap、GPS定位等功能。關(guān)鍵詞 Android 旅游畢業(yè)設(shè)計(jì)(論文

3、)英文摘要Development of Android Wisdom travel assistant softwareAbstract Since the company and develop leadership and development after the Android mobile phone alliance,Android has become the mainstream mobile phone system.With the development of smart phones and application,it make the smartphone soft

4、ware applications such as the growing demand,and the development demand of the android mobile phone software is particularly obvious.Android is a OS based on Linux,and for the source code is developmental,and it has advantages over iphone.Now everybody's relatively fast pace of life,a lot of peo

5、ple in order to alleviate the mood,they will choose to travel to some places of interest.Based on these two points, this design choose the Java language development of the wisdom of an application in the Android mobile phone travel assistant software - traveling companion.Before before travel, I alw

6、ays need to make a complicated plan,including travel consumer traffic query and so on with travelling companion.When the user use the software,they can clear know your location,Nearby attractions,how in the shortest possible time to the attractions,and near the site of the food and lodging informati

7、on.When a user is in the scenic spots,can hear a professional tour guide commentary about itAbout this project,I used BaiduMap,GPS and other functions in Android.Key words Android trip第 33 頁(yè) 共 33 頁(yè)目 次1 引言22 項(xiàng)目開發(fā)工具及環(huán)境搭建32.1 Eclipse32.2 下載搭建Eclipse環(huán)境所需的資料(及工具包)32.3安裝及配置環(huán)境32.4 設(shè)置注釋的風(fēng)格62.5 新建一個(gè)簡(jiǎn)單的工程72.6

8、 分別在虛擬機(jī)和真機(jī)上測(cè)試82.7 Photoshop82.8 下載Photoshop83.Android平臺(tái)93.1 Android93.2 Android構(gòu)成94.Android旅伴的總體設(shè)計(jì)114.1 研究目標(biāo)114.2 需求分析114.3 UI界面設(shè)計(jì)124.4 程序模塊設(shè)計(jì)124.5軟件功能134.6 文件結(jié)構(gòu)與用途134.7 程序主要代碼174.7.1 載入頁(yè)面174.7.2 sqlite數(shù)據(jù)庫(kù)內(nèi)庫(kù)、表的創(chuàng)建214.7.3 GPS定位26結(jié)論32致謝33參考資料341 引言我是在大學(xué)才買的手機(jī),而且還是非智能型手機(jī),第一次聽到android手機(jī)還是從舍友的口中了解到的,當(dāng)時(shí)andr

9、oid版本已經(jīng)更新至3.0了,而且android在全球的市場(chǎng)份額已經(jīng)超過諾基亞的塞班系統(tǒng),榜上第一名,而且有很多家手機(jī)公司加盟,使用Google公司發(fā)布的android操作系統(tǒng)。再當(dāng)我們專業(yè)老師偶然向我們提到android的時(shí)候,我就已經(jīng)認(rèn)定想要好好學(xué)習(xí)android軟件開發(fā)了。如今,人們對(duì)手機(jī)有著強(qiáng)烈的依賴性,手機(jī)已成為了人們生活中必不缺少的元素。尤其是大多數(shù)人手里的手機(jī)都已更新成了智能手機(jī)。如今的智能手機(jī)目前主要的操作系統(tǒng)有:Symbian(塞班)、Palm OS、Android(安卓)、IOS、Black Berry(黑莓) OS 6.0、Windows Phone8等。11.Symbi

10、an,將移動(dòng)設(shè)備的通用技術(shù)和圖形用戶界面技術(shù)分開,符合了潮流的個(gè)性化,而且研發(fā)成本較低,具有強(qiáng)大的開放性??上Ь褪羌嫒菪暂^差。2.Palm OS,是專門用于掌上電腦Plam的操作系統(tǒng),在推出時(shí)就超過了蘋果的Newton,因此而名聲大噪,后被IBM、Sony、Handspring獲得授權(quán),被使用在其產(chǎn)品中。但不支援多工處理。23.Android,Google開發(fā)的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng),而且還有很多公司基于Android的基礎(chǔ)上進(jìn)行了二次開發(fā),如HTC、LG、小米、華為等。34.IOS,蘋果公司為iphone是以Darwin為基礎(chǔ)的開發(fā)的操作系統(tǒng),所以只能用于蘋果公司的產(chǎn)品ipho

11、ne、ipad、iPod touch上,非開源。4 5.Black Berry,是Research In Motion專用的專用系統(tǒng),比較商業(yè)化,但是比較有限制性,需要附有數(shù)碼簽署(digitally signed)。56.WinPhone系統(tǒng)是微軟為了進(jìn)軍移動(dòng)設(shè)備領(lǐng)域與諾基亞合作的重大調(diào)整。Windows Phone 8(WP8)是微軟最新發(fā)布的全新移動(dòng)操作系統(tǒng),由于內(nèi)核的變更,Windows Phone 7.5是無(wú)法升級(jí)到WP8的。6目前,android是全球智能手機(jī)用戶使用最多的操作系統(tǒng),因此,基于android開發(fā)的軟件是非常受歡迎的。因此,本次畢業(yè)設(shè)計(jì)選擇了使用Java語(yǔ)言開發(fā)的一個(gè)

12、應(yīng)用于android手機(jī)的智慧旅游助手軟件。在這個(gè)軟件項(xiàng)目中,主要包含這些功能:用戶的注冊(cè)及登錄,用戶的個(gè)人旅游信息、用戶的旅行安排及行程的管理,用戶所在處附近的餐飲、住宿、交通、娛樂、景點(diǎn)、購(gòu)物等多處信息的查詢,還可以搜索推薦的旅行,查看合適的旅游安排等等。2 項(xiàng)目開發(fā)工具及環(huán)境搭建本項(xiàng)目共使用了兩款軟件:Eclipse和Photoshop。2.1 EclipseEclipse是基于Java的可擴(kuò)展開發(fā)平臺(tái)(開放源代碼)。它附帶一個(gè)插件集,包括了Java開發(fā)工具(Java Development Kit,JDK)。Eclipse最初由OTI和IBM兩家公司的IDE產(chǎn)品開發(fā)組于1999年創(chuàng)建。

13、對(duì)于Eclipse來(lái)說,一切都是插件,所有功能都以插件的形式附于Eclipse核心上。Eclipse基本內(nèi)核包括了:圖像API(SWT/Jface),Java開發(fā)環(huán)境插件(JDT)、插件開發(fā)環(huán)境(PDE)等。72.2 下載搭建Eclipse環(huán)境所需的資料(及工具包)JDK下載:Eclipse的官網(wǎng)地址:選擇適合平臺(tái)的安裝文件,windows32下目前最新版本為:jdk-6u25-ea-bin-b03-windows-i586-27_feb_2011.exe默認(rèn)安裝即可,安裝完成后要配置環(huán)境變量。2.3 安裝及配置環(huán)境安裝JDK,雙擊打開并按提示完成安裝操作設(shè)置環(huán)境變量配置如下:XP系統(tǒng)下,右擊

14、“我的電腦”->選擇“屬性”->選擇“高級(jí)”->點(diǎn)擊“環(huán)境變量”->點(diǎn)擊“系統(tǒng)變量(S)”->新建JAVA_HOME(變量值為你JDK的安裝路徑,如圖2.3.1所示)-> 編輯CLASSPATH變量值(在最前面加上.;%JAVA_HOME%lib.;)(如圖2.3.2所示)圖2.3.1 Java_Home設(shè)置圖2.3.2 CLASSPATH設(shè)置創(chuàng)建環(huán)境變量后,可以打開cmd,輸入“java -version”驗(yàn)證是否安裝成功。如圖2.3.3所示:圖2.3.3 java-version將下載好的Eclipse壓縮包解壓,打開其“eclipse”程序,關(guān)閉wel

15、come。Eclipse ADT 配置:Help->Install New Software->Add,Name選項(xiàng)填寫Android Plugin,Location選項(xiàng)填寫:http:/dl- Software 界面點(diǎn)擊該網(wǎng)址,可以看到 URL 中包含的插件列表,其中有 Developer Tools 一項(xiàng)。選擇 Developer Tools 旁邊的復(fù)選框,單擊 Install。如圖2.3.4:圖2.1. 1 ADT配置配置Android SDK:在Eclipse中選擇 Window-Android SDK Manager,然后會(huì)彈出Android SDK Manag

16、er對(duì)話框,選擇Virtual Devices,按new按鈕創(chuàng)建虛擬設(shè)備,填出相關(guān)信息。如圖2.3.5所示。圖2.3.2 SDK設(shè)置2.4 設(shè)置注釋的風(fēng)格大家都知道注釋是非常重要的,而且在團(tuán)隊(duì)中,統(tǒng)一注釋風(fēng)格是最為重要的,要是沒有統(tǒng)一好,當(dāng)導(dǎo)入同伴寫的文件時(shí),不僅注釋會(huì)成為亂碼,導(dǎo)進(jìn)的文件也會(huì)報(bào)錯(cuò),而且錯(cuò)誤原因不明。所以,我們要統(tǒng)一注釋的風(fēng)格:Window->Preferences->General->Editors->Text Editors->Spelling.將Encoding選為Default(GBK).如圖2.4.1所示。圖2.4.1 注釋風(fēng)格2.5 新

17、建一個(gè)簡(jiǎn)單的工程File->New->Project->Android->Android Application Project->Next,之后填寫新建工程的名字還有包名。如圖2.5.1所示。圖2.5.1 新建工程建立出的一個(gè)空的比較著名的Android程序HelloWorld如圖2.5.1所示。圖2.5.1 Helloworld2.6 分別在虛擬機(jī)和真機(jī)上測(cè)試在虛擬機(jī)中運(yùn)行:選中項(xiàng)目,右擊選擇Run As(或直接點(diǎn)擊菜單欄上的Run)->Android Application即可。在真機(jī)上運(yùn)行:連接上數(shù)據(jù)線,打開手機(jī)USB調(diào)試模式(設(shè)置->應(yīng)用程序

18、->開發(fā)->點(diǎn)擊”USB調(diào)試”),打開手機(jī)助手,連接手機(jī)(一般360手機(jī)助手會(huì)提示并在線自動(dòng)安裝手機(jī)所需要的驅(qū)動(dòng)),選擇Choose a running Android device(若已連接成功,則下方會(huì)有你當(dāng)前測(cè)試的手機(jī)型號(hào)),然后選擇OK。2.7 PhotoshopPhotoshop是一款用于處理圖像的軟件,通過這款軟件使用一些工具處理圖片,使圖片更加美觀,而且還能在圖片上添加所需要的文字信息。2.8 下載PhotoshopPhotoshop官方下載地址:3 Android平臺(tái)3.1 AndroidAndroid是一個(gè)包含操作系統(tǒng)、應(yīng)用程序以及中介架構(gòu)層所產(chǎn)生出來(lái)的軟件堆棧架

19、構(gòu)。Android的核心是嵌入式Linux系統(tǒng),搭配Google公司為Android開發(fā)的類庫(kù),Android運(yùn)行時(shí),再配合應(yīng)用程序架構(gòu),以此來(lái)開發(fā)各種不同的應(yīng)用程序。3.2 Android架構(gòu)分析圖3.1.1 Android架構(gòu)如圖3.1.1所示11,就是Android架構(gòu)的五大部分。3.2 Android構(gòu)成一個(gè)完整的Android應(yīng)用程序,一般是由Activity、IntentReceiver、Service、Content Provider四個(gè)部分的組成。Activity,活動(dòng),是一個(gè)有生命周期的對(duì)象 。Android 程序員可以決定一個(gè) Activity 的“生”,但不能決定它的“死

20、”,也就時(shí)說程序員可以啟動(dòng)一個(gè) Activity,但是卻不能手動(dòng)的“結(jié)束”一個(gè) Activity。12如圖3.2.1所示。圖3.2.1 ActivityIntent,意圖,此機(jī)制是Android用來(lái)協(xié)助應(yīng)用間的交互與通訊,它負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,而Android就根據(jù)Intent的描述去完成相關(guān)調(diào)用。而IntentReceiver則使用NotificationManager通知用戶,需在AndroidManifest.xml中注冊(cè),或者在代碼中使用Context.registerReceiver()來(lái)進(jìn)行注冊(cè)。Service,服務(wù),是運(yùn)行在后臺(tái)的一段代碼。

21、一般分為本地服務(wù)和遠(yuǎn)程服務(wù)這兩種。本地服務(wù)(Local Service)應(yīng)用于應(yīng)用程序的內(nèi)部??梢哉{(diào)用Context.startService()啟動(dòng),調(diào)用Context.stopService()結(jié)束。而遠(yuǎn)程服務(wù)(Remote Service)不是應(yīng)用于應(yīng)用程序的外部,而是應(yīng)用于android系統(tǒng)內(nèi)部的各個(gè)應(yīng)用程序之間。ContentProvider,內(nèi)容提供者,是用來(lái)提供對(duì)設(shè)備上的數(shù)據(jù)進(jìn)行訪問。ContentResolver的query() 和 Activity 對(duì)象的 managedQuery()這兩個(gè)方法可以用來(lái)查詢Content Provider的方法。Broadcast,廣播,廣播

22、接收器需手動(dòng)實(shí)現(xiàn),需先繼承BroadcastReceiver,然后重寫里面的onReceiver方法??梢源a動(dòng)態(tài)生成廣播接收器,它不是常駐型廣播,跟隨著程序的生命周期;也可以在AndroidManifest.xml中配置廣播,它是常駐型廣播,關(guān)閉應(yīng)用程序后,即時(shí)有信息廣播來(lái),應(yīng)用程序也會(huì)被系統(tǒng)調(diào)用自動(dòng)運(yùn)行。應(yīng)用程序使用時(shí),需要在AndroidManifest.xml配置文件中進(jìn)行配置。每個(gè)Android項(xiàng)目都會(huì)自動(dòng)生成一個(gè)配置文件,該文件定義了應(yīng)用程序的構(gòu)成和工作程序,是系統(tǒng)的控制文件。如圖3.2.2所示。圖3.2.3 配置文件工作圖4 Android旅伴的總體設(shè)計(jì)4.1 研究目標(biāo)(1) 了

23、解Android應(yīng)用程序的設(shè)計(jì)和開發(fā)過程;(2) 使用多種組建進(jìn)行Android旅伴軟件的開發(fā)。本項(xiàng)目是使用Java語(yǔ)言在Eclipse上開發(fā)的一款A(yù)ndroid手機(jī)上的智慧旅游軟件,主要包括幾個(gè)重要的界面,分別是:首頁(yè)(Home Page)、導(dǎo)航(及菜單)(Guide)、我的旅行(MyTrip)、推薦旅行(RecommenedTrip)、我(User)等。如圖4.1.1所示,是該軟件的設(shè)計(jì)框架。圖4.1.1 框架4.2 需求分析本軟件是Android平臺(tái)的一個(gè)智慧旅行助手軟件,打開程序后能查看用戶本人的旅游安排及行程,也能查看軟件推薦的其他用戶比較熱衷、推薦的旅游安排,以及該軟件所推薦的幾個(gè)

24、廣告。從上面的描述中就可以基本了解了該軟件的功能需求:(1)首先是用戶自己的旅行安排,每個(gè)用戶都要有旅行安排,則用戶就需要個(gè)ID來(lái)以示區(qū)分;(2)其次是他人推薦的旅行,這些都該從服務(wù)器上來(lái)獲??;各個(gè)城市的圖片、景點(diǎn)、住宿、飲食、交通、娛樂、特產(chǎn)等相關(guān)信息,既然有交通,就需要獲取用戶與目的地所距距離,這就需要用到相關(guān)GPS功能;各個(gè)城市的景點(diǎn)需具有相關(guān)的導(dǎo)游解說信息,這些也是從服務(wù)器上獲?。荒苤苯釉谲浖蠈?duì)相關(guān)飲食、住宿等消費(fèi)進(jìn)行可支付性;4.3 UI界面設(shè)計(jì)根據(jù)需求分析可以知道,應(yīng)用程序需應(yīng)包含五個(gè)主要的用戶界面。這里就進(jìn)一步分析每個(gè)界面中應(yīng)該顯示哪些內(nèi)容。在首頁(yè),簡(jiǎn)單顯示著廣告部分、我的旅行

25、、推薦旅行及周邊旅行的相關(guān)信息,都可點(diǎn)擊進(jìn)入相關(guān)界面。而在主菜單,則羅列著各個(gè)功能。如圖4.3.1所示,為用戶界面草圖。圖4.3.1 用戶界面草圖4.4 程序模塊設(shè)計(jì)從功能需求上分析可以看出,整個(gè)應(yīng)用程序應(yīng)劃分為五個(gè)功能模塊,分別是主菜單、我的旅行、推薦旅行、景點(diǎn)介紹、我的相關(guān)資料。在主菜單能進(jìn)入到各種設(shè)置、各種界面。我的旅行里面是用戶自己的旅行安排表及其他相關(guān)信息。而推薦旅行則與景點(diǎn)介紹相連,由相關(guān)城市導(dǎo)入相關(guān)的景點(diǎn),并根據(jù)用戶的GPS定位獲取與用戶最近的景點(diǎn)及交通、餐飲、娛樂等相關(guān)信息,若用戶已經(jīng)在景點(diǎn)內(nèi),則會(huì)出現(xiàn)相關(guān)景點(diǎn)的導(dǎo)游解說。我的相關(guān)資料就包括了用戶的賬戶信息。4.5 軟件功能軟件

26、的載入頁(yè)面也略微介紹了本軟件,包括了軟件名、版本號(hào)、公司網(wǎng)址,還有相關(guān)廣告。當(dāng)然,軟件載入成功后,首先進(jìn)入的就是首頁(yè),在首頁(yè),可以點(diǎn)擊我的旅行、導(dǎo)游及周邊旅行。在我的界面里,用戶可以登錄,輸入用戶的手機(jī)號(hào)碼或者郵箱及密碼即可登錄。若沒有賬號(hào),可以輸入用戶的電子郵箱或手機(jī)號(hào)碼獲取驗(yàn)證碼進(jìn)行注冊(cè)。只有在登錄的情況下才可以進(jìn)入我的旅行界面。在我的旅行界面,可以看到推薦旅行或者是用戶自己創(chuàng)建的旅行。由于公司還有相關(guān)網(wǎng)頁(yè),手機(jī)上的信息可以和網(wǎng)站上用戶的信息進(jìn)行同步查看。用戶可以對(duì)自己的旅行進(jìn)行安排,也可以看到網(wǎng)上其他用戶推薦的旅行安排。這樣就方便用戶出門旅行。給自己的旅行安排起一個(gè)名稱,帶出你旅游的好心

27、情,然后選擇自己的目的地城市,填寫出發(fā)日期,這樣你的旅行安排就建立啦!然后在你的安排里記錄下交通、景點(diǎn)、住宿、餐飲、娛樂、購(gòu)物或者事件。這樣你的安排就一目了然了。如果用戶到了某一城市,就會(huì)根據(jù)GPS定位獲取用戶所在位置,然后計(jì)算出最方便最合適的交通方式,提供最近的景點(diǎn)路線。如若用戶到達(dá)了某一景點(diǎn),則會(huì)提示景點(diǎn)的相關(guān)導(dǎo)游真人解說,讓用戶對(duì)景點(diǎn)有了更進(jìn)一步的了解,而且還省掉了一大筆的費(fèi)用。4.6 文件結(jié)構(gòu)與用途在程序的開發(fā)階段,根據(jù)程序模塊設(shè)計(jì)的內(nèi)容我先設(shè)計(jì)了數(shù)據(jù)庫(kù)說明文檔和數(shù)據(jù)庫(kù)設(shè)計(jì)文檔,如圖4.6.1和圖4.6.2所示。然后確定了“Android智慧旅游助手軟件開發(fā)”的工程名為TripFrie

28、nd。下面表4.6.1是關(guān)于本項(xiàng)目的主要類名以及其功能的匯總表。表4.6.1 類及類名功能匯總表類名類功能HomePage首頁(yè),包括了我的旅行、推薦旅行、周邊等信息MainPage主菜單,對(duì)所有界面的匯總,能夠跳轉(zhuǎn)進(jìn)入任意一個(gè)界面。MyTrip我的旅行,對(duì)用戶的旅行根據(jù)旅行名稱及時(shí)間安排成表。RecomTrip推薦旅行,根據(jù)城市名進(jìn)行相關(guān)推薦,包括城市介紹、景點(diǎn)住宿等。CircumTrip周邊旅行,根據(jù)用戶的地理位置計(jì)算出最近的景點(diǎn)及交通信息。Android的資源文件保存在/res的子目錄中。其中/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是用來(lái)自定義

29、字符串和顏色的文件,/res/xml目錄中保存的是XML格式的數(shù)據(jù)文件。圖4.6.1 功能說明圖4.6.2 設(shè)計(jì)文檔4.7 程序主要代碼4.7.1 載入頁(yè)面首先創(chuàng)建一個(gè)新的名為“TripFriend”的Android程序,我查詢資料后考慮到使用本項(xiàng)目的用戶的手機(jī)的版本可能較低,而且百度地圖移動(dòng)版只能使用在Android SDK1.5以及以上,所以我只是選擇了較低的版本:Android 2.2。開始編寫程序時(shí),我首先設(shè)置了該程序的載入頁(yè)面。因?yàn)橛脩舻谝粋€(gè)接觸該軟件的就是軟件的載入頁(yè)面。這個(gè)功能對(duì)使用者來(lái)說就是一個(gè)持續(xù)1,2秒鐘的等待頁(yè)面。而且程序會(huì)在用戶等待的同時(shí)做一些必要的檢查以及數(shù)據(jù)準(zhǔn)備工作

30、。在此我僅是用UI實(shí)現(xiàn)了下。我把頁(yè)面所需的背景、版本號(hào)、名稱以及廣告經(jīng)過Photoshop工具進(jìn)行處理分別作為圖片,需要時(shí)即時(shí)插入。由于本人的審美觀以及設(shè)計(jì)水平都為一般,所以只是把需要的先做下,以后方便專業(yè)人士修改。由于廣告部分要到最后才設(shè)置,所以我先不設(shè)置廣告部分。PS圖片后將圖片放入項(xiàng)目的res/drawable-mdpl文件夾內(nèi),該文件主要放置中等分辨率的圖片,因?yàn)锳ndroid系統(tǒng)會(huì)根據(jù)機(jī)器的分辨率來(lái)尋找對(duì)應(yīng)的圖片。完成圖片資源的設(shè)置后就在res/layout文件內(nèi)進(jìn)行編寫,這個(gè)layout采用RelativeLayout控件作為頂層控件,然后用ImageView控件分別實(shí)現(xiàn)版本號(hào)圖片

31、頂部靠左對(duì)齊顯示、軟件名稱居中偏上對(duì)齊。如圖所示。圖 TripFriend載入頁(yè)面在layout中的activity_main.xml中代碼如下:<RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="dimen/activity_vertical_margin&qu

32、ot; android:paddingLeft="dimen/activity_horizontal_margin" android:paddingRight="dimen/activity_horizontal_margin" android:paddingTop="dimen/activity_vertical_margin" tools:context=".MainActivity" > <ImageView android:id="+id/imageView1" androi

33、d:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:src="drawable/a" /> <RelativeLayout android:layout_width="fill_parent" android:l

34、ayout_height="262dp" android:layout_alignParentTop="true" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src=&qu

35、ot;drawable/ver" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:src="drawable/name" /> </RelativeLayout>

36、;</RelativeLayout>我還考慮到了用戶在使用該軟件時(shí)手機(jī)是橫屏還是豎屏。這樣背景圖就需要分別使用兩張相應(yīng)的圖片。獲取屏幕是否橫屏的代碼如下:public static int ScreenOrient(Activity activity) int orient = activity.getRequestedOrientation(); if(orient != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE && orient != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)

37、/寬>高為橫屏,反正為豎屏 WindowManager windowManager = activity.getWindowManager(); Display display = windowManager.getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeight(); orient = screenWidth < screenHeight ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : ActivityI

38、nfo.SCREEN_ORIENTATION_LANDSCAPE; return orient; 然后就需要編寫一個(gè)名為AutoBackground的公共方法來(lái)實(shí)現(xiàn)其屏幕背景的自動(dòng)切換,而且在后面每一個(gè)功能的后面都會(huì)使用到該方法:public static void AutoBackground(Activity activity,View view,int Background_v, int Background_h) int orient=ScreenOrient(activity); if (orient = ActivityInfo.SCREEN_ORIENTATION_PORTRAI

39、T) /縱向 view.setBackgroundResource(Background_v); else /橫向 view.setBackgroundResource(Background_h); 完成該方法后在MainActivity的onCreate方法中調(diào)用AutoBackground方法進(jìn)入屏幕調(diào)換:LinearLayout layout=(LinearLayout)findViewById(R.id.layout);/背景自動(dòng)適應(yīng)AndroidHelper.AutoBackground(this, layout, R.drawable.bg_v, R.drawable.bg_h);

40、134.7.2 sqlite數(shù)據(jù)庫(kù)內(nèi)庫(kù)、表的創(chuàng)建本項(xiàng)目是設(shè)想當(dāng)用戶打開軟件顯示載入頁(yè)面的時(shí)候軟件開始檢查sqlite庫(kù)中山否已經(jīng)保存有用戶的UserID、Password的記錄。如果記錄為空,則說明用戶是第一次使用本軟件。則軟件從載入頁(yè)面跳轉(zhuǎn)到用戶注冊(cè)界面。如果有記錄,則讀取記錄后調(diào)用接口從服務(wù)器獲取這些記錄對(duì)應(yīng)的用戶信息,包括了用戶的旅游安排。該功能涉及到了sqlite數(shù)據(jù)庫(kù)的創(chuàng)建、數(shù)據(jù)表的創(chuàng)建、數(shù)據(jù)記錄的添加以及數(shù)據(jù)記錄的讀取等操作,如圖4.7.1所示,我新建了一個(gè)名為SqliteHelper.java的類文件來(lái)完成sqlite的數(shù)據(jù)表的創(chuàng)建及更新。圖 SqliteHelpe

41、r代碼如下:/用來(lái)保存UserID,Password的表名public static final String TB_NAME = "users"public SqliteHelper(Context context, String name, CursorFactory factory,int version) super(context, name, factory, version);/ TODO Auto-generated constructor stub/創(chuàng)建表Overridepublic void onCreate(SQLiteDatabase db) / T

42、ODO Auto-generated method stubdb.execSQL("CREATE TABLE IF NOT EXISTS" +TB_NAME+"("+UserInfo.ID+" integer primary key,"+UserInfo.USERID+" varchar,"+UserInfo.PASSWORD+" varchar,"+UserInfo.USERNAME+" varchar,"+UserInfo.USERIMAGE+" blob&qu

43、ot;+")");Log.e("Database", "onCreate");/更新該表Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) / TODO Auto-generated method stubdb.execSQL("DROP TABLE IF EXISTS" + TB_NAME);onCreate(db);Log.e("Database", "onUpgrade&

44、quot;);/更新列public void updateColum(SQLiteDatabase db, String oldColumn, String newColumn, String typeColumn)trydb.execSQL("ALTER TABLE" +TB_NAME + " CHANGE " +oldColumn + " "+ newColumn +" " + typeColumn);catch(Exception ex)ex.printStackTrace();建立一個(gè)UserInfo類,將

45、user的信息進(jìn)行封裝。如圖所示。圖 UserInfo然后就再建立了一個(gè)名為DataHelper.java的類文件來(lái)實(shí)現(xiàn)用戶記錄的創(chuàng)建、刪除、更新等。如圖所示:圖 DataHelper代碼如下:/數(shù)據(jù)庫(kù)名稱private static String DB_NAME = "mytripfriend.db"/數(shù)據(jù)庫(kù)版本private static int DB_VERSION = 1;private SQLiteDatabase db;private SqliteHelper dbHelper;public DataHel

46、per(Context context)dbHelper = new SqliteHelper(context,DB_NAME,null,DB_VERSION);db = dbHelper.getWritableDatabase();public void Close()db.close();dbHelper.close();/獲取userInfo表中的UserID、Password的記錄public List<UserInfo> GetUserList(Boolean isSimple)List<UserInfo> userList = new ArrayList&l

47、t;UserInfo>();Cursor cursor = db.query(SqliteHelper.TB_NAME, null, null, null, null, null, UserInfo.ID+"DESC");cursor.moveToFirst();while(!cursor.isAfterLast() && (cursor.getString(1)!= null)UserInfo user = new UserInfo();user.setId(cursor.getString(0);user.setUserId(cursor.getS

48、tring(1);user.setPassword(cursor.getString(2);if(!isSimple)user.setUserName(cursor.getString(3);ByteArrayInputStream stream = new ByteArrayInputStream(cursor.getBlob(4);Drawable img = Drawable.createFromStream(stream, "image");user.setUserImage(img.toString();userList.add(user);cursor.move

49、ToNext(); cursor.close();/關(guān)閉游標(biāo)return userList;/判斷userInfo表中的是否包含某個(gè)UserID的記錄 public Boolean HaveUserInfo(String UserId) Boolean b=false; Cursor cursor=db.query(SqliteHelper.TB_NAME, null, UserInfo.USERID + "=" + UserId, null, null, null,null); b=cursor.moveToFirst(); Log.e("HaveUserInf

50、o",b.toString(); cursor.close(); return b; /更新userInfo表的記錄,根據(jù)UserId更新用戶昵稱和用戶圖標(biāo) public int UpdateUserInfo(String userName,Bitmap userImage,String UserId) ContentValues values = new ContentValues(); values.put(UserInfo.USERNAME, userName); / BLOB類型 final ByteArrayOutputStream os = new ByteArrayOu

51、tputStream(); / 將Bitmap壓縮成PNG編碼,質(zhì)量為100%存儲(chǔ) userIpress(Bitmap.CompressFormat.PNG, 100, os); / 構(gòu)造SQLite的Content對(duì)象,這里也可以使用raw values.put(UserInfo.USERICON, os.toByteArray(); int id= db.update(SqliteHelper.TB_NAME, values, UserInfo.USERID + "=" + UserId, null); Log.e("UpdateUserInfo2"

52、,id+""); return id; /更新userInfo表的記錄 public int UpdateUserInfo(UserInfo user) ContentValues values = new ContentValues(); values.put(UserInfo.USERID, user.getUserid(); values.put(UserInfo.PASSWORD, user.getPassword(); int id= db.update(SqliteHelper.TB_NAME, values, UserInfo.USERID + "=

53、" + user.getUserid(), null); Log.e("UpdateUserInfo",id+""); return id; /添加users表的記錄 public Long SaveUserInfo(UserInfo user) ContentValues values = new ContentValues(); values.put(UserInfo.USERID, user.getUserid(); values.put(UserInfo.PASSWORD, user.getPassword(); Long uid = db.insert(SqliteHelper.TB_NAME, UserInfo.ID, values); Log.e("SaveUserInfo",uid+""); return uid; /刪除users表的記錄 public int DelUserInfo(String UserId) int id= db.delete(SqliteHelper.TB_NAME, UserInfo.USERID +"="+UserId, null); Log.e("D

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論