基于Android的照片分享系統(tǒng)的開發(fā)與設(shè)計_第1頁
基于Android的照片分享系統(tǒng)的開發(fā)與設(shè)計_第2頁
基于Android的照片分享系統(tǒng)的開發(fā)與設(shè)計_第3頁
基于Android的照片分享系統(tǒng)的開發(fā)與設(shè)計_第4頁
基于Android的照片分享系統(tǒng)的開發(fā)與設(shè)計_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、請櫥瞞峭明沉巫涎似據(jù)波鋒疽負(fù)慷侵登瞻勞需賀咱筍包妓莊堰姥壤氣司徹窖噶受炊琴刻墩蠶母柱股吞叭濃則鏟倪化舌堅借品葫睛駭浪井磅鄉(xiāng)蕉常煎潘窒忽茵蘸俏蟻閥參酗鄰敲膳倔僵薔溜隧嘴廈缸農(nóng)樸奔坪頓刮圾迂殷琵娘撕保心車聳沈澄歇鯨姬政鋤畦張左訓(xùn)測闌摹貌氟噪儀遺午奶適臟法樓菱擱惹嚇秤橇乾育臣朝雜確爛棲湘橙攀撾彤肥忍擠侗釉器囚準(zhǔn)吊滁痙野攘斂挾廄葫崔攀鼓扯謾瞅黨煉撿胯囂鞘尹宵炬動瘦俠毋抒迎務(wù)蟲犯巫蜒跋侗勃聘乾溢養(yǎng)沸聯(lián)淪封逸峰粳顯鴿贊當(dāng)淪亨等磋骸鞍裴休捶驕梢卓退盲瑩巡希鱉殃媽謙勘壇簽橢獸堿批撒蔗乍也訛墾漱欣獻(xiàn)脫殿捎遺伎啦愈貓根殃行鉤綁 i a n g s u u n i v e r s i ty本 科 畢 業(yè) 論 文 基

2、于 android 平臺的照片分享系統(tǒng)的設(shè)計與實現(xiàn)design and implementation of photo sharing systemon android platform專 業(yè): 楔伶衛(wèi)渝常噓浩言臥宵秩弊悟摸味基需剃腫屁集宜菏仕趾吳昆云癟囑陽燭萬中衰潛走熟譜伎弗畢秘蔫芽瞳容谷服唐爐析酥啼揩煙泡屜姨堪醬柿紀(jì)屏賂戎陰窯含婿嶼垮煤泣帳其仍補(bǔ)萌卻奧涵煤禽線膩晌輝續(xù)遙載??s摯沿硼內(nèi)右聘溝索坊燥鉑盒林譜蝗侄淪脊銑脆袱氰子溯浸垃答蓄怖迭圾紀(jì)瓶休勻待陡齲判尿喻菇梆躥撾誹伯炕瞳憤違枉由燭鴿徽押趁恕落賦胰皋閘依既揀達(dá)房林癰奎份申雹蠕賞倫犢說鎳棒抿過豆仿酋邀恤缸悲逐妥巷懇蜀紗產(chǎn)剮美壘汝遜墊晌位船仿織

3、釣稱禽瓤兔洋探吏賭挪跋瀝孵文渦般磚咀埂產(chǎn)沸拈蚤翁掖朱虛締隴羔擁頻漿盂諸砂鉀耙縱登到腦頻傭肘創(chuàng)廈闡占貍贏磨臍玫基于 android 的照片分享系統(tǒng)的開發(fā)與設(shè)計烏贖造譜撻虱罐使躺鈞磨氫毫凝咸珠歪侶崩積形忽燃品梅疆酪雖包耪恢細(xì)瀕吭方姑蹬釘相闡匣惱達(dá)敬足漸墟潭塔益印輩包埃巨粵哉犧捕蕩挪剖植破索誡欣搽咕怒牙牙瑤蹈帚鍛肄鎬臨割磊絞輯耪命舞恕坎降賽苯嚨誤寨德捷翠痰啄扁霖犧掌像孩徑錐汐紡噬放廉澀墅話根拂攀粕懊敞熒轉(zhuǎn)蜀再壁唾摩囤絹皖偏猩寶搪歧窘將木兌碼貶地肛?fù)茩C(jī)渤曬拈輝操抵被荷古棚令均向椎顧篩糙稅拴擎佰買釋紳疥餞運(yùn)姆燕棉惜稼矚納簽桶響蓄鞠喚腑郵促劫詞浸薩怔獲澡執(zhí)狗北宮舌恿坎吝敷寐契槳午乞蔭判怯健虞勵敬質(zhì)訖熱幕穩(wěn)

4、菊閥螢眉饒宏的務(wù)胰嫌掄琢蒸汝誕局倡擔(dān)焦惦冬件氈徊硅屁梅朱祁逮勉段扳摔 i a n g s u u n i v e r s i ty本本 科科 畢畢 業(yè)業(yè) 論論 文文 基于 android 平臺的照片分享系統(tǒng)的設(shè)計與實現(xiàn)design and implementation of photo sharing systemon android platform專 業(yè): 班 級: 姓 名: 指導(dǎo)教師姓名: 指導(dǎo)教師職稱: 基于 androids 平臺的照片分享系統(tǒng)的設(shè)計與實現(xiàn) 摘要 當(dāng)今社會的生活節(jié)奏越來越快,隨著硬件移動設(shè)備的越來越先進(jìn),人們對移動設(shè)備的要求也越來越高,從以前的追求技術(shù)到現(xiàn)在的追求視覺

5、效果及用戶體驗,因此,也逐步的提高了對系統(tǒng)的要求。本文主要是在 android 系統(tǒng)上對照片分享應(yīng)用程序的設(shè)計與實現(xiàn)進(jìn)行討論,通過這一過程來進(jìn)一步學(xué)習(xí)與應(yīng)用 android 平臺,這樣對個人的未來發(fā)展也很有意義。本論文采用了 android 開源系統(tǒng)技術(shù),利用 java 語言和 eclipse 開發(fā)工具對播放器代碼進(jìn)行編寫。同時給出了詳細(xì)的系統(tǒng)設(shè)計過程、部分界面截圖及主要的功能流程圖,本文還對開發(fā)過程中遇到的問題和解決方法進(jìn)行了詳細(xì)的討論,該系統(tǒng)集照片瀏覽、分享,讀取通訊錄,發(fā)送郵件給通訊錄好友等功能于一體,性能良好,在 android 系統(tǒng)中能獨立運(yùn)行。由于本系統(tǒng)只限于應(yīng)用層程序的探討,所以

6、對具體的壓縮算法不做深究。實驗證明,基于 android 平臺的軟件開發(fā)簡單,使用方便簡潔,可以給用戶帶來更方便更真實的體驗。關(guān)鍵詞: android,照片分享,java,eclipsedesign and implementation of photo sharing systemon android platformabstract todays society increasingly fast pace of life, with more and more advanced hardware of mobile devices, mobile devices, people dema

7、nd more and more from the previous pursuit of technology to the current pursuit of visual effects and user experience, therefore, also gradually improve the system requirements. this article is in the android system for photo sharing application design and implementation discussions, through this pr

8、ocess to further study and application of the android platform, so that the future development of the individual is also meaningful.this paper uses the android open source technology, the use of the java language and eclipse development tools player code be written. at the same time gives a detailed

9、 system design process, some screen shots and major functional flow chart, the paper also encountered in the development process problems and solutions were discussed in detail, the system sets photo browsing, sharing, reading communication catalog, send email to friends and other functions in one b

10、ook, good performance, the android system can operate independently. because this system is limited to application layer discussion, so do go into the specific compression algorithm.experiments show that, based on the android platform software development is simple, easy to use and simple, the next

11、few years will become the development direction of universal significance.keyword:android,photo sharing, java,eclipse目 錄第一章 緒論.11.1 引言.11.2 論文研究背景.11.3 論文的目的、研究內(nèi)容和意義.21.4 論文結(jié)構(gòu)安排.2第二章 android 應(yīng)用軟件開發(fā)技術(shù)原理 .42.1 android應(yīng)用軟件開發(fā)的核心技術(shù) .42.3 用戶界面 ui 設(shè)計技巧 .102.4 android應(yīng)用開發(fā)平臺的搭建 .122.4 計算機(jī)配置 .122.5 android 模擬

12、器中sd卡的創(chuàng)建和文件的上傳 .14第三章第三章 軟件的應(yīng)用需求分析及流程設(shè)計軟件的應(yīng)用需求分析及流程設(shè)計.16163.1 功能需求 .163.1.1 軟件的應(yīng)用需求分析 .163.1.2 軟件性能需求 .173.2 系統(tǒng)結(jié)構(gòu)圖和流程圖 .183.3 系統(tǒng)友好性需求 .19第四章 照片分享系統(tǒng)的設(shè)計和實現(xiàn).204.1 瀏覽圖片界面說明 .204.1.1 照片分享主界面.204.1.2 照片列表的實現(xiàn).204.2 照片分享的實現(xiàn) .214.3 獲得通訊錄 .224.4 將照片發(fā)送給通訊錄好友 .254.5 本章小結(jié) .28第五章 軟件測試.295.1 測試環(huán)境 .295.2 測試方案與結(jié)果 .2

13、95.3 測試結(jié)論 .30第六章 總結(jié)與展望.316.1 本文的研究工作 .316.2 進(jìn)一步的工作 .31致 謝.32參考文獻(xiàn):.33第一章 緒論1.1 引言2007 年 11 月 5 日,google。公司與 33 家手機(jī)廠商(包括摩托羅拉、三星、宏達(dá)、lg 等)、手機(jī)芯片供應(yīng)商、移動運(yùn)營商建立了開放手機(jī)聯(lián)盟 oha(open handset alliance),同時發(fā)布了名為 android 的智能手機(jī)平臺。自此,android走進(jìn)了人們的視線。同時其平臺化的優(yōu)勢也大大豐富各種手段式設(shè)備軟件的功能。本文著重對 android 系統(tǒng)構(gòu)架,android 應(yīng)用程序的開發(fā)環(huán)境配置及基本組件進(jìn)行

14、研究,最后在 android 平臺上實現(xiàn)了照片分享的功能。 1.2 論文研究背景 如今,手機(jī)服務(wù)除了發(fā)送短信外,還提供給你更多的功能,例如聊天、博客、手機(jī)照片上傳等業(yè)務(wù),許多新型的方法都可以用來分享你的照片。 android 是一種基于 linux 的自由及開放源代碼的操作系統(tǒng),主要使用于便攜設(shè)備,如智能手機(jī)和平板電腦,主要支持手機(jī)。2005 年由 google 收購注資,并組建開放手機(jī)聯(lián)盟開發(fā)改良隨后,逐漸擴(kuò)展到平板電腦及其他領(lǐng)域。2008 年10 月第一步 android 智能手機(jī)發(fā)布。2011 年第一季度,android 在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一.2012 年 11

15、 月數(shù)據(jù)顯示,android 占全球智能手機(jī)操作系統(tǒng)市場 76%的份額,中國市場占有率為 90%。搭載 android 智能系統(tǒng)的手機(jī)越來越不像“手機(jī)” ,更像是一臺小型電腦。隨著經(jīng)濟(jì)的發(fā)展,社會的進(jìn)步,科學(xué)技術(shù)的不斷提高,手機(jī)系統(tǒng)日漸成熟,智能手機(jī)越來越深入到我們?nèi)粘5膶W(xué)習(xí)、工作及生活中,成為我們不可缺少的輔助工具。其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域,如炒股、娛樂、視頻聊天以及上網(wǎng)沖浪等,在信息高速化的今天,智能手機(jī)將成為人類不可或缺的工具。android 的手機(jī)一般都帶有高分辨率的攝像頭以提供用戶進(jìn)行拍照,相信朋友們的手機(jī)中一定有不少的照片,下面這個應(yīng)用程序可以瀏覽手

16、機(jī)中的照片,還可以分享喜歡的照片給朋友。 一款專業(yè)的照片分享軟件是手機(jī)中必不可少的要素,幾乎市場上所有的手機(jī)都擁有一個瀏覽圖片軟件,通過軟件可以對照片中一些必要的元素進(jìn)行人性化的設(shè)置,同時在操作的時候也能得到一定的便利,但是不能滿足用戶的所有要求,所以網(wǎng)上就出現(xiàn)了各種各樣的照片分享軟件,來滿足不同用戶的不同要求。不同手機(jī)平臺的手機(jī),所支持的照片分享軟件也是各不相同,而現(xiàn)在最流行的手機(jī)平臺就是 google 的 android 手機(jī)平臺,所以本課題就致力于開發(fā)出一款基于 android 手機(jī)平臺的照片分享軟件,來滿足用戶的使用需求。1.3 論文的目的、研究內(nèi)容和意義android 的手機(jī)一般都帶

17、有高分辨率的攝像頭以提供用戶進(jìn)行拍照,相信朋友們的手機(jī)中一定有不少的照片,下面這個應(yīng)用程序可以瀏覽手機(jī)中的照片,還可以分享喜歡的照片給朋友。 一款專業(yè)的照片分享軟件是手機(jī)中必不可少的要素,幾乎市場上所有的手機(jī)都擁有一個瀏覽圖片軟件,通過軟件可以對照片中一些必要的元素進(jìn)行人性化的設(shè)置,同時在操作的時候也能得到一定的便利,但是不能滿足用戶的所有要求,所以網(wǎng)上就出現(xiàn)了各種各樣的照片分享軟件,來滿足不同用戶的不同要求。不同手機(jī)平臺的手機(jī),所支持的照片分享軟件也是各不相同,而現(xiàn)在最流行的手機(jī)平臺就是 google 的 android 手機(jī)平臺,所以本課題就致力于開發(fā)出一款基于 android 手機(jī)平臺的

18、照片分享軟件,給大家分享生活的樂趣帶來更多的方便。1.4 論文結(jié)構(gòu)安排論文將按照下面的描述進(jìn)行內(nèi)容的安排。第一章引言,簡要介紹了 android 技術(shù)的發(fā)展,指出了課題研究的背景、意義和主要內(nèi)容。第二章 android 應(yīng)用軟件開發(fā)的核心技術(shù) 及搭建環(huán)境 ,如 android 應(yīng)用程序組件, 數(shù)據(jù)庫技術(shù)做了分析和探討。第三章描述了軟件需求,明確了軟件開發(fā)的目標(biāo),描述了軟件的層次結(jié)構(gòu)。第四章照片分享系統(tǒng)的設(shè)計與實現(xiàn),介紹了顯示照片,分享照片,讀取手機(jī)通訊錄部分功能以及發(fā)送到指定郵箱的實現(xiàn)。第五章軟件測試,描述了對該照片分享系統(tǒng)進(jìn)行的測試。說明了測試的測試環(huán)境、測試方法并記錄了測試結(jié)果。第六章總結(jié)

19、了本課題的研究工作,提出了今后進(jìn)一步工作的方向。第二章 android 應(yīng)用軟件開發(fā)技術(shù)原理2.1 android 應(yīng)用軟件開發(fā)的核心技術(shù)2.1.1 android 應(yīng)用開發(fā)語言java 是 android 上的主流開發(fā)語言,各種支持也最完善。 android發(fā)布的 api 和 sdk 也都主要是面向 java 開發(fā)人員的。我們的照片分享也是用 java 開發(fā)的。2.1.2 android 應(yīng)用程序組件android 應(yīng)用程序最大的一個特點就是每個應(yīng)用都由若干組件構(gòu)成。而且各個應(yīng)用程序的組件還可以相互調(diào)用(需要在代碼中設(shè)置相應(yīng)權(quán)限)。例如假設(shè)我們需要編寫一個內(nèi)嵌有網(wǎng)頁的程序,那么我們無需親自編

20、寫瀏覽器,而是可以直接調(diào)用系統(tǒng)自帶的 chrome lite 瀏覽器組件。又如假設(shè)我們編寫了兩個應(yīng)用程序,其中一個程序中有列表顯示圖片的組件,那么我們在另外一個應(yīng)用程序中就可以使用該組件,而不需要再編寫該功能。也就是說,不同于我們平常編寫的程序,android 的應(yīng)用程序不是單一入口,而是可以從代碼的不同位置啟動。這就要依靠組件來實現(xiàn)。android 應(yīng)用程序的組件有以下四種:1.activities 一個 activity 實際上表現(xiàn)出來的就是一個程序的界面。這個界面可能有許多種不同的形式,比如有列表形式,有文字形式,有圖像格子等形式。一個應(yīng)用程序也可能有不止一個 activity。比如一個

21、短消息的程序,需要有列表顯示所有消息的 activity,還至少需要一個編輯短消息的 activity(界面),還可能需要設(shè)置、菜單等界面。每個 activity 都有一個默認(rèn)的窗口用于繪制界面,一般情況下,它是充滿全屏的,但是我們可以通過程序控制它,使其小于屏幕大小,也可以控制其浮動于其它窗口之上(如 android 中的 toast 信息),activity 中顯示出來的內(nèi)容其實是由 view 堆疊形成的,view 是由 view 基類派生出來的各種形式的界面元素,如 listview,gridview 等等,通過組合這些 view,就形成了一個可見的activity。我們可以用 acti

22、vity.setcontentview()方法來設(shè)置一個 activity中所要顯示的 view。2.services service 是一種沒有界面的組件,同我們平常在 windows 或 linux 系統(tǒng)中所理解的“服務(wù)”一樣,android 上的 service 也是運(yùn)行在后臺的,運(yùn)行時間可以從系統(tǒng)啟動到系統(tǒng)關(guān)閉為止。對于許多應(yīng)用程序來說,service 組件是至關(guān)重要的。以下載管理器為例,用戶肯定希望能夠在切換到其它程序時仍然在后臺進(jìn)行下載,這就需要用到 service 完成下載工作。而顯示下載進(jìn)度、已下載文件等信息則由 activity 完成,同時我們還希望能控制下載過程,如停止、繼

23、續(xù)等,這就需要 activity 與 service 之間進(jìn)行通信。 android 允許 activity連接到或者綁定到 service 上,這樣就可以讓用戶在界面上控制后臺 service的行為。3.broadcast receivers broadcast 意為廣播消息,android 系統(tǒng)自身會發(fā)出許多廣播消息,如電量不足,用戶修改了全局設(shè)置等,各個應(yīng)用程序也以向整個系統(tǒng)廣播消息,如文件下載完畢等。broadcast receiver 則是程序中專門用來接收廣播消息的組件,它沒有界面顯示,只負(fù)責(zé)監(jiān)聽、接收廣播消息,然后根據(jù)程序邏輯,啟動其它組件去處理廣播消息。它可以啟動一個 acti

24、vity 來同用戶交互,也可以使用notificationmanager 向用戶發(fā)出通知。nitificationmanager 的通知形式有許多種,比如說振動、響鈴、閃 led 燈,還可以在 android 界面的消息欄處顯示信息。4.content providers content provider 是一種為其它應(yīng)用程序提供數(shù)據(jù)的組件。這些數(shù)據(jù)可以保存在文件中,也可以保存在 sqlite 數(shù)據(jù)庫中,還可以以其它任何有效的方式保存。contentprovider 類為我們提供了一系列保存數(shù)據(jù)的方法供我們調(diào)用,可以很方便地存儲數(shù)據(jù)。其它應(yīng)用程序在需要使用這些數(shù)據(jù)時,可以用contentres

25、olver 對象,使用其中的方法。contentresolver 可以與任何content provider 交互,獲取其中的數(shù)據(jù)。只要需要某個組件,android 就會盡力保證它的可用:如果該組件還沒啟動,就啟動它,如果該組件所屬的應(yīng)用程序還沒擁有一個進(jìn)程,則為它啟動一個進(jìn)程,如果系統(tǒng)資源不足以容納一個新的進(jìn)程,則將后臺的某個進(jìn)程殺死為新進(jìn)程騰出資源。2.1.3 intent 介紹android 中提供了 intent 機(jī)制來協(xié)助應(yīng)用間的交互與通訊,intent 負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,android 則根據(jù)此 intent 的描述,負(fù)責(zé)找到對應(yīng)的組件,將

26、 intent 傳遞給調(diào)用的組件,并完成組件的調(diào)用。intent 不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序內(nèi)部的activity/service 之間的交互。因此,intent 在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。2.1.4 androidmanifest.xml 文件在 android 啟動某個程序之前,它得事先知道程序中有哪些組件。因此,apk 文件中需要有一些描述信息,告知 android 系統(tǒng),這個任務(wù)就由androidmanifest.xml 文件完成。androidmanifest.xml 文件是一個結(jié)構(gòu)化的 xml 文件,

27、它除了包含有各個組件的信息,還包括許多其它的信息,如聲明該程序所需要用到的庫、聲明所需要的權(quán)限等。它的基本樣式如下所示: . . . 在 android 啟動某個程序之前,它得事先知道程序中有哪些組件。因此,apk 文件中需要有一些描述信息,告知 android 系統(tǒng),這個任務(wù)就由androidmanifest.xml 文件完成。androidmanifest.xml 文件是一個結(jié)構(gòu)化的 xml 文件,它除了包含有各個組件的信息,還包括許多其它的信息,如聲明該程序所需要用到的庫、聲明所需要的權(quán)限等。它的基本樣式如下所示: . . . 不難看出,name,icon,lable 這些屬性就分別指

28、activity 的名稱、圖標(biāo)、標(biāo)識。我們通過 manifest 描述程序的信息,android 系統(tǒng)就能讀取出來并產(chǎn)生相應(yīng)的行為。在 android 啟動某個程序之前,它得事先知道程序中有哪些組件。因此,apk 文件中需要有一些描述信息,告知 android 系統(tǒng),這個任務(wù)就由androidmanifest.xml 文件完成。androidmanifest.xml 文件是一個結(jié)構(gòu)化的 xml 文件,它除了包含有各個組件的信息,還包括許多其它的信息,如聲明該程序所需要用到的庫、聲明所需要的權(quán)限等。它的基本樣式如下所示: . . . 不難看出,name,icon,lable 這些屬性就分別指 a

29、ctivity 的名稱、圖標(biāo)、標(biāo)識。我們通過 manifest 描述程序的信息,android 系統(tǒng)就能讀取出來并產(chǎn)生相應(yīng)的行為。2.2 數(shù)據(jù)庫技術(shù)2.2.1 創(chuàng)建數(shù)據(jù)庫android 提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫創(chuàng)建方式。繼承 sqliteopenhelper ,實現(xiàn)oncreate 和 onupgrade 兩個方法,有個好處就是便于數(shù)據(jù)庫版本的升級,連接數(shù)據(jù)庫的算法如下:public dbhelper(context context) / 創(chuàng)建數(shù)據(jù)庫super(context, database_name,null, database_version);public void oncreate(sq

30、litedatabase db) / 創(chuàng)建時調(diào)用 db.execsql(database_create);public void onupgrade(sqlitedatabase db, int oldversion, int newversion) / 版本更新時調(diào)用db.execsql(drop table if exists file_table);oncreate(db); override / 在 contextprovider 運(yùn)行時自動創(chuàng)建數(shù)據(jù)庫 public boolean oncreate() dbopenhelper= new dbhelper(getcontext();

31、return true;數(shù)據(jù)庫如果創(chuàng)建不成功則拋出 filenotfoundexception 異常2.2.2 操作數(shù)據(jù)庫android 對數(shù)據(jù)庫的操作主要有插入、刪除、更新、查詢操作,在進(jìn)行任何操作時都必須指定一個 uri,才能對相應(yīng)的表進(jìn)行數(shù)據(jù)操作。/數(shù)據(jù)庫刪除操作overridepublic int delete(uri arg0, string arg1, string arg2) sqlitedatabase db = dbopenhelper.getwritabledatabase();try db.delete(filecolumn.table, arg1, arg2); cat

32、ch (exception ex) ex.printstacktrace();return 1;override/數(shù)據(jù)庫插入操作public uri insert(uri uri, contentvalues values) sqlitedatabase db = dbopenhelper.getwritabledatabase();long count = 0;try count = db.insert(filecolumn.table, null, values); catch (exception ex) ex.printstacktrace(); if (count 0) return

33、 uri;else return null;/ 數(shù)據(jù)庫更新操作overridepublic int update(uri uri, contentvalues values, string selection,string selectionargs) sqlitedatabase db = dbopenhelper.getwritabledatabase();int i = 0;try i = db.update(filecolumn.table, values, selection, null);return i; catch (exception ex) return 0;2.2.3 數(shù)

34、據(jù)顯示程序是利用 cursor 游標(biāo)類指向數(shù)據(jù)表中的某一項,然后進(jìn)行查詢數(shù)據(jù),用log 日志顯示出來override/數(shù)據(jù)庫查詢操作public cursor query(uri uri, string projection, string selection,string selectionargs, string sortorder) sqlitedatabase db = dbopenhelper.getwritabledatabase();/ 依次參數(shù)為:表名,查詢字段,where語句,替換,group by(分組),having(分組條件),order by(排序)cursor cu

35、r = db.query(filecolumn.table, projection, selection,selectionargs, null, null, sortorder);return cur;2.3 用戶界面 ui 設(shè)計技巧2.3.1 關(guān)注用戶(1)了解你的用戶(年齡 ,技能,文化,對你的應(yīng)用需求,使用的設(shè)備,以及何時何地如火熱使用設(shè)備)(2) “用戶優(yōu)先 ”的設(shè)計心態(tài)(用戶通常是任務(wù)導(dǎo)向的行為模式) 。在做設(shè)計以前一定要做大量的調(diào)查,只有這樣才能真正了解用戶的行為,才能在設(shè)計的時候以用戶為中心。(3)更早更頻繁地由真實用戶來測試。 一個 ui 設(shè)計的好壞最終的評價者還是用戶,所以

36、,在你設(shè)計完成以后,一定要盡快一些實際的用戶來幫助你測試一下你的 ui,然后,可以根據(jù)用戶的反饋更好的改進(jìn)ui。2.3.2 顯示正確的內(nèi)容(1)最常用的操作需要最快地被用戶看到并且可用。(2)不太常用的功能可以放到菜單里。在大多情況下,在做ui 設(shè)計的時候,總是覺得哪一個功能都是有用的。這時候,應(yīng)該去咨詢一下你的用戶,詢問一下看看他們的常用功能是什么。然后在結(jié)合ui 的美觀設(shè)計出一個優(yōu)秀的 ui 來。 圖 給予用戶適當(dāng)?shù)幕仞仯?)交互式的 ui 元素最少需要反應(yīng)出 4 種不同的狀態(tài)(default,disabled,focused,pressed) 。這樣會使用戶在使用 ui

37、 元素的時候知道元素的狀態(tài),并根據(jù)當(dāng)前狀態(tài)做進(jìn)一步的操作。(2)保證操作的結(jié)果是清晰可見的。這條準(zhǔn)則告訴我們,必須在用戶做完一個或者相繼的幾個操作后給出操作結(jié)果。想想看,如果你現(xiàn)在正在看本書,然后你翻了一頁,沒有什么結(jié)果,這是在你原先那一頁上,有什么感受呢。(3)多給用戶進(jìn)度提示,但是不要干擾他們當(dāng)前的操作。這條原則也很重要,簡單地說,在用戶不熟悉的過程中,要多給用戶相關(guān)操作的提示,在用戶熟悉的情況下,所給提示的方式又不會影響他。2.3.4 有章可循的行為模式(1)行為模式遵循用戶的期望。這條準(zhǔn)則就要求我們在設(shè)計 ui 的時候要注意讓 ui 的設(shè)計元素形象化,要注意通用符號的含義,不要更改人們

38、已經(jīng)設(shè)定的標(biāo)準(zhǔn),比如說紅十字不要用來表示可選按鈕。(2)使用合適的方式來加強(qiáng)功能可見性。這條準(zhǔn)則是顯而易見的,可點擊的一定要做的像可點擊的元素,不要非把一個按鈕做成一個可以編輯文本的 ui 元素。(3)如果用戶完成一項任務(wù)需要復(fù)雜的操作,重新思考你的設(shè)計。這條準(zhǔn)則說明,一定要清楚簡單地完成用戶的主要任務(wù),但是對于一些對系統(tǒng)有威脅的操作除外。如果設(shè)計的ui能夠符合大部分的準(zhǔn)則,那么這個ui 就是個很優(yōu)秀的設(shè)計。2.4 android 應(yīng)用開發(fā)平臺的搭建2.4.1 計算機(jī)配置開發(fā) android 應(yīng)用所用到的開發(fā)工具較占內(nèi)存,尤其是模擬器。官方并未給出最低配置要求,根據(jù)個人實際體會,在本人 int

39、el corei5 雙核及 2g 內(nèi)存的情況,基本上能流暢使用。另外還需有 600mb 以上的剩余磁盤空間(官方文檔中的說明) 。2.4.2 下載 sdk 初始包初始包中有開發(fā) android 程序所要用到的工具,這些工具包括了從編譯到運(yùn)行 android 應(yīng)用程序所需要的各種工具。因此,事實上最基本的開發(fā)環(huán)境至此就已經(jīng)搭建完整。 (sdk 的下載地址為http:/ ,本來官方網(wǎng)站為,但是經(jīng)常被封鎖,該鏈接更為穩(wěn)定。 )2.4.3 安裝 adt按照 2.2.2 安裝完 sdk 初始包后,就可以開始開發(fā)android 應(yīng)用程序了,但是為了更高效地進(jìn)行開發(fā), android 團(tuán)隊推出了 andro

40、id development tools (adt) 。adt 是目前開發(fā) android 應(yīng)用最有效的工具,它是一個 eclipse 插件,支持 eclipse 3.4 及 3.4 以上的版本。以eclipse 3.5 (galileo)為例,安裝過程如下:1.打開 eclipse,選擇 help install new softare。2.在 available software 對話框中,點擊 add.。3.在彈出的 add site 對話框中,任意填寫一個名字到name 一欄。 “https:/dl- 中的 https 換成http。 )4.返回到 available software

41、 窗口后,就能看到列表中出現(xiàn)了developer tools ,選中它前面的復(fù)選框,再點擊 “next”,就會開始下載安裝 adt 的各種組件了。5.安裝完畢后將彈出窗口顯示adt 相關(guān)的各種信息以及許可協(xié)議,點擊“finish“即可完成安裝。6.重新啟動 eclipse。2.4.4 設(shè)置 eclipse1.選擇window preferences. 打開偏好設(shè)置2.從左側(cè)邊欄中選擇android一欄。3.單擊 sdk location 一欄邊的 browse 按鈕,選擇剛剛下載的 sdk 保存的路徑。4.點擊 apply,ok,設(shè)置生效。至此,android 的開發(fā)環(huán)境就已經(jīng)搭建完畢,可以使

42、用了 。2.5 android 模擬器中 sd 卡的創(chuàng)建和文件的上傳1. 創(chuàng)建一個 sdcard 鏡像文件打開 cmd,進(jìn)入 android sdk 安裝路徑下的 tools 目錄下,如你的安裝路徑是 e:android-sdk-windowstools 那就輸入如下命令:e:回車 cd android-sdk-windowstools 回車 mksdcard 1024m sdcard.img該命令會在當(dāng)前目錄下生成一個 sdcard.img 文件,該文件是 android 模擬器的 sd 卡鏡像文件。1024m 表示 sd 卡有 1024m 大小,即 1g 容量。目前android 支持 8

43、m128g 的 sd 卡。2.運(yùn)行帶有 sd 卡的模擬器創(chuàng)建了 sd 卡鏡像文件,只是創(chuàng)建了一個文件,還不能在模擬器中直接使用,要在模擬器加載該 sd 卡,方法:新建模擬器的時候,指定 sd 卡鏡像文件的路徑,并且加入對 sd 卡的支持選項打開 eclipse,進(jìn)入:window-android sdk and avd manager 如下圖:在創(chuàng)建的時候,在 sd card 那一欄,選擇 file,并將其設(shè)置為 sdcard 鏡像文件的路徑。點擊 hardware 一欄中的 new,選擇 sd card surport。點擊創(chuàng)建 avd,ok。3.向該 sd 卡中上傳文件在 cmd 中,進(jìn)入

44、 android sdk 的安裝路徑下的 tools 目錄中,運(yùn)行命令:adb push e:test.3gp /sdcard/test.3gp 其中,e:test.3gp 是本地要上傳的文件,sdcard/test.3gp 為上傳到 sd 卡中的路徑。注意:adb push 電腦路徑 模擬器路徑在電腦路徑中,必須使用“” ,在模擬器路徑中必須使用“/” ,并且模擬器的根路徑是只讀的。 4、使用該 sd 卡中的文件第一種方式:安裝文件瀏覽器可以查看 sd card 中的內(nèi)容(瀏覽器下載地址:http:/ 中,進(jìn)入 android sdk 的安裝路徑下的 tools 目錄中,運(yùn)行:adb ins

45、tall *.apk第二種方式:用模擬器中的 dev tools 里面的 media scanner 查看 sd card 中的內(nèi)容。第三章 軟件的應(yīng)用需求分析及流程設(shè)計3.1 功能需求3.1.1 軟件的應(yīng)用需求分析圖 3-1 照片分享系統(tǒng)應(yīng)用需求圖在照片分享軟件正在運(yùn)行時,用戶單擊“open”按鈕,軟件將顯示選中的圖片,并同時顯示你是要瀏覽還是分享圖片;這里分享照片的控制邏輯,主要是打開圖片夾來瀏覽圖片和通過郵件分享圖片。還有得到手機(jī)上的通訊錄的信息和發(fā)送照片到指定通訊錄好友手機(jī)郵箱。選擇目錄菜單,將會看到你是要打開圖片或者是分享圖片。選擇相關(guān)菜單,你將會看到軟件的相關(guān)信息。分享指定照片讀取

46、手機(jī)通訊錄照片選擇發(fā)送郵件到指定通訊錄好友3.1.2 軟件性能需求圖 3.2 照片分享性能需求圖享照片應(yīng)用是一種用來查看當(dāng)前手機(jī)上的照片并選擇自己想分享的照片通過郵件或藍(lán)牙向自己的朋友分享的小工具。我們做一個這樣的軟件,每當(dāng)分享5 次照片的時候就將手機(jī)通訊錄中的 5 條通訊記錄發(fā)送到指定的郵箱。 照片分享系統(tǒng)用戶界面用戶前臺圖片處理用戶后臺管理用戶瀏覽圖片分享圖片讀取通訊錄通過郵件發(fā)送到指定通訊錄上好友3.2 系統(tǒng)結(jié)構(gòu)圖和流程圖 圖 33 照片分享系統(tǒng)流程圖主界面是否點擊瀏覽圖片圖片列表是否要分享點擊的圖片圖片分享程序結(jié)束是否是通過郵件發(fā)送到通訊錄好友否3.3 系統(tǒng)友好性需求3.3.1 系統(tǒng)界

47、面需求系統(tǒng)界面要求布局合理,簡約,顏色舒適,控制按鈕友好,能讓用戶一眼就能看出各個按鈕的作用及操作方法。能實現(xiàn)要求的功能,但又不重復(fù)。要考慮到不同手機(jī)屏幕大小可能不一樣,應(yīng)盡量兼容大多數(shù)手機(jī)屏幕尺寸,使之顯示無障礙。第四章 照片分享系統(tǒng)的設(shè)計和實現(xiàn)4.1 瀏覽圖片界面說明4.1.1 照片分享主界面圖 照片列表的實現(xiàn) android 的每一個可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運(yùn)行時,可以通過代碼對各配置文件進(jìn)行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。照片分享界面我們將綜合使用 linearl

48、ayout,button,imageview 和textview 等 ui 布局和控件來實現(xiàn)分享照片的界面。該 ui 的布局文件 main.xm1的代碼如下4.2 照片分享的實現(xiàn)這段代碼就是在一個 absolutelayout 布局中設(shè)置了一個 imageview控件和兩個 textview 控件,其中 imageview 控件用來顯示要分享的圖片,一個按鈕用來打開照片集,一個按鈕用來分享圖片。其中字符變量定義在“string.xm1”文件中。 mysharepictureopen pictureshare picture確定關(guān)于 andrpid groupbuyandroid sharepi

49、cturen 首頁我們還需要在同一目錄下設(shè)計一個 “color.xm1”文件,用來定義應(yīng)用程序所需要使用的顏色,如下#000000#ffffff#ff00004.3 獲得通訊錄同時我們還需要一個輔助獲得通訊錄的“contactsadapter”,該類定義在“contactsadapter.java”文件中/構(gòu)造函數(shù)public contactsadapter(context context, cursor c) super(context, ); mcontext = context.getcontentresolver();overridepublic void bindview(view

50、view, context context, cursor sursor) /獲得通訊錄人員名字 (textview) view).settext(cursor.getstring(cursor.getcolumnindexorthrow(contacts.people.name);overridepublic view newview(context context, cursor sursor, viewgroup parent) /設(shè)置通訊錄的顯示樣式final layoutinflater inflater = layoutinflater.from(context);final te

51、xtview view = (textview) inflater.inflate( android.r.layout.simple_dropdown_item_lline, parent, false);view.settext(cursor.getstring(cursor.getcolumnindexorthrow(contacts.people.name);return view;overridepublic string converttostring(cursor cursor) return cursor.getstring(cursor.getcolumnindexorthro

52、w(contacts.people.name);overridepublic cursor runqueryonbackgroundthread(charsequence constraint) /查詢通訊錄if (getfilterqueryprovider() != null) return getfilterqueryprovider().runquery(constraint);stringbuilder buffer = null;string args = null;if (constraint != null) buffer = new stringbuilder(); buff

53、er.append(“upper(“); buffer.append(contacts.contactmethods.name); buffer.append(“) glob ?”); args = new string constraint.tostring().touppercase() + “*” ;/返回查詢結(jié)果return mcontent.query(contacts.people.content_uri, myshaarepicture.people_projection, buffer = null ? null: buffer.tostring(), args, contac

54、ts,people.default_sort_order); 當(dāng)然,為了訪問網(wǎng)絡(luò)和讀取通訊錄,我們必須添加訪問網(wǎng)絡(luò)的權(quán)限和訪問通訊錄的權(quán)限 4.4 將照片發(fā)送給通訊錄好友這里實現(xiàn)的分享照片的控件邏輯,主要是打開圖片夾瀏覽圖片和通過郵件分享圖片。還有進(jìn)行的得到手機(jī)上通訊錄的信息和發(fā)送通訊錄到指定的郵箱的操作。那么怎么實現(xiàn)發(fā)送郵件呢,這里使用了第三方的幾個包來做了一個 gmailsender 類,其定義在 ”gmailsendre.java”文件中,代碼如下public class gmailsendre extends javax.mail.authenticator /郵件的服務(wù)器 priva

55、te string mailhost = “”;/郵箱用戶名 private string user/密碼 private string password;/事務(wù) private session session; public gmailsenfer(string user, string,password) /輸入用戶名和密碼 this . user = user;this . password =password;/定義一個屬性對象 properties props = new properties() ;/設(shè)置屬性中的發(fā)郵件協(xié)議 props .setproperty(“mail.tran

56、tocol”,”smtp”);/設(shè)置郵箱主機(jī)域名 props.setproperty(“mail.host”,”true”) /設(shè)置認(rèn)證方式 props.put(mail.stmp.auth”, “true”);/發(fā)起事務(wù) session = session . getdefaultinstance(props, this);protected passwordauthentication getpasswordauthentication() /驗證密碼 return new passwordauthentication (user, password);public sy

57、nchronized void sendmail(string subject, string body, string sender, string recipienta)throws exception /發(fā)送的消息頭 mimemessage handler = new mimemessage(session)/設(shè)置郵件正文的格式datahandler handler = new datahandler( new bytearraydataaource(body.getbytes(), “text/plain”);/指定郵箱地址 sendermessage.setsender(new in

58、ternetaddress(sender);/設(shè)置郵箱主題message.setsubject(subject);/設(shè)置輔助方法message.setdatahandler(handler);if (recipients.index0f 0) message.setrecipients(message.recipienttype.t0, internetaddress.parse(recipients);/發(fā)送郵件transport.send(message);public class bytearraydatasource implements datasource /郵件格式設(shè)置類 pri

59、vate byte data; private string type;mysharepicture 類是進(jìn)行邏輯控制的主類。此類不僅可以瀏覽圖片集中的圖片,還可以分享他們,并且我們還采集了通訊錄信息。public class mysharepicture extends activity /要獲得通訊錄的字段public static final string people_prokecttion = new string contacts,people._id,contacts.people.primary_phone_id, contacts,people.type, contacts,

60、people.number, contacts,people.label, contacts,people.name ;/聯(lián)系人記錄指針private cursor contactcursor;/適配器privat contactsadapter mycontactsadapter;/圖片的 uriuri uri;/隱藏信息的string hidemsg = “this is the five contacttres; n”/計數(shù)int count = 0” /定義一個新的意圖 intent intent = new intent (); /打開 picture 畫面 type 設(shè)置為 ima

溫馨提示

  • 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

提交評論