《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件匯 任務(wù)5-1Activity應(yīng)用 -任務(wù)7-4綜合項(xiàng)目實(shí)戰(zhàn)之新建日程_第1頁
《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件匯 任務(wù)5-1Activity應(yīng)用 -任務(wù)7-4綜合項(xiàng)目實(shí)戰(zhàn)之新建日程_第2頁
《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件匯 任務(wù)5-1Activity應(yīng)用 -任務(wù)7-4綜合項(xiàng)目實(shí)戰(zhàn)之新建日程_第3頁
《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件匯 任務(wù)5-1Activity應(yīng)用 -任務(wù)7-4綜合項(xiàng)目實(shí)戰(zhàn)之新建日程_第4頁
《Android項(xiàng)目開發(fā)實(shí)戰(zhàn)》課件匯 任務(wù)5-1Activity應(yīng)用 -任務(wù)7-4綜合項(xiàng)目實(shí)戰(zhàn)之新建日程_第5頁
已閱讀5頁,還剩294頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Android項(xiàng)目開發(fā)任務(wù)5-1:Activity應(yīng)用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Activity完成不同界面及其Activity類的切換。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】應(yīng)用Activity組件,實(shí)現(xiàn)不同的Activity類及其界面間的跳轉(zhuǎn)。導(dǎo)入任務(wù)【任務(wù)描述】Activity是Android的四大組件之一,它是一種可以包含用戶界面的組件,主要用于和用戶進(jìn)行交互,比如打電話、照相、發(fā)送郵件、或者顯示地圖。由于Activity用于顯示用戶界面,因此用戶可以通過Activity交互完成相關(guān)操作。在Android系統(tǒng)中,一個(gè)App允許有多個(gè)Activity。這就會(huì)涉及不同Activity之間的跳轉(zhuǎn)問題了。本次任務(wù)將介紹應(yīng)用Activity組件編程實(shí)現(xiàn)不同Activity類及其界面間的跳轉(zhuǎn)。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)中,我們將創(chuàng)建2個(gè)Activity,分別為MainActivity和NextActivity。其中:MainActivity的界面設(shè)計(jì)包含一個(gè)TextView和一個(gè)Button。

TextView用于顯示歡迎文字,

Button用于跳轉(zhuǎn)。NextActivity的界面設(shè)計(jì)包含一個(gè)ImageView和一個(gè)TextView。

ImageView用于展示一幅圖片,

TextView用于標(biāo)記NextActivity。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)MainActivity界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“activitydemo”。在項(xiàng)目“activitydemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:設(shè)計(jì)NextActivity界面。在項(xiàng)目“activitydemo”中創(chuàng)建一個(gè)新的AndroidActivity類,命名為“NextActivity”,并將對(duì)應(yīng)的界面文件命名為“activity_next.xml”。效果如下:任務(wù)實(shí)施操作3:雙擊打開界面程序“activity_next.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成NextActivity界面代碼的編寫。任務(wù)實(shí)施操作3:編寫跳轉(zhuǎn)的功能代碼。雙擊打開“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成跳轉(zhuǎn)的功能代碼編寫。相關(guān)知識(shí)認(rèn)識(shí)ActivityActivity生命周期技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)Activity在Android開發(fā)中,Activity是一個(gè)應(yīng)用程序組件,提供一個(gè)界面,用戶可以用來交互為了完成某項(xiàng)任務(wù),例如撥號(hào)、拍照、發(fā)送email、看地圖。每一個(gè)Activity被給予一個(gè)窗口,在上面可以繪制用戶接口。窗口通常充滿屏幕,但也可以小于屏幕而浮于其它窗口之上。一般來說,一個(gè)Android應(yīng)用程序通常由一個(gè)或多個(gè)Activity組成,它們通常是松耦合關(guān)系。其中一個(gè)Activity被指定為MainActivity,即當(dāng)?shù)谝淮螁?dòng)應(yīng)用程序時(shí)用戶看到界面的那個(gè)Activity。在Activity中可以啟動(dòng)另一個(gè)Activity以便完成不同的動(dòng)作。每一次一個(gè)Activity啟動(dòng),前一個(gè)Activity就停止了,但是會(huì)被Android系統(tǒng)保留在一個(gè)棧中。當(dāng)一個(gè)新Activity啟動(dòng),它被推送到棧頂,取得用戶焦點(diǎn)。棧采用“后進(jìn)先出”原則,所以,當(dāng)用戶完成當(dāng)前Activity然后點(diǎn)擊返回按鈕,之前的Activity將獲得恢復(fù)。技術(shù)知識(shí)知識(shí)點(diǎn)2:Activity生命周期Activity生命周期如右圖,包含以下幾個(gè)過程:(1)啟動(dòng)Activity:系統(tǒng)會(huì)先調(diào)用onCreate方法,然后調(diào)用onStart方法,最后調(diào)用onResume,Activity進(jìn)入運(yùn)行狀態(tài)。(2)當(dāng)前Activity被其他Activity覆蓋其上或被鎖屏:系統(tǒng)會(huì)調(diào)用onPause方法,暫停當(dāng)前Activity的執(zhí)行。(3)當(dāng)前Activity由被覆蓋狀態(tài)回到前臺(tái)或解鎖屏:系統(tǒng)會(huì)調(diào)用onResume方法,再次進(jìn)入運(yùn)行狀態(tài)。(4)當(dāng)前Activity轉(zhuǎn)到新的Activity界面或按Home鍵回到主屏,自身退居后臺(tái):系統(tǒng)會(huì)先調(diào)用onPause方法,然后調(diào)用onStop方法,進(jìn)入停滯狀態(tài)。(5)用戶后退回到此Activity:系統(tǒng)會(huì)先調(diào)用onRestart方法,然后調(diào)用onStart方法,最后調(diào)用onResume方法,再次進(jìn)入運(yùn)行狀態(tài)。(6)當(dāng)前Activity處于被覆蓋狀態(tài)或者后臺(tái)不可見狀態(tài),即第2步和第4步,系統(tǒng)內(nèi)存不足,殺死當(dāng)前Activity,而后用戶退回當(dāng)前Activity:再次調(diào)用onCreate方法、onStart方法、onResume方法,進(jìn)入運(yùn)行狀態(tài)。(7)用戶退出當(dāng)前Activity:系統(tǒng)先調(diào)用onPause方法,然后調(diào)用onStop方法,最后調(diào)用onDestory方法,結(jié)束當(dāng)前Activity。拓展訓(xùn)練應(yīng)用Activity組件編程實(shí)現(xiàn)一個(gè)登錄界面的跳轉(zhuǎn)。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,在項(xiàng)目中使用2個(gè)Activity類編程實(shí)現(xiàn)以下登錄界面的跳轉(zhuǎn)。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)5-2:Intent應(yīng)用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Intent完成不同Activity界面間的跳轉(zhuǎn)和數(shù)據(jù)傳遞。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】通過Intent應(yīng)用,設(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)軟件界面間的跳轉(zhuǎn)和數(shù)據(jù)傳遞。導(dǎo)入任務(wù)【任務(wù)描述】Intent組件雖然不是Android系統(tǒng)中的四大組件,但卻是連接四大組件的橋梁。Android中提供了Intent機(jī)制來協(xié)助應(yīng)用間的交互與通訊。它能在程序運(yùn)行的過程中連接兩個(gè)不同的組件。通過Intent,應(yīng)用程序可以向Android系統(tǒng)表達(dá)某種請(qǐng)求或者意愿,Android會(huì)根據(jù)意愿的內(nèi)容選擇適當(dāng)?shù)慕M件來響應(yīng)。activity、service、broadcastreceiver等組件之間是通過Intent進(jìn)行通信的。本次任務(wù)由2個(gè)界面組成。當(dāng)點(diǎn)擊第一個(gè)界面中的按鈕時(shí),通過Intent組件將圖片和文字?jǐn)?shù)據(jù)傳遞到第二個(gè)界面顯示出來。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)用2個(gè)Activity類(MainActivity和SecActivity)分別完成2個(gè)界面的設(shè)計(jì)與制作。其中在MainActivity界面設(shè)置一個(gè)按鈕Button控件,通過按鈕點(diǎn)擊事件,使用Intent組件將圖片(圣誕老人)和文字(“歡迎光臨”)傳遞到SecActivity。然后在SecActivity類中將圖片和文字顯示出來。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:創(chuàng)建MainActivity界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“intentdemo”。在項(xiàng)目“intentdemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:創(chuàng)建SecActivity界面。在項(xiàng)目“intentdemo”中創(chuàng)建一個(gè)新的AndroidActivity類,命名為“SecActivity”,并將對(duì)應(yīng)的界面文件命名為“activity_sec.xml”。雙擊打開界面程序“activity_sec.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成SecActivity界面代碼的編寫。任務(wù)實(shí)施操作3:編寫MainActivity功能代碼。雙擊打開“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,使用Intent完成跳轉(zhuǎn)和數(shù)據(jù)傳遞的功能代碼編寫。任務(wù)實(shí)施操作3:編寫SecActivity功能代碼。雙擊打開“SecActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成數(shù)據(jù)接收和顯示的功能代碼編寫。相關(guān)知識(shí)認(rèn)識(shí)IntentIntent包含的六大信息技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)IntentIntent是不同組件之間相互通訊的紐帶,封裝了不同組件之間通訊的條件。Intent本身是定義為一個(gè)類(Class),一個(gè)Intent對(duì)象表達(dá)一個(gè)目的(Goal)或期望(Expectation),敘述其所期望的服務(wù)或動(dòng)作、與動(dòng)作有關(guān)的數(shù)據(jù)等。Android則根據(jù)此Intent對(duì)象之?dāng)⑹?,?fù)責(zé)配對(duì),找出相配的組件,然后將Intent對(duì)象傳遞給所找到的組件。Intent是一個(gè)保存著消息內(nèi)容的Intent對(duì)象。對(duì)于activity和服務(wù)來說,它指明了請(qǐng)求的操作名稱以及作為操作對(duì)象的數(shù)據(jù)的URI和其它一些信息。比如說,它可以承載對(duì)一個(gè)Activity的請(qǐng)求,讓它為用戶顯示一張圖片,或者讓用戶編輯一些文本。而對(duì)于廣播接收器而言,Intent對(duì)象指明了聲明的行為。比如,它可以對(duì)所有感興趣的對(duì)象聲明照相按鈕被按下。技術(shù)知識(shí)知識(shí)點(diǎn)2:Intent包含的六大信息(1)Componentname(組件名稱),指定Intent的目標(biāo)組件的類名稱。定義要啟動(dòng)哪一個(gè)組件,啟動(dòng)的組件不一定是Activity。(2)Action(動(dòng)作),指定新啟動(dòng)組建的動(dòng)作。指定Intent的執(zhí)行動(dòng)作,比如調(diào)用撥打電話組件。(3)Data(數(shù)據(jù)),向另外一個(gè)Activity里面?zhèn)魉偷臄?shù)據(jù)。(4)Category(類別),向另外一個(gè)Activity傳送的多個(gè)鍵值對(duì),被執(zhí)行動(dòng)作的附加信息。例如應(yīng)用的啟動(dòng)Activity在intent-filter中設(shè)置category。(5)Extras(附加信息),為處理Intent組件提供附加的信息??赏ㄟ^putXX()和getXX()方法存取信息;也可以通過創(chuàng)建Bundle對(duì)象,再通過putExtras()和getExtras()方法來存取。(6)Flags(標(biāo)記),指示Android如何啟動(dòng)目標(biāo)Activity,設(shè)置方法為調(diào)用Intent的setFlags方法。拓展訓(xùn)練使用Intent編程實(shí)現(xiàn)一個(gè)登錄界面的數(shù)據(jù)傳遞。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,在項(xiàng)目中使用2個(gè)Activity類編程實(shí)現(xiàn)以下登錄界面的跳轉(zhuǎn)和數(shù)據(jù)傳遞。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)5-3:Service應(yīng)用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Service完成一個(gè)音樂播放器的制作。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】應(yīng)用Service組件設(shè)計(jì)并制作一個(gè)簡(jiǎn)易的音樂播放器。導(dǎo)入任務(wù)【任務(wù)描述】Service組件在Android系統(tǒng)中被稱之為“后臺(tái)服務(wù)”組件。因?yàn)槠浔旧淼倪\(yùn)行并不依賴于用戶可視的UI界面,因此從任務(wù)需求上來理解,Service組件非常適用于Android系統(tǒng)中的音樂播放(可以后臺(tái)運(yùn)行,不影響前端界面操作)。本次任務(wù)將應(yīng)用Service組件實(shí)現(xiàn)音樂播放器的音樂播放功能。導(dǎo)入任務(wù)【任務(wù)分析】Service組件的使用方式有2種:第一種是startService(),第二種是bindService()。本次任務(wù)分別采用startService和bindService兩種方式啟動(dòng)和停止播放音樂服務(wù)本次任務(wù)界面設(shè)計(jì)使用線性布局,自上而下設(shè)計(jì)4個(gè)按鈕Button。其中2個(gè)Button用于startService啟動(dòng)播放和停止音樂;另2個(gè)Button用于bindService啟動(dòng)播放和停止音樂任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)播放器界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“servicedemo”。在項(xiàng)目“servicedemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:創(chuàng)建MusicService類。在項(xiàng)目“servicedemo”中創(chuàng)建一個(gè)Service類,命名為“MusicService”。雙擊打開程序“MusicService.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。任務(wù)實(shí)施操作3:編寫按鈕程序。雙擊打開程序“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。任務(wù)實(shí)施操作4:注冊(cè)Service類。在項(xiàng)目“servicedemo”中雙擊打開程序“AndroidManifest.xml”,在代碼編輯窗口添加MusicService類的注冊(cè)代碼。相關(guān)知識(shí)認(rèn)識(shí)ServiceService使用方式技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)ServiceService服務(wù)是Android系統(tǒng)最常用的四大部件之一,Android支持Service服務(wù)的原因主要目的有兩個(gè),一是簡(jiǎn)化后臺(tái)任務(wù)的實(shí)現(xiàn),二是實(shí)現(xiàn)在同一臺(tái)設(shè)備當(dāng)中跨進(jìn)程的遠(yuǎn)程信息通信。Service服務(wù)主要分為L(zhǎng)ocalService本地服務(wù)與RemoteService遠(yuǎn)程服務(wù)兩種,本地服務(wù)只支持同一進(jìn)程內(nèi)的應(yīng)用程序進(jìn)行訪問,遠(yuǎn)程服務(wù)可通過AIDL(AndroidInterfaceDefinitionLanguage)技術(shù)支持跨進(jìn)程訪問。Service服務(wù)可以通過Context.startService()和Context.bindService()進(jìn)行啟動(dòng),一般LocalService本地服務(wù)可使用其中一種方法啟動(dòng),但RemoteService遠(yuǎn)程服務(wù)只能使用Context.bindService()啟動(dòng),而兩種調(diào)用方式在使用場(chǎng)景與活動(dòng)流程中都存在差異。技術(shù)知識(shí)知識(shí)點(diǎn)2:Service使用方式第一類是直接通過Context.startService()啟動(dòng),通過Context.stopService()結(jié)束Service,其特點(diǎn)在于調(diào)用簡(jiǎn)單,方便控制。缺點(diǎn)在于一旦啟動(dòng)了Service服務(wù),除了再次調(diào)用或結(jié)束服務(wù)外就再無法對(duì)服務(wù)內(nèi)部狀態(tài)進(jìn)行操控,缺乏靈活性。第二類是通過Context.bindService()啟動(dòng),通過Context.unbindService()結(jié)束,相對(duì)其特點(diǎn)在運(yùn)用靈活,可以通過IBinder接口中獲取Service的句柄,對(duì)Service狀態(tài)進(jìn)行檢測(cè)。從Android系統(tǒng)設(shè)計(jì)的架構(gòu)上看,startService()是用于啟動(dòng)本地服務(wù),bindService()更多是用于對(duì)遠(yuǎn)程服務(wù)進(jìn)行綁定。當(dāng)然,也可以結(jié)合兩者進(jìn)行混合式應(yīng)用,先通過startService()啟動(dòng)服務(wù),然后通過bindService()、unbindService()方法進(jìn)行多次綁定,以獲取Service服務(wù)在不同狀態(tài)下的信息,最后通過stopService()方法結(jié)束Service運(yùn)行。拓展訓(xùn)練應(yīng)用Service組件編程實(shí)現(xiàn)一個(gè)背景音樂控制界面的功能實(shí)現(xiàn)。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,使用Service編程實(shí)現(xiàn)以下背景音樂控制的功能。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)5-4:Broadcast應(yīng)用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Broadcast完成廣播消息的發(fā)送。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】使用Broadcast組件編程實(shí)現(xiàn)消息的廣播發(fā)送。導(dǎo)入任務(wù)【任務(wù)描述】在Android系統(tǒng)中,Broadcast用于發(fā)送與接收廣播信息,是Android的四大組件之一。Broadcast組件可以用于在不同應(yīng)用之間傳遞和共享數(shù)據(jù)或者同一應(yīng)用的不同組件之間數(shù)據(jù)的共享,比如音樂播放器的UI更新。本次任務(wù)應(yīng)用Broadcast組件來實(shí)現(xiàn)對(duì)一條預(yù)先寫好的廣播信息的發(fā)送。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)界面設(shè)計(jì)簡(jiǎn)單,使用線性布局,在界面上只設(shè)計(jì)一個(gè)按鈕Button。當(dāng)點(diǎn)擊按鈕時(shí),發(fā)送一條事先寫好的廣播消息。發(fā)送后的廣播信息以Toast方式進(jìn)行顯示。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:創(chuàng)建程序界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“broadcastdemo”。在項(xiàng)目“broadcastdemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:創(chuàng)建BroadcastReceiver類。在項(xiàng)目“broadcastdemo”中創(chuàng)建一個(gè)BroadcastReceiver類,命名為“MsgReceiver”。雙擊打開程序“MsgReceiver.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。任務(wù)實(shí)施操作3:注冊(cè)廣播組件。在項(xiàng)目“servicedemo”中雙擊打開程序“AndroidManifest.xml”,在代碼編輯窗口添加MsgReceiver類的注冊(cè)代碼。任務(wù)實(shí)施操作4:編寫按鈕程序。雙擊打開程序“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。相關(guān)知識(shí)認(rèn)識(shí)BroadcastBroadcast的兩種類型廣播接收器BroadcastReceiver創(chuàng)建BroadcastReceiver的方法技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)Broadcast在Android系統(tǒng)中,廣播(Broadcast)是在組件之間傳播數(shù)據(jù)的一種機(jī)制。這些Broadcast甚至是可以位于不同的進(jìn)程中,這樣它就像Binder機(jī)制一樣,起到進(jìn)程間通信的作用。在Android系統(tǒng)中,為什么需要廣播機(jī)制呢?廣播機(jī)制,本質(zhì)上它就是一種組件間的通信方式,如果是兩個(gè)組件位于不同的進(jìn)程當(dāng)中,那么可以用Binder機(jī)制來實(shí)現(xiàn),如果兩個(gè)組件是在同一個(gè)進(jìn)程中,那么它們之間可以用來通信的方式就更多了。然而,廣播機(jī)制卻是不可替代的,它和Binder機(jī)制不一樣的地方在于,廣播的發(fā)送者和接收者事先是不需要知道對(duì)方的存在的,這樣帶來的好處便是,系統(tǒng)的各個(gè)組件可以松耦合地組織在一起,這樣系統(tǒng)就具有高度的可擴(kuò)展性,容易與其它系統(tǒng)進(jìn)行集成。技術(shù)知識(shí)知識(shí)點(diǎn)2:Broadcast的兩種類型Broadcast廣播可以分為無序廣播和有序廣播兩種類型。無序廣播:所有跟廣播的intent匹配的廣播接收者都可以收到該廣播,并且是沒有先后順序(同時(shí)收到)。有序廣播:所有跟廣播的intent匹配的廣播接收者都可以收到該廣播,但是會(huì)按照廣播接收者的優(yōu)先級(jí)來決定接收的先后順序。技術(shù)知識(shí)知識(shí)點(diǎn)3:廣播接收器BroadcastReceiver廣播分為兩個(gè)角色:廣播發(fā)送器、廣播接收器。其中廣播接收器BroadcastReceiver是一個(gè)專注于接收廣播通知信息,并做出對(duì)應(yīng)處理的組件。Android應(yīng)用程序可以擁有任意數(shù)量的廣播接收器對(duì)所有它感興趣的通知信息予以響應(yīng),并且所有的接收器均繼承自BroadcastReceiver基類。BroadcastReceiver生命周期過程從對(duì)象調(diào)用它開始,到onReceiver方法執(zhí)行完成之后結(jié)束。另外,每次廣播被接收后會(huì)重新創(chuàng)建BroadcastReceiver對(duì)象,并在onReceiver方法中執(zhí)行完就銷毀。技術(shù)知識(shí)知識(shí)點(diǎn)4:創(chuàng)建BroadcastReceiver的方法第一步:創(chuàng)建BroadcastReceiver的子類:由于BroadcastReceiver本質(zhì)上是一種監(jiān)聽器,所以創(chuàng)建BroadcastReceiver的方法也非常簡(jiǎn)單,只需要?jiǎng)?chuàng)建一個(gè)BroadcastReceiver的子類然后重寫onReceive(Contextcontext,Intentintent)方法即可。第二步:注冊(cè)BroadcastReceiver一旦實(shí)現(xiàn)了BroadcastReceiver,接下就應(yīng)該指定該BroadcastReceiver能匹配的Intent即注冊(cè)BroadcastReceiver。在配置AndroidManifest.xml配置文件中注冊(cè),通過這種方式注冊(cè)的廣播為常駐型廣播,也就是說如果應(yīng)用程序關(guān)閉了,有相應(yīng)事件觸發(fā)程序還是會(huì)被系統(tǒng)自動(dòng)調(diào)用運(yùn)行。例如:<!--在配置文件中注冊(cè)BroadcastReceiver能夠匹配的Intent--><receiverandroid:name="com.example.test.MyBroadcastReceiver"><intent-filter><actionandroid:name="ent.action.MyBroadcastReceiver"></action><categoryandroid:name="ent.category.DEFAULT"></category></intent-filter></receiver>拓展訓(xùn)練應(yīng)用Broadcast組件編程實(shí)現(xiàn)廣播的注冊(cè)、發(fā)送及注銷。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,使用BroadcastReceiver編程實(shí)現(xiàn)以下功能。要求:①點(diǎn)擊【發(fā)送廣播】按鈕的時(shí)候,因?yàn)槌绦驔]有注冊(cè)BraodcastReceiver,所以使用Toast輸出“沒有注冊(cè)BraodcastReceiver”的信息。②當(dāng)先點(diǎn)擊【注冊(cè)廣播接收器】再點(diǎn)擊【發(fā)送廣播】按鈕的時(shí)候,這時(shí)程序會(huì)動(dòng)態(tài)的注冊(cè)BraodcastReceiver,之后會(huì)調(diào)用onReceive()方法,通過Toast輸出“這是廣播測(cè)試”信息。③當(dāng)點(diǎn)擊【注銷廣播接收器】按鈕的時(shí)候,這時(shí)程序會(huì)注銷BraodcastReceiver,再點(diǎn)擊【發(fā)送廣播】,使用Toast輸出“沒有注冊(cè)BraodcastReceiver”的信息。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)5-5:音樂盒設(shè)計(jì)與實(shí)現(xiàn)導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),還需掌握其常用組件的應(yīng)用,本次任務(wù)應(yīng)用Activity、Service和Broadcast組件完成一個(gè)音樂盒的制作。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】應(yīng)用Activity、Service、Broadcast組件設(shè)計(jì)并制作一個(gè)Android音樂盒軟件。導(dǎo)入任務(wù)【任務(wù)描述】本次任務(wù),我們將使用前面學(xué)習(xí)過的Activity、Service、Broadcast等三大組件來中制作一個(gè)簡(jiǎn)易的音樂盒(音樂播放器)。其中:Activity完成音樂盒界面的設(shè)計(jì)與制作;Service實(shí)現(xiàn)音樂的后臺(tái)播放功能;

Broadcast負(fù)責(zé)音樂控制的消息傳遞。導(dǎo)入任務(wù)【任務(wù)分析】音樂盒的界面設(shè)計(jì)采用水平線性布局設(shè)計(jì),包括2個(gè)ImageButton和2個(gè)TextView。其中,第一個(gè)ImageButton用于實(shí)現(xiàn)音樂的播放和暫停功能。第二個(gè)ImageButton用于停止音樂的播放。任務(wù)實(shí)施創(chuàng)建程序界面編寫Activity程序編寫Service程序注冊(cè)Service任務(wù)實(shí)施操作1:創(chuàng)建程序界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“musicboxdemo”。在項(xiàng)目“musicboxdemo”中雙擊打開界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MainActivity界面代碼的編寫。任務(wù)實(shí)施操作2:編寫Activity程序。雙擊打開程序“MainActivity.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序。任務(wù)實(shí)施操作3:編寫Service程序。在項(xiàng)目“musicboxdemo”中創(chuàng)建一個(gè)Service類,命名為“MusicService”。雙擊打開程序“MusicService.java”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼。任務(wù)實(shí)施操作4:注冊(cè)Service。在項(xiàng)目“servicedemo”中雙擊打開程序“AndroidManifest.xml”,在代碼編輯窗口添加Service類的注冊(cè)代碼。相關(guān)知識(shí)認(rèn)識(shí)MediaPlayer如何獲得MediaPlayer實(shí)例如何設(shè)置要播放的文件對(duì)播放器的主要控制方法設(shè)置播放器的監(jiān)聽器技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)MediaPlayerAndroid提供了常見的音頻、視頻的編碼和解碼機(jī)制。Android下對(duì)于音頻、視頻的支持均需要使用到MediaPlayer。MediaPlayer是一個(gè)主要用來控制Android下播放文件或流的類,它位于Android多媒體包下"android.media.MediaPlayer"。MediaPlayer支持的數(shù)據(jù)源包括本地文件、內(nèi)部的Uri(內(nèi)容提供者)、外部Uri。借助于多媒體類MediaPlayer的支持,開發(fā)人員可以很方便在在應(yīng)用中播放音頻、視頻。技術(shù)知識(shí)知識(shí)點(diǎn)2:如何獲得MediaPlayer實(shí)例可以使用直接new的方式:MediaPlayermp=newMediaPlayer();也可以使用create的方式,如:MediaPlayermp=MediaPlayer.create(this,R.raw.test);技術(shù)知識(shí)知識(shí)點(diǎn)3:如何設(shè)置要播放的文件MediaPlayer要播放的文件主要包括3個(gè)來源:(1)用戶在應(yīng)用中事先自帶的resource資源.

例如:MediaPlayer.create(this,R.raw.test);(2)存儲(chǔ)在SD卡或其他文件路徑下的媒體文件

例如:mp.setDataSource("/sdcard/test.mp3");(3)網(wǎng)絡(luò)上的媒體文件

例如:mp.setDataSource("/music/confucius.mp3");技術(shù)知識(shí)知識(shí)點(diǎn)4:對(duì)播放器的主要控制方法Android通過控制播放器的狀態(tài)的方式來控制媒體文件的播放,其中:prepare()和prepareAsync():提供了同步和異步兩種方式設(shè)置播放器進(jìn)入prepare狀態(tài),需要注意的是,如果MediaPlayer實(shí)例是由create方法創(chuàng)建的,那么第一次啟動(dòng)播放前不需要再調(diào)用prepare()了,因?yàn)閏reate方法里已經(jīng)調(diào)用過了。start():是真正啟動(dòng)文件播放的方法,pause()和stop():比較簡(jiǎn)單,起到暫停和停止播放的作用,seekTo():是定位方法,可以讓播放器從指定的位置開始播放,需要注意的是該方法是個(gè)異步方法,也就是說該方法返回時(shí)并不意味著定位完成,尤其是播放的網(wǎng)絡(luò)文件,真正定位完成時(shí)會(huì)觸發(fā)OnSeekComplete.onSeekComplete(),如果需要是可以調(diào)用setOnSeekCompleteListener(OnSeekCompleteListener)設(shè)置監(jiān)聽器來處理的。release():可以釋放播放器占用的資源,一旦確定不再使用播放器時(shí)應(yīng)當(dāng)盡早調(diào)用它釋放資源。reset():可以使播放器從Error狀態(tài)中恢復(fù)過來,重新會(huì)到Idle狀態(tài)。技術(shù)知識(shí)知識(shí)點(diǎn)5:設(shè)置播放器的監(jiān)聽器MediaPlayer提供了一些設(shè)置不同監(jiān)聽器的方法來更好地對(duì)播放器的工作狀態(tài)進(jìn)行監(jiān)聽,以期及時(shí)處理各種情況。如:setOnCompletionListener(MediaPlayer.OnCompletionListenerlistener)、setOnErrorListener(MediaPlayer.OnErrorListenerlistener)等,設(shè)置播放器時(shí)需要考慮到播放器可能出現(xiàn)的情況設(shè)置好監(jiān)聽和處理邏輯,以保持播放器的健壯性。拓展訓(xùn)練應(yīng)用Activity+Service+Broadcast組件編程實(shí)現(xiàn)一個(gè)音樂播放器的設(shè)計(jì)與制作。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】編程實(shí)現(xiàn)以下Android音樂播放器的設(shè)計(jì)與實(shí)現(xiàn)。編程實(shí)現(xiàn)以下Android音樂播放器的設(shè)計(jì)與實(shí)現(xiàn)。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)6-1:文件存儲(chǔ)操作導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),需要掌握其數(shù)據(jù)存儲(chǔ)技術(shù)和操作,本次任務(wù)將完成一個(gè)Android文件讀寫程序。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】設(shè)計(jì)與制作一個(gè)Android文件讀寫軟件。導(dǎo)入任務(wù)【任務(wù)描述】Android系統(tǒng)文件的操作和Java在PC環(huán)境下的操作類似,不同的是,Android系統(tǒng)提供了不同于PC的訪問文件系統(tǒng)的根路徑,并對(duì)應(yīng)用軟件的私有文件做了統(tǒng)一的管理。本次任務(wù)將制作一個(gè)Android文件讀寫軟件,以此介紹Android讀寫文件編程的基本操作。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)程序界面采用線性布局,界面設(shè)計(jì)包含1個(gè)EditText、2個(gè)TextView、3個(gè)Button。其中EditText用于輸入需要寫入文件的內(nèi)容;2個(gè)TextView分別用于顯示讀取文件的內(nèi)容和顯示文件的路徑;3個(gè)Button分別完成寫入文件、讀取文件、獲取文件路徑的操作。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)軟件界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“filedemo”。編寫主界面xml代碼,在項(xiàng)目“filedemo”中雙擊打開主界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成界面代碼的編寫。任務(wù)實(shí)施操作2:編寫功能代碼。雙擊打開src目錄中的“MainActivity.java”程序,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成功能代碼的編寫。任務(wù)實(shí)施操作3:保存文件,運(yùn)行項(xiàng)目程序,查看運(yùn)行結(jié)果。運(yùn)行效果如下:相關(guān)知識(shí)認(rèn)識(shí)Android中的文件存儲(chǔ)Android的內(nèi)部存儲(chǔ)路徑獲取Android文件路徑技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)Android中的文件存儲(chǔ)在Android系統(tǒng)中,文件操作仍然沿用Java的文件操作,不同的是Android文件操作分內(nèi)部存儲(chǔ)和外部存儲(chǔ)。Android系統(tǒng)提供了一個(gè)openFileOutput()方法來讀寫應(yīng)用在內(nèi)部存儲(chǔ)空間上的文件,下面是一個(gè)向文件中寫入文本的示例代碼:Stringfilename="myfile";Stringstring="Helloworld!";FileOutputStreamoutputStream;try{outputStream=openFileOutput(filename,Context.MODE_PRIVATE);outputStream.write(string.getBytes());outputStream.close();}catch(Exceptione){e.printStackTrace();}技術(shù)知識(shí)知識(shí)點(diǎn)2:Android的內(nèi)部存儲(chǔ)路徑在Android系統(tǒng)中,有個(gè)data文件夾存放著重要的內(nèi)部存儲(chǔ)數(shù)據(jù),當(dāng)打開data文件夾之后,里邊有兩個(gè)文件夾值得關(guān)注。一個(gè)文件夾是app文件夾,還有一個(gè)文件夾就是data文件夾。app文件夾里存放著所有安裝的apk文件。另一個(gè)重要的文件夾就是data文件夾了,這個(gè)文件夾里邊都是一些包名,打開這些包名之后我們會(huì)看到這樣的一些文件:1.data/data/包名/shared_prefs()2.data/data/包名/databases(數(shù)據(jù)庫文件就存儲(chǔ))3.data/data/包名/files(文件數(shù)據(jù)存儲(chǔ))4.data/data/包名/cache(緩存文件存儲(chǔ))一般而言,存儲(chǔ)在這里的文件都稱之為內(nèi)部存儲(chǔ)。技術(shù)知識(shí)知識(shí)點(diǎn)3:獲取Android文件路徑//獲取當(dāng)前程序路徑應(yīng)用在內(nèi)存上的目錄:/data/data/com.mufeng.toolproject/filesStringfilesDir=context.getFilesDir().toString();System.out.println("context.getFilesDir()=:"+filesDir);//應(yīng)用的在內(nèi)存上的緩存目錄:/data/data/com.mufeng.toolproject/cacheStringcacheDir=context.getCacheDir().toString();System.out.println("context.getCacheDir()=:"+cacheDir);//獲取該程序的安裝包路徑:/data/app/com.mufeng.toolproject-3.apkStringpackageResourcePath=context.getPackageResourcePath();System.out.println("context.getPackageResourcePath()=:"+packageResourcePath);

//獲取程序默認(rèn)數(shù)據(jù)庫路徑:/data/data/com.mufeng.toolproject/databases/mufengStringdatabasePat=context.getDatabasePath("mufeng").toString();System.out.println("context.getDatabasePath(\"mufeng\")=:"+databasePat);拓展訓(xùn)練編程實(shí)現(xiàn)對(duì)Android系統(tǒng)中文件的讀寫操作。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,完成以下文件讀寫器軟件的設(shè)計(jì),編程實(shí)現(xiàn)其文件讀寫操作。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)6-2:SD卡文件讀寫導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),需要掌握其數(shù)據(jù)存儲(chǔ)技術(shù)和操作,本次任務(wù)將完成一個(gè)AndroidSD卡文件讀寫器設(shè)計(jì)與制作。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】設(shè)計(jì)并制作一個(gè)AndroidSD卡文件讀寫器。導(dǎo)入任務(wù)【任務(wù)描述】由于手機(jī)本身的存儲(chǔ)空間有限,因此需要把一些大容量文件如視頻、音頻等存儲(chǔ)到SD卡中。因此在Android開發(fā)中掌握SD卡的文件讀寫操作是十分必要的。本次任務(wù)將介紹一個(gè)簡(jiǎn)易AndroidSD卡文件讀寫器的設(shè)計(jì)與制作。導(dǎo)入任務(wù)【任務(wù)分析】SD卡文件讀寫器界面設(shè)計(jì)包括2個(gè)Button和2個(gè)EditText。功能設(shè)計(jì):界面上方的EditText用于輸入需要文字內(nèi)容,界面下方的EditText用于輸出SD卡文件的內(nèi)容。2個(gè)Button分別用于實(shí)現(xiàn)SD卡文件寫入和SD卡文件讀取功能。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)軟件界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“sddemo”。編寫主界面xml代碼,在項(xiàng)目“sddemo”中雙擊打開主界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成界面代碼的編寫。任務(wù)實(shí)施操作2:編寫功能代碼。雙擊打開src目錄中的“MainActivity.java”程序,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成功能代碼的編寫。1/3任務(wù)實(shí)施程序接上。2/3任務(wù)實(shí)施程序接上。3/3任務(wù)實(shí)施操作3:注冊(cè)SD操作權(quán)限。雙擊打開項(xiàng)目“sddemo”中的“AndroidManifest.xml”文件,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成SD讀寫權(quán)限的注冊(cè)。任務(wù)實(shí)施操作3:保存文件,運(yùn)行項(xiàng)目程序,查看運(yùn)行結(jié)果。運(yùn)行效果如下:相關(guān)知識(shí)認(rèn)識(shí)Android中SD卡的文件讀寫SD卡文件讀寫的常用操作技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)Android中SD卡的文件讀寫在Android系統(tǒng)中對(duì)SD卡進(jìn)行文件操作,可以遵循以下一些方法。首先如果要在程序中使用sdcard進(jìn)行存儲(chǔ),我們必須要在AndroidManifset.xml文件進(jìn)行下面的權(quán)限設(shè)置。

<!--SDCard中創(chuàng)建與刪除文件權(quán)限--><uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><!--向SDCard寫入數(shù)據(jù)權(quán)限--><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>接著在使用SDcard進(jìn)行讀寫的時(shí)候,需要知道Environment類下面的幾個(gè)靜態(tài)方法:(1)getDataDirectory():獲取到Android中的data數(shù)據(jù)目錄。(2)getDownloadCacheDirectory():獲取到下載的緩存目錄。(3)getExternalStorageDirectory():獲取到外部存儲(chǔ)的目錄(“/storage/sdcard0”)。(4)getExternalStorageState():獲取外部設(shè)置的當(dāng)前狀態(tài)。較常用的狀態(tài)是MEDIA_MOUNTED。(5)getRootDirectory():獲取到AndroidRoot路徑。技術(shù)知識(shí)知識(shí)點(diǎn)2:SD卡文件讀寫的常用操作(1)判斷SD卡是否存在publicstaticbooleanisSdCardExist(){returnEnvironment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);}(2)獲取SD卡根目錄publicstaticStringgetSdCardPath(){booleanexist=isSdCardExist();Stringsdpath="";if(exist){sdpath=Environment.getExternalStorageDirectory().getAbsolutePath();

}else{sdpath="不適用";}returnsdpath;}(3)獲取默認(rèn)的文件存放路徑publicstaticStringgetDefaultFilePath(){Stringfilepath="";Filefile=newFile(Environment.getExternalStorageDirectory(),"abc.txt");if(file.exists()){filepath=file.getAbsolutePath();}else{filepath="不適用";

}returnfilepath;}拓展訓(xùn)練編程實(shí)現(xiàn)AndroidSD卡文件讀寫功能。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】編程實(shí)現(xiàn)以下Android應(yīng)用軟件的SD卡文件讀寫功能。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)6-3:SD卡文件瀏覽器導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),需要掌握其數(shù)據(jù)存儲(chǔ)技術(shù)和操作,本次任務(wù)將完成一個(gè)AndroidSD卡文件瀏覽器。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】設(shè)計(jì)并制作一個(gè)AndroidSD卡文件瀏覽器。導(dǎo)入任務(wù)【任務(wù)描述】在Android中,除了學(xué)會(huì)對(duì)SD卡進(jìn)行文件讀寫的操作,還需要掌握對(duì)SD卡中的文件瀏覽操作,以便于查找和編輯所需操作的文件。本次任務(wù)將設(shè)計(jì)與制作一個(gè)簡(jiǎn)單的SD卡文件瀏覽器,并以此介紹對(duì)SD卡中的文件瀏覽操作。導(dǎo)入任務(wù)【任務(wù)分析】SD卡文件瀏覽器的主界面設(shè)計(jì)采用線性布局設(shè)計(jì),包括1個(gè)TextView、1個(gè)ListView和1個(gè)Button。其中TextView用于顯示當(dāng)前的目錄,ListView用于顯示當(dāng)前目錄下的文件和文件夾,Button用于實(shí)現(xiàn)返回上一級(jí)目錄的功能。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)軟件界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“sdfiledemo”。編寫主界面xml代碼,在項(xiàng)目“sdfiledemo”中雙擊打開主界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成界面代碼的編寫。任務(wù)實(shí)施操作2:設(shè)計(jì)列表界面。由于軟件界面上設(shè)置了ListView界面,因此需要設(shè)計(jì)一個(gè)ListView界面。在項(xiàng)目“sdfiledemo”中“l(fā)ayout”文件夾里創(chuàng)建一個(gè)layout界面文件,命名為“l(fā)istview_file.xml”。效果如下:任務(wù)實(shí)施操作3:編寫列表界面代碼。雙擊打開文件“l(fā)istview_file.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成界面代碼的編寫。任務(wù)實(shí)施操作4:編寫功能代碼。雙擊打開src目錄中的“MainActivity.java”程序,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成功能代碼的編寫。1/2任務(wù)實(shí)施程序接上。2/2相關(guān)知識(shí)調(diào)用系統(tǒng)自帶的文件瀏覽器返回的文件數(shù)據(jù)處理技術(shù)知識(shí)知識(shí)點(diǎn)1:調(diào)用系統(tǒng)自帶的文件瀏覽器在Android開發(fā)中,制作文件瀏覽器還可以調(diào)用系統(tǒng)自帶的文件瀏覽器中的功能。下面程序代碼調(diào)用了系統(tǒng)自帶的文件瀏覽器中的文件選擇功能。代碼示例如下:privatevoidshowFileChooser(){intent=newIntent(Intent.ACTION_GET_CONTENT);intent.setType("*/*");intent.addCategory(Intent.CATEGORY_OPENABLE);try{ startActivityForResult(Intent.createChooser(intent,"請(qǐng)選擇一個(gè)文件"),FILE_SELECT_CODE);}catch(android.content.ActivityNotFoundExceptionex){Toast.makeText(getActivity(),"請(qǐng)安裝文件管理器",Toast.LENGTH_SHORT).show();}}技術(shù)知識(shí)知識(shí)點(diǎn)2:返回的文件數(shù)據(jù)處理對(duì)上面選擇的文件數(shù)據(jù),可以使用以下程序?qū)Ψ祷氐奈募?shù)據(jù)進(jìn)行處理。

@OverridepublicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){if(resultCode==Activity.RESULT_OK){Uriuri=data.getData();

Stringurl;try{url=FFileUtils.getPath(getActivity(),uri);Log.i("ht","url"+url);StringfileName=url.substring(url.lastIndexOf("/")+1);intent=newIntent(getActivity(),UploadServices.class);intent.putExtra("fileName",fileName);intent.putExtra("url",url);intent.putExtra("type","");intent.putExtra("fuid","");intent.putExtra("type","");getActivity().startService(intent);}catch(URISyntaxExceptione){e.printStackTrace();}}super.onActivityResult(requestCode,resultCode,data);

}拓展訓(xùn)練編程實(shí)現(xiàn)一個(gè)AndroidSD文件瀏覽器的文件目錄瀏覽功能。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】編程實(shí)現(xiàn)以下Android應(yīng)用軟件的功能。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)6-4:SQLite數(shù)據(jù)庫操作導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),需要掌握其數(shù)據(jù)存儲(chǔ)技術(shù)和操作,本次任務(wù)將完成一個(gè)Android

SQLite數(shù)據(jù)庫操作演示軟件的設(shè)計(jì)與制作。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】設(shè)計(jì)并實(shí)現(xiàn)一個(gè)SQLite數(shù)據(jù)庫操作演示軟件。導(dǎo)入任務(wù)【任務(wù)描述】SQLite是一款輕型的數(shù)據(jù)庫。它的設(shè)計(jì)目標(biāo)是嵌入式的,目前已經(jīng)有很多嵌入式產(chǎn)品使用了它。它占用資源非常的低,在嵌入式設(shè)備中,只需要幾百K的內(nèi)存就夠了。Android提供了創(chuàng)建和是用SQLite數(shù)據(jù)庫的API。SQLiteDatabase代表一個(gè)數(shù)據(jù)庫對(duì)象,提供了操作數(shù)據(jù)庫的一些方法。在Android的SDK下有sqlite3工具,可以利用它創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表和執(zhí)行一些SQL語句。本次任務(wù)通過一個(gè)SQLite數(shù)據(jù)庫操作演示軟件的制作來介紹SQLite的使用。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)演示了對(duì)SQLite數(shù)據(jù)庫的整個(gè)基本操作流程。程序界面由8個(gè)Button、2個(gè)EditText、2個(gè)TextView構(gòu)成,采用線性布局設(shè)計(jì)。其中8個(gè)Button分別實(shí)現(xiàn)了創(chuàng)建數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)表、添加數(shù)據(jù)、查詢數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)、刪除數(shù)據(jù)表、關(guān)閉數(shù)據(jù)庫等數(shù)據(jù)庫的基本操作功能。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)軟件界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“sqlitedemo”。編寫主界面xml代碼,在項(xiàng)目“sqlitedemo”中雙擊打開主界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成界面代碼的編寫。任務(wù)實(shí)施操作2:編寫功能代碼。雙擊打開src目錄中的“MainActivity.java”程序,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成功能代碼的編寫。1/2任務(wù)實(shí)施接上程序。2/2任務(wù)實(shí)施操作3:運(yùn)行程序,測(cè)試效果。運(yùn)行結(jié)果如下:相關(guān)知識(shí)認(rèn)識(shí)SQLiteSQLite數(shù)據(jù)類型SQLiteDatabase介紹技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)SQLiteSQLite是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等主流的操作系統(tǒng),同時(shí)能夠跟很多主流程序語言相結(jié)合,比如Java、C++、C#等。并且數(shù)據(jù)處理速度比較快。技術(shù)知識(shí)知識(shí)點(diǎn)2:SQLite數(shù)據(jù)類型SQLite具有以下五種常用的數(shù)據(jù)類型:(1)NULL:這個(gè)值為空值。(2)VARCHAR(n):長(zhǎng)度不固定且其最大長(zhǎng)度為n的字串,n不能超過4000。(3)CHAR(n):長(zhǎng)度固定為n的字串,n不能超過254。(4)INTEGER:值被標(biāo)識(shí)為整數(shù),依據(jù)值的大小可以依次被存儲(chǔ)為1,2,3,4,5,6,7,8。(5)REAL:所有值都是浮動(dòng)的數(shù)值,被存儲(chǔ)為8字節(jié)的IEEE浮動(dòng)標(biāo)記序號(hào)。(6)TEXT:值為文本字符串,使用數(shù)據(jù)庫編碼存儲(chǔ)。(7)BLOB:值是BLOB數(shù)據(jù)塊,以輸入的數(shù)據(jù)格式進(jìn)行存儲(chǔ)。即如何輸入就如何存儲(chǔ),不改變格式。(8)DATA:包含了年份、月份、日期。(9)TIME:包含了小時(shí)、分鐘、秒。技術(shù)知識(shí)知識(shí)點(diǎn)3:SQLiteDatabase介紹SQLiteDatabase代表一個(gè)數(shù)據(jù)庫對(duì)象,提供了操作數(shù)據(jù)庫的一些方法。下面是SQLiteDatabase的常用方法。方法名稱描述openOrCreateDatabase(Stringpath,SQLiteDatabase.CursorFactoryfactory)打開或創(chuàng)建數(shù)據(jù)庫insert(Stringtable,StringnullColumnHack,ContentValuesvalues)插入一條記錄delete(Stringtable,StringwhereClause,String[]whereArgs)刪除一條記錄query(Stringtable,String[]columns,Stringselection,String[]selectionArgs,

StringgroupBy,Stringhaving,StringorderBy)查詢一條記錄update(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)修改記錄execSQL(Stringsql)執(zhí)行一條SQL語句close()關(guān)閉數(shù)據(jù)庫拓展訓(xùn)練編程實(shí)現(xiàn)一個(gè)查找用戶信息的界面及功能實(shí)現(xiàn)。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】編程實(shí)現(xiàn)以下Android應(yīng)用軟件項(xiàng)目的功能。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)6-5:SQLiteOpenHelper使用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),需要掌握其數(shù)據(jù)存儲(chǔ)技術(shù)和操作,本次任務(wù)將使用SQLiteOpenHelper實(shí)現(xiàn)對(duì)SQLite數(shù)據(jù)庫的操作。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】使用SQLiteOpenHelper實(shí)現(xiàn)對(duì)SQLite數(shù)據(jù)庫的操作。導(dǎo)入任務(wù)【任務(wù)描述】SQLiteOpenHelper是Android軟件開發(fā)中對(duì)數(shù)據(jù)庫操作的一個(gè)輔助類??梢杂盟鼇碓L問數(shù)據(jù)庫(包含創(chuàng)建、增、刪、改、查)和版本控制。其使用方式是通過創(chuàng)建子類繼承SQLiteOpenHelper類,使用它的一些方法來對(duì)數(shù)據(jù)庫進(jìn)行操作。本次任務(wù)將介紹使用SQLiteOpenHelper對(duì)SQLite中的數(shù)據(jù)庫和數(shù)據(jù)表進(jìn)行訪問和管理。導(dǎo)入任務(wù)【任務(wù)分析】本次任務(wù)的程序界面非常簡(jiǎn)單,采用線性布局設(shè)計(jì),只設(shè)置1個(gè)TextView。該TextView控件用于顯示對(duì)數(shù)據(jù)庫查詢結(jié)構(gòu)數(shù)據(jù)的顯示。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)軟件界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“sqliteopenhelperdemo”。編寫主界面xml代碼,在項(xiàng)目“sqliteopenhelperdemo”中雙擊打開主界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成界面代碼的編寫。任務(wù)實(shí)施操作2:編寫SQLiteOpenHelper輔助類。創(chuàng)建一個(gè)Java類,命名為“MySQLiteOpenHelper”,使該類繼承于SQLiteOpenHelper類。雙擊打開src目錄中新創(chuàng)建的“MySQLiteOpenHelper.java”程序,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成MySQLiteOpenHelper類的編寫。任務(wù)實(shí)施操作3:編寫功能代碼。雙擊打開src目錄中的“MainActivity.java”程序,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成功能代碼的編寫。相關(guān)知識(shí)認(rèn)識(shí)SQLiteOpenHelper使用adb命令查看數(shù)據(jù)庫技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)SQLiteOpenHelperSQLiteOpenHelper類是SQLiteDatabase一個(gè)輔助類。這個(gè)類主要生成一個(gè)數(shù)據(jù)庫,并對(duì)數(shù)據(jù)庫的版本進(jìn)行管理。當(dāng)在程序當(dāng)中調(diào)用這個(gè)類的方法getWritableDatabase()或者getReadableDatabase()方法的時(shí)候,如果當(dāng)時(shí)沒有數(shù)據(jù),那么Android系統(tǒng)就會(huì)自動(dòng)生成一個(gè)數(shù)據(jù)庫。SQLiteOpenHelper是一個(gè)抽象類,通常需要?jiǎng)?chuàng)建一個(gè)類繼承它,并且實(shí)現(xiàn)里面的3個(gè)函數(shù):(1)onCreate(SQLiteDatabase):在數(shù)據(jù)庫第一次生成的時(shí)候會(huì)調(diào)用這個(gè)方法,也就是說,只有在創(chuàng)建數(shù)據(jù)庫的時(shí)候才會(huì)調(diào)用,當(dāng)然也有一些其它的情況,一般我們?cè)谶@個(gè)方法里邊生成數(shù)據(jù)庫表。(2)onUpgrade(SQLiteDatabase,int,int):當(dāng)數(shù)據(jù)庫需要升級(jí)的時(shí)候,Android系統(tǒng)會(huì)主動(dòng)的調(diào)用這個(gè)方法。一般我們?cè)谶@個(gè)方法里邊刪除數(shù)據(jù)表,并建立新的數(shù)據(jù)表,當(dāng)然是否還需要做其他的操作,完全取決于應(yīng)用的需求。(3)onOpen(SQLiteDatabase):這是當(dāng)打開數(shù)據(jù)庫時(shí)的回調(diào)函數(shù),一般不常使用。技術(shù)知識(shí)知識(shí)點(diǎn)2:使用adb命令查看數(shù)據(jù)庫(1)在命令行窗口輸入adbshell回車,進(jìn)入了命令行,就可以使用adb命令了。(2)ls回車,顯示所有的東西,其中有個(gè)data。(3)cddata回車,再ls回車,cddata回車,ls回車后就會(huì)看到很多的應(yīng)用程序包名,找到數(shù)據(jù)庫程序的包名,然后進(jìn)入。(4)進(jìn)去后在查看所有,會(huì)看到有databases,進(jìn)入databases,顯示所有就會(huì)發(fā)現(xiàn)數(shù)據(jù)庫名字。(5)sqlite3dbname回車就進(jìn)入了該數(shù)據(jù)庫,然后“.schema”就會(huì)看到該應(yīng)用程序的所有表及建表語句。(6)之后就可以使用標(biāo)準(zhǔn)的SQL語句查看剛才生成的數(shù)據(jù)庫及對(duì)數(shù)據(jù)執(zhí)行增刪改查了。技術(shù)知識(shí)知識(shí)點(diǎn)2:在SQLite中常用到的adb命令:(1)查看.database顯示數(shù)據(jù)庫信息;.tables顯示表名稱;.schema命令可以查看創(chuàng)建數(shù)據(jù)表時(shí)的SQL命令;.schematable_name查看創(chuàng)建表table_name時(shí)的SQL的命令;(2)插入記錄insertintotable_namevalues(field1,field2,field3...);(3)查詢記錄select*fromtable_name;查看table_name表中所有記錄;select*fromtable_namewherefield1='xxxxx';查詢符合指定條件的記錄;(4)刪除數(shù)據(jù)droptable_name;刪除表;dropindex_name;刪除索引;拓展訓(xùn)練使用SQLiteOpenHelper實(shí)現(xiàn)一個(gè)英文生詞本軟件的設(shè)計(jì)與制作。拓展訓(xùn)練【實(shí)戰(zhàn)訓(xùn)練】編程完成以下Android生詞本應(yīng)用軟件的實(shí)現(xiàn)。劉國3c365@Android項(xiàng)目開發(fā)任務(wù)6-6:SharedPreferences使用導(dǎo)入任務(wù)任務(wù)實(shí)施相關(guān)知識(shí)拓展訓(xùn)練導(dǎo)入任務(wù)進(jìn)行Android應(yīng)用軟件開發(fā),需要掌握其數(shù)據(jù)存儲(chǔ)技術(shù)和操作,本次任務(wù)將使用SharedPreferences完成數(shù)據(jù)保存與讀取。導(dǎo)入任務(wù)【任務(wù)目標(biāo)】使用SharedPreferences設(shè)計(jì)與制作一個(gè)隨機(jī)數(shù)生成器。導(dǎo)入任務(wù)【任務(wù)描述】在Android應(yīng)用軟件開發(fā)中,我們常常需要保存數(shù)據(jù)。常用的存儲(chǔ)方式包括文件讀寫、SQLite數(shù)據(jù)存儲(chǔ)等,這類存儲(chǔ)方式適用于保存較多數(shù)據(jù)的情形。除此之外,Android系統(tǒng)還提供了SharedPreferences以鍵值對(duì)的形式進(jìn)行數(shù)據(jù)保存于讀取。

SharedPreferences常用于保存用戶偏好設(shè)置數(shù)據(jù),例如某個(gè)CheckBox的選擇狀態(tài)、用戶登錄狀態(tài)、配置信息、密碼記憶功能等。本次任務(wù)將用SharedPreferences來保存和讀取隨機(jī)數(shù)生成器生成的數(shù)據(jù)。導(dǎo)入任務(wù)【任務(wù)分析】隨機(jī)數(shù)生成器界面設(shè)計(jì)包含2個(gè)Button,采用水平線性布局設(shè)計(jì)。其中“保存數(shù)據(jù)”按鈕用于存入隨機(jī)數(shù)和隨機(jī)數(shù)產(chǎn)生的時(shí)間,“讀取數(shù)據(jù)”按鈕用于讀取保存的隨機(jī)數(shù)和時(shí)間并顯示出來。任務(wù)實(shí)施創(chuàng)建項(xiàng)目后進(jìn)行界面設(shè)計(jì)編寫實(shí)現(xiàn)功能的程序代碼運(yùn)行應(yīng)用程序并查看結(jié)果任務(wù)實(shí)施操作1:設(shè)計(jì)軟件界面。創(chuàng)建一個(gè)【AndroidApplicationProject】,將該項(xiàng)目命名為“sharedpreferencesdemo”。編寫主界面xml代碼,在項(xiàng)目“sharedpreferencesdemo”中雙擊打開主界面程序“activity_main.xml”,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成界面代碼的編寫。任務(wù)實(shí)施操作2:編寫功能代碼。雙擊打開src目錄中的“MainActivity.java”程序,在代碼編輯窗口輸入對(duì)應(yīng)程序代碼,完成功能代碼的編寫。任務(wù)實(shí)施操作3:運(yùn)行程序測(cè)試。效果如下:相關(guān)知識(shí)認(rèn)識(shí)SharedPreferencesSharedPreferences使用方法技術(shù)知識(shí)知識(shí)點(diǎn)1:認(rèn)識(shí)SharedPreferencesSharePreferences是用來存儲(chǔ)一些簡(jiǎn)單配置信息的一種機(jī)制,例如保存登錄用戶的賬號(hào)和密碼。它使用Map數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù),以鍵值對(duì)的方式存儲(chǔ),采用了XML格式將數(shù)據(jù)存儲(chǔ)到設(shè)備中。它只能在同一個(gè)包內(nèi)使用,不能在不同的包之間使用。即只能在創(chuàng)建它的應(yīng)用中使用,其他應(yīng)用無法使用。它創(chuàng)建的存儲(chǔ)文件保存在/data/data/<packagename>/shares_prefs文件夾下。技術(shù)知識(shí)知識(shí)點(diǎn)2:SharedPreferences使用方法

(1)通過Context.getSharedPreferences方法獲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論