版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于Android平臺的個人日歷的設計與開發(fā)</p><p><b> 摘要</b></p><p> 個人日歷是基于Android平臺開發(fā)的,運行在Android手機平臺的個人日程管理軟件。本文是對基于Android平臺的個人日歷的設計與開發(fā)。</p><p> 首先,本文介紹了軟件開發(fā)的背景與特點。然后,本文介紹
2、了軟件所使用的關鍵技術,包括Android、fragment、service、activity。再然后,介紹日歷的設計與開發(fā),包括系統需求分析、功能設計、框架設計、界面設計、數據層設計以及各部分功能的實現。最后本文對全文進行總結,總結設計實現過程中遇到的問題、系統的不足、優(yōu)勢與自己的收獲。</p><p> 關鍵詞:個人日歷、Android、日程管理</p><p> The desi
3、gnationand development of personal calendar based on the Android platform</p><p><b> Abstract</b></p><p> Personal calendar is a personal schedule management software developed on
4、the Android platform, running on the Android platform. This paper is to design and develop of personal calendar based on the Android platform.</p><p> First, this paper introduces the background and charact
5、eristics of software development. Then, this paper introduces the key technologies of software use, including Android, fragments, service, activity. Then, introduces the design and development of calendar, including syst
6、em requirements analysis, functional design, framework design, interface design, the data layer design and the realization of the function of each part. Finally this paper summarizes the full text, summarizes the problem
7、s in </p><p> Keyword: Personal calendar, Android, schedule management</p><p><b> 緒論</b></p><p><b> 課題背景</b></p><p> 在現代的生活中,人們每天要處理的事務越來越多。
8、如何有效的管理自己每天的日程安排,已經變得越來越重要。[1]尤其在團隊工作中,更需要相互協調以提高整體效率。[2] 在生活中中重要事件多半以電話、短信、郵件的方式發(fā)送,</p><p> 手機中的通訊錄、短信以及其余重要數據的丟失,影響恐怕就難以估量了,由于那意味著會丟掉一些重要的短信。[3] 因此日程管理軟件,一直深受人們的喜愛 。但是 ,傳統的日歷工具設計和功能千篇一律,僅能管理自己的日程。</p&
9、gt;<p> 本軟件可以定時或實時從后臺數據庫中通過Web Services下載與個人有關的日歷信息,并能夠根據設定的提醒方式和提醒時間自動提醒用戶注意相關日程安排。</p><p><b> 研發(fā)現狀</b></p><p> 國內外Android軟件現狀</p><p> Android平臺是Google公司推出的基
10、于Linux系統一款移動操作平臺。雖然只推出沒有幾年但發(fā)展迅速,尤其在國外Android更是呼聲很高,占據了相當大的市場份額。中國是最大的消費大國,由于3G網絡的推廣更加推動了智能手機的發(fā)展,這幾年個打手機場上都對Android工程師需求量很大。未來幾年Android發(fā)展會更為迅猛,它將不再只是個手機平臺,他將進入平板、電視、車載系統等。</p><p><b> 日歷軟件發(fā)展現狀</b>
11、</p><p> 目前許多日歷軟件,他們可以實現各種各樣的功能,如今日運勢、紀錄日程、黃歷、吉日查詢、法定節(jié)假日查詢、生理周期日歷、星座查詢、生肖查詢、陰陽轉換等。外表也更加美觀,各式各樣的更能滿足人們對日歷軟件的需要。有些還提供各種美觀的小插件,是日歷使用更加方便美觀。不過這些軟件均僅能管理個人日程,不能獲得其他管理軟件的日程。</p><p><b> 軟件研究意義&l
12、t;/b></p><p> Android平臺是Google公司推出的基于Linux系統一款移動操作平臺。該平臺具有開放性、不受運營商束縛、有豐富的硬件選擇、不受限制的開發(fā)和與谷歌應用可以無縫結合等優(yōu)勢,現在已漸成為主流的智能手機平臺。鑒于Android平臺仍是一個較新的開發(fā)平臺,仍有很大的發(fā)展空間,國內外很多運營商和軟件公司都急需該平臺的開發(fā)人員。通過本次畢業(yè)設計可以很好的鍛煉學生實踐能力,同時也為學
13、生就業(yè)創(chuàng)造條件。</p><p><b> 研究內容與方法</b></p><p><b> 研究內容</b></p><p> 個人日歷后臺軟件系統主要實現用戶個人日歷和企業(yè)日歷數據的存儲、手機日歷端、PC日歷端與后臺系統日歷項的同步、OA及項目管理等系統與日歷系統的接口等功能。通過后臺系統,用戶可以隨時將手機中的
14、日歷信息保存到后臺數據庫中,也可以隨時同步后臺數據庫中與自身相關的日歷信息;OA及項目管理系統中的日程安排也能夠自動同步到后臺系統和手機端。</p><p> 手機日歷客戶端主要實現企業(yè)日歷信息的月視圖、周視圖、日視圖、日歷列表、新增日歷、節(jié)假日、日歷同步等功能。手機日歷客戶端軟件可以定時或實時從后臺數據庫中通過Web Services下載與個人有關的日歷信息,并能夠根據設定的提醒方式和提醒時間自動提醒用戶注意
15、相關日程安排。用戶也可以在手機上新建日程或工作安排,并將其發(fā)送到服務器端,然后通過后臺管理軟件自動同步到相關人員的手機上,實現工作安排的自動通知和自動提醒。</p><p><b> 研究方法</b></p><p> 本系統用軟件工程化思想和方法開發(fā)軟件,對軟件進行了軟件計劃、需求分析、設計和實現。</p><p><b>
16、需求分析</b></p><p> 根據實際情況獲得需求信息并進行總結,提出軟件的功能。</p><p><b> 軟件設計</b></p><p> 根據需求分析進行框架設計、界面設計、數據庫設計。</p><p><b> 軟件實現</b></p><p&
17、gt; 根據設計文檔實現軟件。</p><p><b> 相關技術與知識</b></p><p> 開發(fā)平臺Android</p><p> Android是一個基于Linux的操作系統。自推出以來Android平臺迅猛發(fā)展,占據了巨大的市場份額,而且發(fā)展速度越來越快。目前Android手機銷量約占全球三分之一,成為世界上最大的Andr
18、oid手機市場。</p><p> Android的開發(fā)語言是Java。從全球來看從事Java編程的人數一直占據著第一的位置。而iPhone應用的開發(fā)語言是Object C,從事Object C編程的人才剛剛步入前十。并且Android上手容易,經過幾個月的培訓即可掌握安卓的開發(fā)技巧,并且安卓手機較為便宜,平臺免費。</p><p> 在中國Android擁有很好的學習環(huán)境和許多開發(fā)社
19、區(qū),其中一些驚顫舉辦安卓開發(fā)者活動,一起交流技術和經驗,并且免費發(fā)放學習資料更課題了解到做什么養(yǎng)的安卓應用可以賺錢,是開發(fā)者不在迷茫。。</p><p><b> MVC開發(fā)模式</b></p><p> Android應用是基于模型控制器視圖(Model-View-Controller,簡稱MVC)的架構模式進行設計的。 在MVC設計模式中,應用的任何對象歸根結
20、底都是模型對象、視圖對象以及控制對象中的一種。</p><p> 模型對象存儲著應用的數據和業(yè)務邏輯。模型類通常被用來映射與應用相關的一些事物。模型對象不關心用戶界面,它存在的唯一目的就是存儲和管理應用數據。</p><p> 視圖對象需要知道如何繪制界面、如何處理用戶和界面的互動。以往的經驗法則表明,只要是屏幕上可以看得的就是視圖對象。</p><p> 控
21、制對象包含了應用的邏輯單元,是聯系視圖與模型對象的紐帶。控制對象被設計用來響應由視圖對象觸發(fā)的各類事件,此外還用來管理模型對象與視圖層間的數據流動。</p><p> 局部界面fragment</p><p> 自從Android3.0引入fragment概念之后,fragment被解釋為碎片或者片段。一個fragment是用戶界面的一個區(qū)域,可以再一個Activity中使用多個fra
22、gment來組合成一個多面板界面,也可以在不同的Activity中利用同一個fragment??梢园裦ragment理解為一個模塊化部分,他有自己的生命周期、可以獨立的接受用戶的操作,并可以在Activity運行過程中添加或刪除一個fragment。</p><p> 管理用戶界面的fragment又稱為UI fragment。它也可以自己產生布局文件。 fragment視圖包含了用戶會用到的一些的可視化UI元
23、素。</p><p> Web service</p><p> Web service是一個平臺獨立的,低耦合的,自包含的、基于可編程的web的應用程序,可使用開放的XML標準來描述、發(fā)布、發(fā)現、協調和配置這些應用程序,用于開發(fā)分布式操作的應用程序。[1] </p><p> Web Service技術, 能使得運行在不同平臺上的不同應用不用借助第三方軟件或
24、硬件就可相互交換數據。更具Web Service規(guī)范發(fā)布的應用之間, 不管他們是用什么語言開發(fā)的、運行在什么平臺上的都能相互交換數據。Web Service減少了應用接口的花費。</p><p> Localservice</p><p> Service是安卓四大組件之一,它是可以長時間在后臺運行并且需要提供用戶接口的應用組件。在啟動一個應用的服務后即使在啟動其他的應用之前的服務依舊
25、會運行。并且其他非service組件也可以與service綁定并進行交互,甚至允許多線程交互。本地服務不是獨立的進程,它依附在主進程上這樣可以節(jié)省資源。</p><p> Service有兩種形式:</p><p> 啟動形式:通過調用startService()方法啟動服務,通過這種方式啟動的service即使啟動它的Activity已經被銷毀它也會一直在后臺運行。但是它只能執(zhí)行單一
26、的操作不能返回結果給調用者。通過調用stopService()來停止服務。</p><p> 綁定形式:通過調用bindService()方法啟動服務,通過這種方式啟動的服務會為它所綁定的組件一個交互接口,通過這個接口應用組件可以與service交互、請求結果、甚至跨進程通信。但是當組件被銷毀后service也就銷毀了。通過調用unbindService()停止服務。</p><p>&
27、lt;b> SQLite數據庫</b></p><p> SQlite是一種輕量級的、功能強大關系數據庫,它用于完成實現結構化的數據存儲和各種復雜的數據處理。</p><p> SQlite數據庫支持多數的SQL92標準,最大支持數據到2TB。他沒有服務進程,但是它所包含的數據庫、表等所有數據已經被放入Android系統平臺的底層庫文件,因此我們可以直接通過相關的A
28、PI來調用,從而實現數據庫的各種功能。</p><p><b> 線程</b></p><p> 線程是進程內部執(zhí)行代碼的實體,他是CPU調度資源的最小單元,他沒有自己獨立的資源,他只有自己的執(zhí)行堆棧和局部變量,所以線程不能獨立執(zhí)行不許依附在一個進程上。</p><p> Thread:重寫其run()方法,在其中實現我們需要線程所要完成
29、的任務。在Activity中實例化并通過start()運行線程。在線程運行過程中如果需要更新UI可通過handler發(fā)消息給主線程。</p><p> AsyncTask:他是一種簡單實現后臺運行事物的方式。他的任務在UI縣城之外運行,而回調方法是在UI線程中執(zhí)行,這樣就可以有效的避免了使用Handler所帶來的麻煩。AsyncTask是一個抽象類,要使用它必須繼承這個類并重寫其中的方法。</p>
30、<p><b> 開發(fā)平臺介紹</b></p><p><b> 開發(fā)工具</b></p><p> Eclipse,adt,Visual Studio2010,SQL Server 2008</p><p><b> 開發(fā)語言</b></p><p>&l
31、t;b> Java,C#</b></p><p><b> 測試平臺</b></p><p> Android手機,Win7</p><p><b> 個人日歷的設計</b></p><p><b> 需求分析</b></p><
32、p><b> 對功能的規(guī)定</b></p><p> 本軟件要求將辦公自動化平臺(OA)系統中涉及日程的項目推送到手機終端軟件中。其基本的數據相關流程如圖3-1-1所示。</p><p> 圖 3-1-1 日歷系統結構圖</p><p> 其中“手機日歷”模塊完成在手機終端(Android平臺)中的顯示日歷、新建日歷等功能,并提供
33、手動/定時與中心數據庫同步日歷的功能。</p><p> 中心數據庫模塊完成從OA系統、項目管理系統中抽取與日期相關的日程項,并整理為標準的日歷格式后向手機端推送日歷,要求使用Web服務的形式提供接口。</p><p><b> 對性能的規(guī)定</b></p><p><b> 精度</b></p>&l
34、t;p> 時間戳精確到1毫秒;</p><p> 周視圖、日視圖日程項的時間精度為15分鐘。</p><p> 提前提醒的時間精度為1分鐘,即不支持小于1分鐘的時間提醒;</p><p><b> 時間特性要求</b></p><p> 手機向中心服務器讀寫數據網絡超時響應時間:10秒,若超過10秒沒有取
35、回數據則退出;</p><p> 手機端本地數據庫查詢超時:3秒;</p><p> 面之間切換延時:不超過2秒;</p><p><b> 靈活性</b></p><p> 本軟件系統前臺手機端與后臺服務器端采用Web服務方式通信,可以減少防火墻的配置工作以及具有良好的可擴充性。</p><
36、p> 手機端軟件與后臺系統之間通過Web Services進行通信,只要接口信息不發(fā)生改變,手機端界面和功能的變化不影響后臺系統的開發(fā)和使用。</p><p><b> 輸入輸出要求</b></p><p> 后臺服務器端提供的Web服務的參數類型包括字符串和整型兩類,結果以自定義類對象列表的形式返回。</p><p><b&
37、gt; 數據管理能力要求</b></p><p> 中心數據庫采用SQL Server2008數據庫,有很強的數據存儲和管理能力,完全能夠勝任個人日歷系統的數據要求。另外,Web服務發(fā)布在IIS上,其并發(fā)訪問由IIS負責,多人同時進行同步不存在問題。</p><p><b> 故障處理要求</b></p><p> 本系統可
38、能在下列情況下出現故障,待相關問題解決后,本系統能夠重新正常運行:</p><p> 用戶手機不能正常聯網時,會影響到日歷信息上傳和同步的實時性;</p><p> 安裝中心數據庫的計算機出現故障或網絡連接不暢時,會影響系統的穩(wěn)定運行;</p><p><b> 運行環(huán)境規(guī)定</b></p><p><b&g
39、t; 設備</b></p><p> 設備需求情況將分別從前臺手機端和后臺服務端說明:</p><p> Android設備運行要求:</p><p> 支持Android2.2平臺及以上,運行內存大于512M,系統存儲空間大于128M(用于存數據庫),屏幕分辨率大于800*400,具備聯網功能的手機。</p><p>&
40、lt;b> 服務器運行要求:</b></p><p> 需要一臺性能較好的服務器(操作系統Windows 2003 Server,內存4G、硬盤512G、雙網卡),安裝數據庫服務器和IIS服務器,其上運行后臺同步程序和Web服務。</p><p><b> 支持軟件</b></p><p> 服務器端開發(fā)所用到的支持軟
41、件包括:</p><p> Windows 2003 Server</p><p> Microsoft SQL Server2008</p><p><b> 功能設計</b></p><p><b> 總體框架設計</b></p><p> 個人日歷系統包含手機
42、端(Android)和服務器端兩部分組成。</p><p> 系統的總體結構圖如下圖所示:</p><p> 信息系統的內網通過SOA應用服務器的80端口連接到InterNet網,再通過無線加密通信將信息送到Android手機上。</p><p> SOA是一種面向服務的軟件架構,是當前先進的軟件結構。SOA對外以80為服務端口,易于配置防火墻。SOA架構借用
43、現有的HTTP應用服務器的并發(fā)控制,可靠、安全。</p><p> 用一覽表及框圖的形式說明本系統的系統元素(各層模塊、子程序、公用程序等)的劃分,扼要說明每個系統元素的標識符和功能,分層次地給出各元素之間的控制與被控制關系.</p><p> Android端手機軟件的程序結構圖為:</p><p> Android程序由手機界面顯示程序、手機服務程序兩部分
44、組成。手機主程序完成主日歷視圖、新建日程視圖、日程查看視圖、假期查看視圖;手機后臺服務程序則完成狀態(tài)欄提醒、桌面插件更新、后臺數據更新等功能。</p><p> 手機主視圖界面由月視圖、周視圖、日視圖、三個視圖組成。這三個視圖共享一個Android Activity,當用戶切換視圖時動態(tài)生成視圖單元格。</p><p><b> 日歷信息獲取過程:</b><
45、/p><p> 分析現有的信息服務系統,找到工作項子系統;</p><p> 分析工作項子系統的數據庫,設計查詢日歷項的存儲過程(SQL編寫);</p><p> 將存儲過程映射為WebService(C#或者Java編寫);</p><p> 將Web服務部署在應用服務器上(IIS或者Tomcat);</p><p&
46、gt; 移動設備通過Web服務讀寫日歷信息。</p><p><b> 功能列表</b></p><p><b> 導航欄設計</b></p><p> 導航欄由8個圓形按鈕構成,他們的功能分別為查看月視圖、查看周視圖、查看日視圖、將日期跳到今天、查看假期、添加日程、同步日程。</p><p&g
47、t;<b> 月視圖設計</b></p><p> 該視圖在整個屏幕上提供整月的信息查看,并且可左右滑動顯示上一月和下一月的日期信息,該視圖的最小操作單位為天,字體隨手機分辨率自動設定。</p><p> 月視圖分為三部分:頭部日期標識、月主視圖、日程列表。</p><p> 頭部日期標識分為兩部分:日期顯示、農歷陽歷轉換</p&
48、gt;<p> 月主視圖:上方為周一至周日導航;下方顯示一個月的日單元格,日單元格可以顯示公歷和可選顯示農歷,單元格有日程項則顯示一個標記,單擊日單元格顯示當日日程項,雙擊或者長按日單元格可以在當日新建一個日程項。用戶可以根據日單元格的不同來判斷是否為今天(有圓圈)、假期(藍色)、所選中的日期(綠色)、是否有日程安排(右上方紅色三角)、非本月(灰色)。</p><p> 日程列表:顯示所點擊日期
49、的日程信息(主題、時間、地點、是否完成),并支持上下滑動查看日程,點擊可產看詳細信息。</p><p><b> 周視圖設計</b></p><p> 該視圖提供整周日程的查看功能,并且可左右滑動顯示上一周和下一周的日期信息,字體隨手機分辨率自動設定。</p><p> 周視圖分為兩部分頭部日期標識、周主視圖。</p>&l
50、t;p> 頭部日期標識分為兩部分:日期顯示、農歷陽歷轉換</p><p> 周主視圖:上方為周一到周日導航,點擊可跳轉到顯示那天的日視圖;下方顯示一周七天、每天24小時的日程信息和當日的全天日程。單擊小時單元格可查看當時日程,雙擊或者長按小時單元格可新建一個日程項。</p><p><b> 日視圖設計</b></p><p>
51、該視圖提供一天的日程查看功能,并且可左右滑動顯示上一周和下一周的日期信息,字體隨手機分辨率自動設定。</p><p> 日視圖分為兩部分:日期標識、日主視圖。</p><p> 頭部日期標識分為兩部分:日期顯示、農歷陽歷轉換</p><p> 日主視圖:顯示一天的全天任務、每天24小時的日程信息,單擊小時單元格可查看當時日程,雙擊或者長按小時單元格可新建一個日
52、程項。不同緊急程度的任務使用不同的背景顏色。日程項顯示主題、地點。每小時的任務太多,單元格太小、則盡量顯示更多的文字。</p><p><b> 列表視圖設計</b></p><p> 列表視圖提供從今天開始的100條日歷,支持上下滑動查看前后的日程項。日程項之間使用日歷時間欄區(qū)分,日歷時間欄要求顯示年月日和星期。默認顯示從今天開始的100個日程,并提供主題關鍵字
53、檢索功能。點擊一個日程項可產看詳細信息。</p><p> 新建、查看、修改、刪除日程</p><p> 可以新建一個日程;查看一個日程的詳細信息,修改或者刪除日程。</p><p><b> 假期</b></p><p> 可查看從今天開始的一年的假期。</p><p><b>
54、; 同步功能</b></p><p> 可通過web srvice同步日程新到本地數據庫。分為手動同步和自動同步兩種。</p><p><b> 菜單</b></p><p> 設置:可以設置Web服務地址、同步數據的頻率、網絡超時時間。個人的姓名和編號的注冊和注銷。</p><p><b>
55、; 退出:退出程序。</b></p><p><b> 桌面插件</b></p><p> 該視圖提供一個桌面查看,便于用戶快捷查看今天開始的10條日程,點擊后可進入本軟件主程序。</p><p><b> 功能銜接</b></p><p> 打開本軟件主程序顯示月視圖,點擊導
56、航欄的“月”按鈕可由其他視圖跳轉回月視圖;點擊導航欄“周”按鈕可跳轉到周視圖;點擊周視圖的星期導航可跳轉到日視圖,點擊導航欄“日”按鈕可跳轉到日視圖。</p><p> 點擊導航欄“+”按鈕可添加日程,長按或雙擊月視圖的日單元格、周視圖和日視圖的小時單元格可添加日程。</p><p> 點擊導航欄“三”按鈕,可進入列表視圖,查看今天開始的日程。</p><p>
57、 點擊月視圖的日程列表和列表視圖的日程項可進入查看日程詳細信息界面,在查看頁面可點擊“刪除”按鈕刪除個人日歷信息,點擊“修改”按鈕修改日程信息。</p><p><b> 按菜單鍵彈出菜單。</b></p><p><b> 數據層設計</b></p><p><b> 數據庫設計</b>&l
58、t;/p><p> 手機端sqilite數據庫:</p><p> 本系統中,設計了表:</p><p> 該表是程序運行過程中常用到的一些變量的配置的存儲。</p><p> 該表用于存儲日程信息,以CalendarId為主鍵,存儲時按照StartTime、EndTime、ID排序。</p><p> 該表用來
59、保存更新歷史,用于同步日程信息使用。</p><p> 后臺服務數據庫的結構:</p><p> 本系統中,設計了表:Table_UserManager(人員表)、Table_CalendarManage (日歷表) 、Table_User_CalendarRelation (人員、日歷關系表)來存儲日歷系統中涉及到的相關人員、日歷項及日歷項涉及到的人員等信息。各表的結構定義分別如下:
60、</p><p> 注:表Table_CalendarManage和表Table_User_CalendarRelation之間通過字段CalendarId來關聯,是一對多的關系。生成日歷時,先在日歷表Table_CalendarManage中插入日歷信息記錄,然后再在表Table_User_CalendarRelation中生成人員的關聯信息。刪除日歷時,先從表Table_User_CalendarRelat
61、ion中刪除有關記錄,當不存在與CanlendarId關聯的人員信息時,將日歷記錄從Table_CalendarManage中刪除。</p><p><b> 數據緩沖</b></p><p> 月視圖的每個單元格類中都有一個ArrayList用于保存當天的CalendarItem(日程信息),這樣打開月視圖就把整個月的日程信息緩沖到了內存中。模型層新增一個Cal
62、endarItemLab對象,該對象是一個數據緩沖池用來存儲CalendarItem。點擊日單元格時將ArrayList賦值給CalendarItemLab的ArrayList,之后對CalendarItem的查看均使用CalendarItemLab。</p><p><b> 界面布局設計</b></p><p><b> 日視圖</b>&
63、lt;/p><p><b> 桌面插件</b></p><p><b> 個人日歷的實現</b></p><p><b> 數據層實現</b></p><p><b> 數據庫實現</b></p><p><b>
64、手機端數據庫:</b></p><p> Android使用ORMLite操作數據庫</p><p> 使用ormlite-android-4.41.jar和ormlite-core-4.41.jar兩個jar包,將這兩個包導入到Lib文件夾中。</p><p> 存儲的數據對象實體。</p><p><b>
65、代碼如下:</b></p><p> UpdateHistory 類</p><p> @DatabaseTable</p><p> public class UpdateHistory implements Serializable {</p><p><b> /**</b></p&g
66、t;<p><b> * UID</b></p><p><b> */</b></p><p> private static final long serialVersionUID = 5273337865132837182L;/**</p><p> * SqlLite自增ID</p&g
67、t;<p><b> */</b></p><p> @DatabaseField(generatedId = true)</p><p> Integer id = 0;</p><p><b> /**</b></p><p><b> * 最后同步時間<
68、/b></p><p><b> */</b></p><p> @DatabaseField</p><p> String updateID = "";</p><p><b> /**</b></p><p><b> *
69、最后同步時間</b></p><p><b> */</b></p><p> @DatabaseField</p><p> String AlterTime = "2000/01/01 00:00:00";</p><p><b> /**</b><
70、/p><p> * 界面點擊的日程項 ID值</p><p><b> */</b></p><p> @DatabaseField</p><p> String Click_CI_ID = "";</p><p> //一系列的get set方法</p>
71、<p><b> //省略</b></p><p><b> }</b></p><p> CalendarItem類</p><p><b> /**</b></p><p> * 日歷系統中的 日程項 基礎類,包含了日程項所有的數據信息和數據庫結構,
72、以后可以新增日程項的查詢、匹配等功能 </p><p> * @author GW </p><p><b> */</b></p><p> @DatabaseTable</p><p> public class CalendarItem implements Serializable {</p>
73、<p><b> /**</b></p><p><b> * UID</b></p><p><b> */</b></p><p> private static final long serialVersionUID = -7368152766202427185L;<
74、/p><p><b> }</b></p><p><b> /**</b></p><p> * SqlLite 自建ID</p><p><b> */</b></p><p> @DatabaseField(generatedId = tru
75、e)</p><p> Integer id = 0;</p><p><b> /**</b></p><p> * 遠程數據庫中心,日歷ID,主鍵</p><p><b> */</b></p><p> @DatabaseField(index = true)
76、</p><p> String CalendarId = "";</p><p><b> /**</b></p><p><b> * 主題</b></p><p><b> */</b></p><p> @Datab
77、aseField</p><p> String Topic = "";</p><p><b> /**</b></p><p><b> * 起始時間</b></p><p><b> */</b></p><p> @
78、DatabaseField(index = true)</p><p> String StartTime = "";</p><p><b> /**</b></p><p><b> * 結束時間</b></p><p><b> */</b>&
79、lt;/p><p> @DatabaseField(index = true)</p><p> String EndTime = "";</p><p> //按照設計的數據庫表寫,并注釋(此處部分省略)</p><p> //一系列的set get 方法 省略</p><p><b&g
80、t; }</b></p><p> ColorConfig 類</p><p> @DatabaseTable</p><p> public class ColorConfig implements Serializable{</p><p><b> /**</b></p>&
81、lt;p><b> * UID</b></p><p><b> */</b></p><p> private static final long serialVersionUID = 8216762882467739109L;</p><p><b> /**</b></p&g
82、t;<p> * 本地數據庫主索引ID</p><p><b> */</b></p><p> @DatabaseField(generatedId = true)</p><p> Integer id = 0;</p><p><b> /**</b></p>
83、;<p> * 是否正在使用該配置</p><p><b> */</b></p><p> @DatabaseField</p><p> Integer isUse = 1;</p><p> @DatabaseField</p><p> public String
84、 userID = "";</p><p> @DatabaseField</p><p> public String userName = "";</p><p> //按照設計的數據庫表寫,并注釋(此處部分省略)</p><p> //一系列的set get 方法 省略</p>
85、;<p><b> }</b></p><p> 注:@DatabaseTable 指定類對應的表名,@DatabaseField 對應的字段名,</p><p><b> 字段名注釋方法</b></p><p> cloumnName:指定字段名,不指定則變量名作為字段名</p>&l
86、t;p> canBeNull:是否可以為null</p><p> dataType:指定字段的類型</p><p> defaultValue:指定默認值</p><p> width:指定長度</p><p> id:指定字段為id</p><p> generatedId:指定字段為自增長的id
87、,不能id,generatedIdSequence通用</p><p> foreign 指定這個字段的對象是一個外鍵,外鍵值是這個對象的id</p><p> useGetSet:指定ormlite訪問變量使用set,get方法默認使用的是反射機制直接訪問變量</p><p> throwIfNull,如果空值拋出異常</p><p>
88、; persisted:指定是否持久化此變量,默認true</p><p> unique:字段值唯一</p><p> uniqueCombo整列的值唯一</p><p><b> index:索引</b></p><p> uniqueIndex 唯一索引</p><p> for
89、eignAutoRefresh 外鍵值,自動刷新</p><p> foreignAutoCreate 外鍵不存在時是否自動添加到外間表中</p><p> 需要數據DatabaseHelper類,來創(chuàng)建及管理數據庫。 DatabaseHelper類繼承OrmLiteSqliteOpenHelper,并在覆蓋實現onCreate, onUpgrade, close等方法。創(chuàng)建刪除數據庫
90、應該使用TableUtils工具類的方法.。</p><p> 構造數據訪問接口Dao類。</p><p><b> 代碼如下:</b></p><p> public class DatabaseHelper extends</p><p> com.j256.ormlite.android.apptools.
91、OrmLiteSqliteOpenHelper {</p><p><b> //數據庫名字</b></p><p> private static final String DATABASE_NAME = "KD.db";</p><p><b> /**</b></p><
92、p> * 當數據庫表結構修改時,增加該數值即可。</p><p><b> * 數據庫版本號</b></p><p><b> */</b></p><p> private static final int DATABASE_VERSION = 47;</p><p> priv
93、ate Dao<CalendarItem, Integer> calItemDao;</p><p> private Dao<ColorConfig, Integer> configDao;</p><p> private Dao <UpdateHistory, Integer> updateDao;</p><p>
94、public DatabaseHelper(Context context) {</p><p> super(context, DATABASE_NAME, null, DATABASE_VERSION,</p><p> R.raw.ormlite_config);</p><p><b> }</b></p><
95、p> //創(chuàng)建數據庫時調用 onCreats方法</p><p><b> @Override</b></p><p> public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {</p><p> // TODO Auto-generated method
96、 stub</p><p><b> try {</b></p><p> TableUtils.createTable(connectionSource, CalendarItem.class);</p><p> TableUtils.createTable(connectionSource, ColorConfig.class);&
97、lt;/p><p> TableUtils.createTable(connectionSource, UpdateHistory.class);</p><p> } catch (SQLException e) {</p><p> Log.e(DatabaseHelper.class.getName(), "Unable to create dat
98、bases",e);</p><p><b> }</b></p><p><b> }</b></p><p> //數據庫版本號變化時調用 onUpgrade 方法</p><p><b> @Override</b></p><p&g
99、t; public void onUpgrade(SQLiteDatabase sqliteDatabase,</p><p> ConnectionSource connectionSource, int oldVer, int newVer) {</p><p> // TODO Auto-generated method stub</p><p><
100、;b> try {</b></p><p> TableUtils.dropTable(connectionSource, CalendarItem.class, true);</p><p> TableUtils.dropTable(connectionSource, ColorConfig.class, true);</p><p>
101、 TableUtils.dropTable(connectionSource, UpdateHistory.class, true);</p><p> onCreate(sqliteDatabase, connectionSource);</p><p> } catch (SQLException e) {</p><p> Log.e(DatabaseH
102、elper.class.getName(),</p><p> "Unable to upgrade database from version " + oldVer+ " to new " + newVer, e);</p><p><b> }</b></p><p><b> }&l
103、t;/b></p><p><b> /**</b></p><p> * 獲取用戶信息接口DAO</p><p><b> * @return</b></p><p> * @throws SQLException</p><p><b> */&
104、lt;/b></p><p> public Dao<User, Integer> getUserDao() throws SQLException {</p><p> if (userDao == null) {</p><p> userDao = getDao(User.class);</p><p><
105、b> }</b></p><p> return userDao;</p><p><b> }</b></p><p><b> /**</b></p><p> * 獲取 日程項 信息接口DAO</p><p><b> * @re
106、turn</b></p><p> * @throws SQLException</p><p><b> */</b></p><p> public Dao<CalendarItem, Integer> getCalItemDao() throws SQLException {</p><p
107、> if (calItemDao == null) {</p><p> calItemDao = getDao(CalendarItem.class);</p><p><b> }</b></p><p> return calItemDao;</p><p><b> }</b>
108、;</p><p><b> /**</b></p><p> * 獲取 配置項 的Dao</p><p><b> * @return</b></p><p> * @throws SQLException</p><p><b> */</b&g
109、t;</p><p> public Dao<ColorConfig, Integer> getConfigDao() throws SQLException {</p><p> if (configDao == null) {</p><p> configDao = getDao(ColorConfig.class);</p>
110、<p><b> }</b></p><p> return configDao;</p><p><b> }</b></p><p><b> /**</b></p><p> * 返回最后更新的時間</p><p><b&
111、gt; * @return</b></p><p> * @throws SQLException</p><p><b> */</b></p><p> public Dao<UpdateHistory, Integer> getUpdateHistoryDao() throws SQLException {
112、</p><p> if (updateDao == null) {</p><p> updateDao = getDao(UpdateHistory.class);</p><p><b> }</b></p><p> return updateDao;</p><p><b&
113、gt; }</b></p><p><b> }</b></p><p> 構造數據庫操作類DbAdapter。在構造函數中先使用getHelper()獲得數據庫DatabaseHelper,然后使用getDao()獲得數據操作接口。在析構函數通過releseHelper()釋放數據庫,再通過Dao類的方法操作數據。這樣就可以使用DbAdapter的
114、方法操作數據,更加方便快捷。</p><p><b> 代碼如下:</b></p><p><b> /**</b></p><p> * 管理底層的數據服務,比如從數據庫刷新、寫回數據庫數據等</p><p> * @author GW</p><p><b&
115、gt; */</b></p><p> public class DbAdapter {</p><p> private DatabaseHelper databaseHelper = null;</p><p> Context parent;</p><p><b> /**</b></
116、p><p><b> * 構造函數</b></p><p> * @param context</p><p><b> */</b></p><p> public DbAdapter(Context context) {</p><p> this.parent =
117、 context;</p><p> calItemList.clear();</p><p> databaseHelper = getHelper();</p><p> if (databaseHelper != null) {</p><p><b> try {</b></p><p
118、> calItemDao = databaseHelper.getCalItemDao();</p><p> configDao = databaseHelper.getConfigDao();</p><p> updateHistoryDao = databaseHelper.getUpdateHistoryDao();</p><p> } c
119、atch (SQLException e) {</p><p> // TODO Auto-generated catch block</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p>
120、<p><b> }</b></p><p><b> /**</b></p><p><b> * 析構函數</b></p><p><b> */</b></p><p><b> @Override</b>
121、</p><p> protected void finalize() {</p><p> releseHelper();</p><p><b> }</b></p><p><b> /**</b></p><p> * 獲取默認的配置信息</p>
122、<p><b> * @return</b></p><p><b> */</b></p><p> public ColorConfig getUsingConfig() {</p><p><b> try {</b></p><p> List&
123、lt;ColorConfig> config_list;</p><p> config_list = configDao.queryForEq("isUse", 1);</p><p> if (config_list.size() > 0) {</p><p> config = config_list.get(0);<
124、;/p><p><b> } else {</b></p><p> config = new ColorConfig();</p><p> newOrUpdateColorConfig(config);</p><p><b> }</b></p><p> } c
125、atch (SQLException e) {</p><p> // TODO Auto-generated catch block</p><p> e.printStackTrace();</p><p><b> }</b></p><p> return config;</p><p
126、><b> }</b></p><p> public UpdateHistory getLastUpdateTime() {</p><p><b> try {</b></p><p> List<UpdateHistory> update_list;</p><p>
127、 update_list = updateHistoryDao.queryForEq("updateID", "888");</p><p> if (update_list.size() > 0) {</p><p> updateHistory = update_list.get(0);</p><p><
128、;b> } else {</b></p><p> updateHistory = new UpdateHistory();</p><p> updateHistory.updateID = "888";</p><p> newOrUpdateLastUpdateTime(updateHistory);</p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文范文——基于android平臺的日歷提醒軟件的設計與實現
- 畢業(yè)論文--基于android平臺的beatplane游戲開發(fā)
- 畢業(yè)論文(設計)基于android平臺的個人理財軟件的設計與實現
- android畢業(yè)論文--基于android短信平臺的管理與開發(fā)(含外文翻譯)
- 基于android平臺的天氣軟件開發(fā)畢業(yè)論文
- 基于android平臺的天氣軟件開發(fā)畢業(yè)論文
- 基于android平臺的天氣預報系統的設計與開發(fā)畢業(yè)論文
- android畢業(yè)論文--基于android平臺的商城
- 畢業(yè)論文—— 個人日志系統的設計與實現
- 基于android平臺開發(fā)的飛機射擊游戲-畢業(yè)論文
- 畢業(yè)論文——個人日志系統的設計與實現
- 畢業(yè)論文—— 個人日志系統的設計與實現
- 畢業(yè)論文-基于android平臺的車輛信息查詢系統的開發(fā)設計
- 畢業(yè)設計(論文)基于android的日歷系統的設計與實現
- 基于android平臺的手機計步器設計【畢業(yè)論文】
- 個人日程管理系統的設計與實現-畢業(yè)論文
- 基于android的日歷提醒軟件的設計與實現畢業(yè)論文最終版.doc
- android聊天系統畢業(yè)論文--基于android平臺的聊天系統設計與實現
- 基于android平臺個人日常賬目管理系統的設計和實現
- 基于android的茶葉銷售平臺設計與實現——畢業(yè)論文
評論
0/150
提交評論