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

下載本文檔

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

文檔簡介

1、南京鐵道職業(yè)技術(shù)學(xué)院畢 業(yè) 論 文題 目: Android智慧旅游助手軟件開發(fā) 作 者: 貝晶 學(xué) 號: 05312100233 二級學(xué)院: 軟件學(xué)院 系 : 軟件技術(shù)系 專 業(yè): 軟件技術(shù)(安卓) 班 級: 軟件技術(shù)(安卓)1003 指導(dǎo)者: 張衛(wèi) 副教授 評閱者: 2013 年 5 月畢業(yè)設(shè)計(論文)中文摘要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),而且對于源代碼具有開放性,這就對于iphone相較于有優(yōu)勢。如今大家的生活節(jié)奏相對較快,很多人為了緩解心情,會選擇去一些名勝古跡旅游。基于這兩點,本此設(shè)計選擇了Java語言開發(fā)的一個應(yīng)用于Android手機(jī)的智慧旅游助手軟件-旅伴。以前在旅行前總是需要制定一個繁復(fù)的計劃,包括了行程、消費(fèi)、交通查詢等等,而有了旅伴,當(dāng)用戶使用此軟件時,能明確知道自己的所在位置,附近的景點、如何在最短時間內(nèi)到達(dá)該景點,以及在該景點附近的飲食及住宿信息。當(dāng)用戶位于景點區(qū)時,能聽到景區(qū)的專業(yè)導(dǎo)游解說關(guān)于這個項目,我使用了Android中BaiduMap、GPS定位等功能。關(guān)鍵詞 Android 旅游畢業(yè)設(shè)計(論文

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 頁 共 33 頁目 次1 引言22 項目開發(fā)工具及環(huán)境搭建32.1 Eclipse32.2 下載搭建Eclipse環(huán)境所需的資料(及工具包)32.3安裝及配置環(huán)境32.4 設(shè)置注釋的風(fēng)格62.5 新建一個簡單的工程72.6

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

9、oid版本已經(jīng)更新至3.0了,而且android在全球的市場份額已經(jīng)超過諾基亞的塞班系統(tǒng),榜上第一名,而且有很多家手機(jī)公司加盟,使用Google公司發(fā)布的android操作系統(tǒng)。再當(dāng)我們專業(yè)老師偶然向我們提到android的時候,我就已經(jīng)認(rèn)定想要好好學(xué)習(xí)android軟件開發(fā)了。如今,人們對手機(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,將移動設(shè)備的通用技術(shù)和圖形用戶界面技術(shù)分開,符合了潮流的個性化,而且研發(fā)成本較低,具有強(qiáng)大的開放性。可惜就是兼容性較差。2.Palm OS,是專門用于掌上電腦Plam的操作系統(tǒng),在推出時就超過了蘋果的Newton,因此而名聲大噪,后被IBM、Sony、Handspring獲得授權(quán),被使用在其產(chǎn)品中。但不支援多工處理。23.Android,Google開發(fā)的基于Linux平臺的開源手機(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)軍移動設(shè)備領(lǐng)域與諾基亞合作的重大調(diào)整。Windows Phone 8(WP8)是微軟最新發(fā)布的全新移動操作系統(tǒng),由于內(nèi)核的變更,Windows Phone 7.5是無法升級到WP8的。6目前,android是全球智能手機(jī)用戶使用最多的操作系統(tǒng),因此,基于android開發(fā)的軟件是非常受歡迎的。因此,本次畢業(yè)設(shè)計選擇了使用Java語言開發(fā)的一個

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

13、對于Eclipse來說,一切都是插件,所有功能都以插件的形式附于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)地址:選擇適合平臺的安裝文件,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、“我的電腦”->選擇“屬性”->選擇“高級”->點擊“環(huá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”驗證是否安裝成功。如圖2.3.3所示:圖2.3.3 java-version將下載好的Eclipse壓縮包解壓,打開其“eclipse”程序,關(guān)閉wel

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

16、er對話框,選擇Virtual Devices,按new按鈕創(chuàng)建虛擬設(shè)備,填出相關(guān)信息。如圖2.3.5所示。圖2.3.2 SDK設(shè)置2.4 設(shè)置注釋的風(fēng)格大家都知道注釋是非常重要的,而且在團(tuán)隊中,統(tǒng)一注釋風(fēng)格是最為重要的,要是沒有統(tǒng)一好,當(dāng)導(dǎo)入同伴寫的文件時,不僅注釋會成為亂碼,導(dǎo)進(jìn)的文件也會報錯,而且錯誤原因不明。所以,我們要統(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、建一個簡單的工程File->New->Project->Android->Android Application Project->Next,之后填寫新建工程的名字還有包名。如圖2.5.1所示。圖2.5.1 新建工程建立出的一個空的比較著名的Android程序HelloWorld如圖2.5.1所示。圖2.5.1 Helloworld2.6 分別在虛擬機(jī)和真機(jī)上測試在虛擬機(jī)中運(yùn)行:選中項目,右擊選擇Run As(或直接點擊菜單欄上的Run)->Android Application即可。在真機(jī)上運(yùn)行:連接上數(shù)據(jù)線,打開手機(jī)USB調(diào)試模式(設(shè)置->應(yīng)用程序

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

19、構(gòu)。Android的核心是嵌入式Linux系統(tǒng),搭配Google公司為Android開發(fā)的類庫,Android運(yùn)行時,再配合應(yīng)用程序架構(gòu),以此來開發(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)成一個完整的Android應(yīng)用程序,一般是由Activity、IntentReceiver、Service、Content Provider四個部分的組成。Activity,活動,是一個有生命周期的對象 。Android 程序員可以決定一個 Activity 的“生”,但不能決定它的“死

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

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

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

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

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

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

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

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

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

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

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

31、頂部靠左對齊顯示、軟件名稱居中偏上對齊。如圖所示。圖 TripFriend載入頁面在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>我還考慮到了用戶在使用該軟件時手機(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; 然后就需要編寫一個名為AutoBackground的公共方法來實現(xiàn)其屏幕背景的自動切換,而且在后面每一個功能的后面都會使用到該方法: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);/背景自動適應(yīng)AndroidHelper.AutoBackground(this, layout, R.drawable.bg_v, R.drawable.bg_h);

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

41、r代碼如下:/用來保存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();建立一個UserInfo類,將

45、user的信息進(jìn)行封裝。如圖所示。圖 UserInfo然后就再建立了一個名為DataHelper.java的類文件來實現(xiàn)用戶記錄的創(chuàng)建、刪除、更新等。如圖所示:圖 DataHelper代碼如下:/數(shù)據(jù)庫名稱private static String DB_NAME = "mytripfriend.db"/數(shù)據(jù)庫版本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表中的是否包含某個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%存儲 userIpress(Bitmap.CompressFormat.PNG, 100, os); / 構(gòu)造SQLite的Content對象,這里也可以使用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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論