秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

G手機開發(fā)之Android應用開發(fā)共8天課程課件

收藏

編號:215283377    類型:共享資源    大?。?span id="mzebxcnn0" class="font-tahoma">1.04MB    格式:PPT    上傳時間:2023-06-02
10
積分
關 鍵 詞:
手機 開發(fā) Android 應用 課程 課件
資源描述:
高級軟件人才實作培訓專家高級軟件人才實作培訓專家!3G3G應用開發(fā)之應用開發(fā)之AndroidAndroidG手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!什么是3G3G,全稱為3rd Generation,中文含義就是指第三代數(shù)字通信。所謂3G,是指將無線通信與國際互聯(lián)網(wǎng)等多媒體通信結合的新一代移動通信系統(tǒng)。3G只是一種通信技術標準,符合這個標準的技術有WCDMA、CDMA2000、TD-SCDMA三種制式。中國聯(lián)通使用的是WCDMA(世界上大部分3G網(wǎng)絡都采用的是該標準);中國電信使用的是CDMA2000(日、韓和北美使用);中國移動使用的是具有自主知識產權的TD-SCDMA(只有中國才使用)。相對第一代模擬制式手機(1G)和第二代GSM、CDMA等數(shù)字手機(2G),3G網(wǎng)絡能處理圖像、音樂、視頻等多種媒體形式,提供包括網(wǎng)頁瀏覽、電話會議、電子商務等多種信息服務。第三代與前兩代的主要區(qū)別是在傳輸聲音和數(shù)據(jù)的速度上有很大的提升。由于3G商用需要相當浩大的工程,要從目前的2G邁向3G不可能一下就銜接得上,因此前幾年2.5G的手機就出現(xiàn)了。符合2.5G標準的技術有CDMA2000 1X和GPRS,中國聯(lián)通使用的是CDMA2000 1X標準,中國移動使用的是GPRS標準。目前,我們可以把2.5G移動通信技術看作是2G邁向3G的銜接性技術,在2.5G網(wǎng)絡下出現(xiàn)了如WAP、藍牙(Bluetoot)等技術。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!智能手機軟件平臺智能手機軟件平臺有:Symbian,Windows Mobile,RIM BlackBerry,Android,iPhone,Palm,Brew,Java/J2ME。2009年市場份額:Symbian 51%RIM BlackBerry 18%iPhone 13.3windows Mobile 9.3%linux 4.6%Android 1.8%G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!什么是什么是AndroidAndroidAndroid是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng),它包括一個操作系統(tǒng),中間件和一些重要的應用程序。它采用軟件堆層(Software Stack,又名軟件疊層)的架構,主要分為三部分。底層以Linux內核工作為基礎,由C語言開發(fā),只提供基本功能;中間層包括函數(shù)庫Library和Dalvik虛擬機,由C+開發(fā)。最上層是各種應用軟件,包括通話程序,短信程序等,應用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。不存在任何以往阻礙移動產業(yè)創(chuàng)新的專有權障礙,號稱是首個為移動終端打造的真正開放和完整的移動軟件。這里,你可以把android看作是一個類似于windows的操作系統(tǒng)。學習android平臺下的軟件開發(fā)正如以前學習windows平臺下的軟件開發(fā)一樣。在國內,android的前景十分廣闊,國內很多的廠商和運營商也紛紛加入了android陣營,包括中國移動,中國聯(lián)通,華為通訊,聯(lián)想等大企業(yè)。同時android應用的范圍不僅僅在手機,國內一些廠家也陸續(xù)推出了采用android系統(tǒng)的MID產品,比較著名的包括由Rockchip和藍魔推出的同時具備高清播放和智能系統(tǒng)的音悅匯W7,我們可以預見android也將會被廣泛應用在國產智能上網(wǎng)設備上,將進一步擴大Andorid系統(tǒng)的應用范圍。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!如何安裝 Android SDK 和Eclipse 插件所需開發(fā)環(huán)境所需開發(fā)環(huán)境:JDK 5 或 JDK 6(僅有JRE不夠)、Eclipse 3.5(galileo)下載用于在下載用于在Eclipse 開發(fā)開發(fā)android應用的應用的ADT 插件插件 在企業(yè)開發(fā)中,很多程序員使用Eclipse IDE作為應用的開發(fā)環(huán)境。為了使得Android應用的創(chuàng)建,運行和調試更加方便快捷。Android的開發(fā)團隊專門針對Eclipse IDE定制了一個插件:Android Development Tools(ADT)下載地址:安裝安裝 Eclipse 插件插件(ADT)啟動 Eclipse,選擇 Help Install New Software,在出現(xiàn)的對話框里,點擊Add按鈕,在對話框的name一欄輸入“ADT”,然后點擊Archive.,瀏覽和選擇已經(jīng)下載的ADT插件插件壓縮文件。點擊 OK.。返回可用軟件的視圖,你會看到這個插件,然后選擇Developer Tools(會選中下面的“Android Developer Tools”和“Android Editors“),點擊 Next,最后重啟 Eclipse。下載安裝下載安裝Android SDK:Android SDK包含了開發(fā)Android應用所依賴的jar文件、運行環(huán)境及相關工具。下載地址:下載完SDK后,把.zip文件解壓到你電腦上合適位置。啟動 Eclipse,選擇window-preferences,在打開的視圖左邊點擊android,在右邊的SDK Location中選擇Android SDK所在位置。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!開發(fā)第一個Android應用打開Eclipse,新建項目(點擊FileNewProject),在項目列表中展開Android目錄,選擇Android Project,如下圖:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!開發(fā)第一個Android應用G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!開發(fā)第一個Android應用點擊”finish”即可完成項目的創(chuàng)建,創(chuàng)建后的項目已經(jīng)是一個可運行的Android應用,我們可以通過下面方式運行此應用:點擊工具欄上機器人形狀的虛擬設備管理器(簡稱“AVD“),如下:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!開發(fā)第一個Android應用在打開的虛擬設備管理器中創(chuàng)建一個虛擬手機:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!開發(fā)第一個Android應用在項目上右鍵點擊run as Android application,如下圖:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!Android應用程序架構src/java原代碼存放目錄原代碼存放目錄gen/自動生成目錄自動生成目錄gen 目錄中存放所有由Android開發(fā)工具自動生成的文件。目錄中最重要的就是R.java文件。這個文件由Android開發(fā)工具自動產生的。Android開發(fā)工具會自動根據(jù)你放入res目錄的xml界面文件、圖標與常量,同步更新修改R.java文件。正因為R.java文件是由開發(fā)工具自動生成的,所以我們應避免手工修改R.java。R.java在應用中起到了字典的作用,它包含了界面、圖標、常量等各種資源的id,通過R.java,應用可以很方便地找到對應資源。另外編繹器也會檢查R.java列表中的資源是否被使用到,沒有被使用到的資源不會編繹進軟件中,這樣可以減少應用在手機占用的空間。res/資源資源(Resource)目錄目錄在這個目錄中我們可以存放應用使用到的各種資源,如xml界面文件,圖片或數(shù)據(jù)。具體請看ppt下方備注欄。assets資源目錄資源目錄Android除了提供/res目錄存放資源文件外,在/assets目錄也可以存放資源文件,而且/assets目錄下的資源文件不會在R.java自動生成ID,所以讀取/assets目錄下的文件必須指定文件的路徑,如:AndroidManifest.xml 項目清單文件項目清單文件 這個文件列出了應用程序所提供的功能,以后你開發(fā)好的各種組件需要在該文件中進行配置,如果應用使用到了系統(tǒng)內置的應用(如電話服務、互聯(lián)網(wǎng)服務、短信服務、GPS服務等等),你還需在該文件中聲明使用權限。default.properties 項目環(huán)境信息項目環(huán)境信息,一般是不需要修改此文件G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!電話拔號器效果圖:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!電話拔號器因為應用要使用手機的電話服務,所以要在清單文件AndroidManifest.xml中添加電話服務權限:略.G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!電話拔號器界面布局:LinearLayout(線性布局)、AbsoluteLayout(絕對布局)、RelativeLayout(相對布局)、TableLayout(表格布局)、FrameLayout(幀布局)G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!Android中的顯示單位l px(pixels)像素 一般HVGA代表320 x480像素,這個用的比較多。l dip或dp(device independent pixels)設備獨立像素 這個和設備硬件有關,一般為了支持WVGA、HVGA和QVGA 推薦使用這個,不依賴像素。l sp(scaled pixels best for text size)比例像素 主要處理字體的大小,可以根據(jù)系統(tǒng)的字體自適應。除了上面三個顯示單位,下面還有幾個不太常用:l in(inches)英寸l mm(millimeters)毫米 l pt(points)點,1/72英寸為了適應不同分辨率,不同的像素密度,推薦使用dip,文字使用sp。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!電話拔號器Activity:public class DialerAction extends Activity Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);Button button=(Button)findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener()public void onClick(View v)EditText editText=(EditText)findViewById(R.id.mobile);Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse(tel:+editText.getText();DialerAction.this.startActivity(intent););G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!電話拔號器測試步驟:1在Eclipse中運行此應用 2在Dos窗口中進入android SDK安裝路徑的tools目錄,輸入以下命令再開啟一個Android模擬器:emulator-data itcast 注:itcast為用戶數(shù)據(jù)存取文件,如果該文件不存在,默認在tools目錄創(chuàng)建該文件 3在電話擾號器中輸入上圖現(xiàn)顯的電話號碼G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!“尚未注冊網(wǎng)絡”錯誤信息的解決辦法打開Android模擬器時,出現(xiàn)無信號,拔打電話或發(fā)短信時,提示“尚未注冊網(wǎng)絡”錯誤信息的解決方案如下。l 場景一:你的電腦沒有連接上互聯(lián)網(wǎng),同時也沒有在局域網(wǎng)。解決辦法:右鍵點擊網(wǎng)上鄰居,選擇屬性,在網(wǎng)絡連接窗口中右鍵點擊本地連接,選擇屬性,設置TCP/IP屬性如下:IP地址:192.168.1.100 子網(wǎng)掩碼:255.255.255.0 默認網(wǎng)關:192.168.1.100 首選DNS服務器:192.168.1.100l 場景二:你的電腦沒有連接上互聯(lián)網(wǎng),但在局域網(wǎng)。解決辦法:右鍵點擊網(wǎng)上鄰居,選擇屬性,在網(wǎng)絡連接窗口中右鍵點擊本地連接,選擇屬性,設置TCP/IP屬性如下:IP地址:設置成你所在局域網(wǎng)的IP,如:192.168.1.100 子網(wǎng)掩碼:設置成你所在局域網(wǎng)的掩碼,如:255.255.255.0 默認網(wǎng)關:設置成你所在局域網(wǎng)的網(wǎng)關,一般網(wǎng)關的IP格式為:*.*.*.1,如:192.168.1.1 首選DNS服務器:設置成你所在局域網(wǎng)的路由器IP,一般路由器的IP格式為:*.*.*.1,如:192.168.1.1l 最后一種解決方案是:讓你的電腦連接上互聯(lián)網(wǎng)。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!短信發(fā)送器效果圖:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!短信發(fā)送器因為應用要使用手機的短信服務,所以要在清單文件AndroidManifest.xml中添加短信服務權限:略.G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!短信發(fā)送器界面布局:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!短信發(fā)送器Activity主要代碼:String mobile=mobileView.getText().toString();String content=contentView.getText().toString();SmsManager smsManager=SmsManager.getDefault();PendingIntent sentIntent=PendingIntent.getBroadcast(SMSSender.this,0,new Intent(),0);/如果字數(shù)超過70,需拆分成多條短信發(fā)送 List msgs=smsManager.divideMessage(content);for(String msg:msgs)smsManager.sendTextMessage(mobile,null,msg,sentIntent,null);/最后二個參數(shù)為短信已發(fā)送的廣播意圖,最后一個參數(shù)為短信對方已收到短信的廣播意圖 Toast.makeText(SMSSender.this,短信發(fā)送完成,Toast.LENGTH_LONG).show();G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!短信發(fā)送器測試步驟:1在Eclipse中運行此應用 2在Dos窗口中進入android SDK安裝路徑的tools目錄,輸入以下命令再開啟一個Android模擬器:emulator-data itcast 注:itcast為用戶數(shù)據(jù)存取文件,如果該文件不存在,默認在tools目錄創(chuàng)建該文件 3在短信發(fā)送器的手機號中輸入上圖現(xiàn)顯的電話號碼注:目前Android系統(tǒng)對中文短信尚未支持,所以發(fā)送中文短信會有亂碼,這個問題日后會被解決的。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!對應用進行單元測試在實際開發(fā)中,開發(fā)android軟件的過程需要不斷地進行測試。而使用Junit測試框架,側是正規(guī)Android開發(fā)的必用技術,在Junit中可以得到組件,可以模擬發(fā)送事件和檢測程序處理的正確性。第一步:首先在AndroidManifest.xml中加入下面紅色代碼:.上面targetPackage指定的包要和應用的package相同。第二步:編寫單元測試代碼(選擇要測試的方法,右鍵點擊“Run As”-“Android Junit Test”):import android.test.AndroidTestCase;import android.util.Log;public class XMLTest extends AndroidTestCase public void testSomething()throws Throwable Assert.assertTrue(1+1=3);G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!數(shù)據(jù)存儲與訪問很多時候我們的軟件需要對處理后的數(shù)據(jù)進行存儲或再次訪問。Android為數(shù)據(jù)存儲提供了如下幾種方式:l文件lSharedPreferences(參數(shù))lSQLite數(shù)據(jù)庫l內容提供者(Content provider)l網(wǎng)絡G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用文件進行數(shù)據(jù)存儲首先給大家介紹使用文件如何對數(shù)據(jù)進行存儲,Activity提供了open()方法可以用于把數(shù)據(jù)輸出到文件中,具體的實現(xiàn)過程與在J2SE環(huán)境中保存數(shù)據(jù)到文件中是一樣的。public class extends Activity Override public void onCreate(Bundle savedInstanceState).outStream=this.open(itcast.txt,Context.MODE_PRIVATE);outStream.write(傳智播客.getBytes();outStream.close();open()方法的第一參數(shù)用于指定文件名稱,不能包含路徑分隔符“/”,如果文件不存在,Android 會自動創(chuàng)建它。創(chuàng)建的文件保存在/data/data/files目錄,如:/data/data/cn.itcast.action/,通過點擊Eclipse菜單“Window”-“Show View”-“Other”,在對話窗口中展開android文件夾,選擇下面的視圖,然后在視圖中展開/data/data/files目錄就可以看到該文件。open()方法的第二參數(shù)用于指定操作模式,有四種模式,分別為:Context.MODE_PRIVATE =0Context.MODE_APPEND =32768Context.MODE_WORLD_READABLE=1Context.MODE_WORLD_WRITEABLE=2G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用文件進行數(shù)據(jù)存儲Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數(shù)據(jù),只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPENDContext.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創(chuàng)建新文件。Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件。MODE_WORLD_READABLE:表示當前文件可以被其他應用讀??;MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。如果希望文件被其他應用讀和寫,可以傳入:open(itcast.txt,Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);android有一套自己的安全模型,當應用程序(.apk)在安裝時系統(tǒng)就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創(chuàng)建的文件,sharedpreferences,數(shù)據(jù)庫都應該是私有的(位于/data/data/files),其他程序無法訪問。除非在創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有這樣其他程序才能正確訪問。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!讀取文件內容如果要打開存放在/data/data/files目錄應用私有的文件,可以使用Activity提供open()方法。inStream=this.getContext().open(itcast.txt);Log.i(,readInStream(inStream);readInStream()的方法請看本頁下面?zhèn)渥?。或者直接使用文件的絕對路徑:=new File(/data/data/cn.itcast.action/);inStream=new(file);Log.i(,readInStream(inStream);注意:上面文件路徑中的“cn.itcast.action”為應用所在包,當你在編寫代碼時應替換為你自己應用使用的包。對于私有文件只能被創(chuàng)建該文件的應用訪問,如果希望文件能被其他應用讀和寫,可以在創(chuàng)建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權限。Activity還提供了getCacheDir()和get()方法:getCacheDir()方法用于獲取/data/data/cache目錄get()方法用于獲取/data/data/files目錄G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!把文件存放在SDCard使用Activity的open()方法保存文件,文件是存放在手機空間上,一般手機的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。對于像視頻這樣的大文件,我們可以把它存放在SDCard。SDCard是干什么的?你可以把它看作是移動硬盤或U盤。在模擬器中使用SDCard,你需要先創(chuàng)建一張SDCard卡(當然不是真的SDCard,只是鏡像文件)。創(chuàng)建SDCard可以在Eclipse創(chuàng)建模擬器時隨同創(chuàng)建,也可以使用DOS命令進行創(chuàng)建,如下:在Dos窗口中進入android SDK安裝路徑的tools目錄,輸入以下命令創(chuàng)建一張容量為2G的SDCard,文件后綴可以隨便取,建議使用.img:mksdcard 2048M D:AndroidToolsdcard.img在程序中訪問在程序中訪問SDCard,你需要申請訪問你需要申請訪問SDCard的權限。的權限。在AndroidManifest.xml中加入訪問SDCard的權限如下:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!把文件存放在SDCard要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,并且可以進行讀寫。注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的權限if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)=Environment.getExternalStorageDirectory();/獲取SDCard目錄 =new,“itcast.txt”);outStream=new(saveFile);outStream.write(傳智播客.getBytes();outStream.close();Environment.getExternalStorageState()方法用于獲取SDCard的狀態(tài),如果手機裝有SDCard,并且可以進行讀寫,那么方法返回的狀態(tài)等于Environment.MEDIA_MOUNTED。Environment.getExternalStorageDirectory()方法用于獲取SDCard的目錄,當然要獲取SDCard的目錄,你也可以這樣寫:=new File(/mnt/sdcard);/獲取SDCard目錄=new,itcast.txt);/上面兩句代碼可以合成一句:=new File(/mnt/sdcard/itcast.txt);outStream=new(saveFile);outStream.write(傳智播客test.getBytes();outStream.close();G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用SAX或者DOM或者pull解析XML文件在Android平臺上可以使用Simple API for XML(SAX)、Document Object Model(DOM)和Android附帶的pull解析器解析XML文件。下面是本例子要解析的XML文件:文件名稱:itcast.xml李明30李向梅25例子定義了一個javabean用于存放上面解析出來的xml內容,這個javabean為Person,代碼請見本頁下面?zhèn)渥ⅲ篏手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用SAX讀取XML文件SAX是一個解析速度快并且占用內存少的xml解析器,非常適合用于Android等移動設備。SAX解析XML文件采用的是事件驅動,也就是說,它并不需要解析完整個文檔,在按內容順序解析文檔的過程中,SAX會判斷當前讀到的字符是否合法XML語法中的某部分,如果符合就會觸發(fā)事件。所謂事件,其實就是一些回調(callback)方法,這些方法(事件)定義在ContentHandler接口。下面是一些ContentHandler接口常用的方法:startDocument()當遇到文檔的開頭的時候,調用這個方法,可以在其中做一些預處理的工作。endDocument()和上面的方法相對應,當文檔結束的時候,調用這個方法,可以在其中做一些善后的工作。startElement(String namespaceURI,String localName,String qName,Attributes atts)當讀到一個開始標簽的時候,會觸發(fā)這個方法。namespaceURI就是命名空間,localName是不帶命名空間前綴的標簽名,qName是帶命名空間前綴的標簽名。通過atts可以得到所有的屬性名和相應的值。要注意的是SAX中一個重要的特點就是它的流式處理,當遇到一個標簽的時候,它并不會紀錄下以前所碰到的標簽,也就是說,在startElement()方法中,所有你所知道的信息,就是標簽的名字和屬性,至于標簽的嵌套結構,上層標簽的名字,是否有子元屬等等其它與結構相關的信息,都是不得而知的,都需要你的程序來完成。這使得SAX在編程處理上沒有DOM來得那么方便。endElement(String uri,String localName,String name)這個方法和上面的方法相對應,在遇到結束標簽的時候,調用這個方法。characters(char ch,int start,int length)這個方法用來處理在XML文件中讀到的內容,第一個參數(shù)為文件的字符串內容,后面兩個參數(shù)是讀到的字符串在這個數(shù)組中的起始位置和長度,使用new String(ch,start,length)就可以獲取內容。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用SAX讀取XML文件只要為SAX提供實現(xiàn)ContentHandler接口的類,那么該類就可以得到通知事件(實際上就是SAX調用了該類中的回調方法)。因為ContentHandler是一個接口,在使用的時候可能會有些不方便,因此,SAX還為其制定了一個Helper類:DefaultHandler,它實現(xiàn)了ContentHandler接口,但是其所有的方法體都為空,在實現(xiàn)的時候,你只需要繼承這個類,然后重寫相應的方法即可。使用SAX解析itcast.xml的代碼如下:public static List readXML(InputStream inStream)try SAXParserFactory spf=SAXParserFactory.newInstance();SAXParser saxParser=spf.newSAXParser();/創(chuàng)建解析器/設置解析器的相關特性,=true 表示開啟命名空間特性 /saxParser.setProperty(,true);XMLContentHandler handler=new XMLContentHandler();saxParser.parse(inStream,handler);inStream.close();return handler.getPersons();catch(Exception e)e.printStackTrace();return null;SAX 支持已內置到JDK1.5中,你無需添加任何的jar文件。關于XMLContentHandler的代碼實現(xiàn)請看本頁下面?zhèn)渥?。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用DOM讀取XML文件除了使用 SAX可以解析XML文件,大家也可以使用熟悉的DOM來解析XML文件。DOM解析XML文件時,會將XML文件的所有內容以文檔樹方式存放在內存中,然后允許您使用DOM API遍歷XML樹、檢索所需的數(shù)據(jù)。使用DOM操作XML的代碼看起來是比較直觀的,并且在編碼方面比基于SAX的實現(xiàn)更加簡單。但是,因為DOM需要將XML文件的所有內容以文檔樹方式存放在內存中,所以內存的消耗比較大,特別對于運行Android的移動設備來說,因為設備的資源比較寶貴,所以建議還是采用SAX來解析XML文件,當然,如果XML文件的內容比較小采用DOM也是可行的。代碼請看本頁下方備注G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用Pull解析器讀取XML文件除了可以使用 SAX和DOM解析XML文件,大家也可以使用Android內置的Pull解析器解析XML文件。Pull解析器的運行方式與 SAX 解析器相似。它提供了類似的事件,如:開始元素和結束元素事件,使用parser.next()可以進入下一個元素并觸發(fā)相應事件。事件將作為數(shù)值代碼被發(fā)送,因此可以使用一個switch對感興趣的事件進行處理。當元素開始解析時,調用parser.nextText()方法可以獲取下一個Text類型節(jié)點的值。使用Pull解析器讀取itcast.xml的代碼在本頁下方備注Pull解析器的源碼及文檔下載網(wǎng)址:G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用Pull解析器生成XML文件有些時候,我們需要生成一個XML文件,生成XML文件的方法有很多,如:可以只使用一個StringBuilder組拼XML內容,然后把內容寫入到文件中;或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,這里推薦大家使用Pull解析器。使用Pull解析器生成一個與itcast.xml文件內容相同的myitcast.xml文件,代碼在本頁下方備注使用代碼如下(生成XML文件):=new File(myitcast.xml);outStream=new(xmlFile);OutputStreamWriter outStreamWriter=new OutputStreamWriter(outStream,UTF-8);BufferedWriter writer=new BufferedWriter(outStreamWriter);writeXML(persons,writer);writer.flush();writer.close();如果只想得到生成的xml字符串內容,可以使用StringWriter:StringWriter writer=new StringWriter();writeXML(persons,writer);String content=writer.toString();G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用SharedPreferences進行數(shù)據(jù)存儲很多時候我們開發(fā)的軟件需要向用戶提供軟件參數(shù)設置功能,例如我們常用的QQ,用戶可以設置是否允許陌生人添加自己為好友。對于軟件配置參數(shù)的保存,如果是window軟件通常我們會采用ini文件進行保存,如果是j2se應用,我們會采用properties屬性文件或者xml進行保存。如果是Android應用,我們最適合采用什么方式保存軟件配置參數(shù)呢?Android平臺給我們提供了一個SharedPreferences類,它是一個輕量級的存儲類,特別適合用于保存軟件配置參數(shù)。使用SharedPreferences保存數(shù)據(jù),其背后是用xml文件存放數(shù)據(jù),文件存放在/data/data/shared_prefs目錄下:SharedPreferences sharedPreferences=getSharedPreferences(itcast,Context.MODE_PRIVATE);Editor editor=sharedPreferences.edit();/獲取編輯器editor.putString(name,傳智播客);editor.putInt(age,4);mit();/提交修改生成的itcast.xml文件內容如下:傳智播客因為SharedPreferences背后是使用xml文件保存數(shù)據(jù),getSharedPreferences(name,mode)方法的第一個參數(shù)用于指定該文件的名稱,名稱不用帶后綴,后綴會由Android自動加上。方法的第二個參數(shù)指定文件的操作模式,共有四種操作模式,這四種模式前面介紹使用文件方式保存數(shù)據(jù)時已經(jīng)講解過。如果希望SharedPreferences背后使用的xml文件能被其他應用讀和寫,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權限。另外Activity還提供了另一個getPreferences(mode)方法操作SharedPreferences,這個方法默認使用當前類不帶包名的類名作為文件的名稱。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!訪問SharedPreferences中的數(shù)據(jù)訪問SharedPreferences中的數(shù)據(jù)代碼如下:SharedPreferences sharedPreferences=getSharedPreferences(itcast,Context.MODE_PRIVATE);/getString()第二個參數(shù)為缺省值,如果preference中不存在該key,將返回缺省值String name=sharedPreferences.getString(name,);int age=sharedPreferences.getInt(age,1);如果訪問其他應用中的Preference,前提條件是:該preference創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE權限。如:有個為cn.itcast.action的應用使用下面語句創(chuàng)建了preference。getSharedPreferences(itcast,Context.MODE_WORLD_READABLE);其他應用要訪問上面應用的preference,首先需要創(chuàng)建上面應用的Context,然后通過Context 訪問preference,訪問preference時會在應用所在包下的shared_prefs目錄找到preference:Context otherAppsContext=createPackageContext(cn.itcast.action,Context.CONTEXT_IGNORE_SECURITY);SharedPreferences sharedPreferences=otherAppsContext.getSharedPreferences(itcast,Context.MODE_WORLD_READABLE);String name=sharedPreferences.getString(name,);int age=sharedPreferences.getInt(age,0);如果不通過創(chuàng)建Context訪問其他應用的preference,也可以以讀取xml文件方式直接訪問其他應用preference對應的xml文件,如:=new File(“/data/data/shared_prefs/itcast.xml”);/應替換成應用的包名G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用嵌入式關系型SQLite數(shù)據(jù)庫存儲數(shù)據(jù)除了可以使用文件或SharedPreferences存儲數(shù)據(jù),還可以選擇使用SQLite數(shù)據(jù)庫存儲數(shù)據(jù)。在Android平臺上,集成了一個嵌入式關系型數(shù)據(jù)庫SQLite,SQLite3支持 NULL、INTEGER、REAL(浮點數(shù)字)、TEXT(字符串文本)和BLOB(二進制對象)數(shù)據(jù)類型,雖然它支持的類型只有五種,但實際上sqlite3也接受varchar(n)、char(n)、decimal(p,s)等數(shù)據(jù)類型,只不過在運算或保存時會轉成對應的五種數(shù)據(jù)類型。SQLite最大的特點是你可以把各種類型的數(shù)據(jù)保存到任何字段中,而不用關心字段聲明的數(shù)據(jù)類型是什么。例如:可以在Integer類型的字段中存放字符串,或者在布爾型字段中存放浮點數(shù),或者在字符型字段中存放日期型值。但有一種情況例外:定義為INTEGER PRIMARY KEY的字段只能存儲64位整數(shù),當向這種字段保存除整數(shù)以外的數(shù)據(jù)時,將會產生錯誤。另外,SQLite 在解析CREATE TABLE 語句時,會忽略 CREATE TABLE 語句中跟在字段名后面的數(shù)據(jù)類型信息,如下面語句會忽略 name字段的類型信息:CREATE TABLE person(personid integer primary key autoincrement,name varchar(20)SQLite可以解析大部分標準SQL語句,如:查詢語句:select*from 表名 where 條件子句 group by 分組字句 having.order by 排序子句如:select*from person select*from person order by id desc select name from person group by name having count(*)1分頁SQL與mysql類似,下面SQL語句獲取5條記錄,跳過前面3條記錄select*from Account limit 5 offset 3 或者 select*from Account limit 3,5插入語句:insert into 表名(字段列表)values(值列表)。如:insert into person(name,age)values(傳智,3)更新語句:update 表名 set 字段名=值 where 條件子句。如:update person set name=傳智 where id=10刪除語句:delete from 表名 where 條件子句。如:delete from person where id=10G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用SQLiteOpenHelper對數(shù)據(jù)庫進行版本管理我們在編寫數(shù)據(jù)庫應用軟件時,需要考慮這樣的問題:因為我們開發(fā)的軟件可能會安裝在很多用戶的手機上,如果應用使用到了SQLite數(shù)據(jù)庫,我們必須在用戶初次使用軟件時創(chuàng)建出應用使用到的數(shù)據(jù)庫表結構及添加一些初始化記錄,另外在軟件升級的時候,也需要對數(shù)據(jù)表結構進行更新。那么,我們如何才能實現(xiàn)在用戶初次使用或升級軟件時自動在用戶的手機上創(chuàng)建出應用需要的數(shù)據(jù)庫表呢?總不能讓我們在每個需要安裝此軟件的手機上通過手工方式創(chuàng)建數(shù)據(jù)庫表吧?因為這種需求是每個數(shù)據(jù)庫應用都要面臨的,所以在Android系統(tǒng),為我們提供了一個名為SQLiteOpenHelper的抽象類,必須繼承它才能使用,它是通過對數(shù)據(jù)庫版本進行管理來實現(xiàn)前面提出的需求。為了實現(xiàn)對數(shù)據(jù)庫版本進行管理,SQLiteOpenHelper類提供了兩個重要的方法,分別是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion),前者用于初次使用軟件時生成數(shù)據(jù)庫表,后者用于升級軟件時更新數(shù)據(jù)庫表結構。當調用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法獲取用于操作數(shù)據(jù)庫的SQLiteDatabase實例的時候,如果數(shù)據(jù)庫不存在,Android系統(tǒng)會自動生成一個數(shù)據(jù)庫,接著調用onCreate()方法,onCreate()方法在初次生成數(shù)據(jù)庫時才會被調用,在onCreate()方法里可以生成數(shù)據(jù)庫表結構及添加一些應用使用到的初始化數(shù)據(jù)。onUpgrade()方法在數(shù)據(jù)庫的版本發(fā)生變化時會被調用,一般在軟件升級時才需改變版本號,而數(shù)據(jù)庫的版本是由程序員控制的,假設數(shù)據(jù)庫現(xiàn)在的版本是1,由于業(yè)務的變更,修改了數(shù)據(jù)庫表結構,這時候就需要升級軟件,升級軟件時希望更新用戶手機里的數(shù)據(jù)庫表結構,為了實現(xiàn)這一目的,可以把原來的數(shù)據(jù)庫版本設置為2(有同學問設置為3行不行?當然可以,如果你愿意,設置為100也行),并且在onUpgrade()方法里面實現(xiàn)表結構的更新。當軟件的版本升級次數(shù)比較多,這時在onUpgrade()方法里面可以根據(jù)原版號和目標版本號進行判斷,然后作出相應的表結構及數(shù)據(jù)更新。getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用于操作數(shù)據(jù)庫的SQLiteDatabase實例。但getWritableDatabase()方法以讀寫方式打開數(shù)據(jù)庫,一旦數(shù)據(jù)庫的磁盤空間滿了,數(shù)據(jù)庫就只能讀而不能寫,倘若使用getWritableDatabase()打開數(shù)據(jù)庫就會出錯。getReadableDatabase()方法先以讀寫方式打開數(shù)據(jù)庫,如果數(shù)據(jù)庫的磁盤空間滿了,就會打開失敗,當打開失敗后會繼續(xù)嘗試以只讀方式打開數(shù)據(jù)庫。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用SQLiteOpenHelper對數(shù)據(jù)庫進行版本管理public class DatabaseHelper extends SQLiteOpenHelper /類沒有實例化,是不能用作父類構造器的參數(shù),必須聲明為靜態(tài) private static final String name=itcast;/數(shù)據(jù)庫名稱 private static final int version=1;/數(shù)據(jù)庫版本 public DatabaseHelper(Context context)/第三個參數(shù)CursorFactory指定在執(zhí)行查詢時獲得一個游標實例的工廠類,設置為null,代表使用系統(tǒng)默認的工廠類 super(context,name,null,version);Override public void onCreate(SQLiteDatabase db)db.execSQL(CREATE TABLE IF NOT EXISTS person(personid integer primary key autoincrement,name varchar(20),age INTEGER);Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)db.execSQL(DROP TABLE IF EXISTS person);onCreate(db);上面onUpgrade()方法在數(shù)據(jù)庫版本每次發(fā)生變化時都會把用戶手機上的數(shù)據(jù)庫表刪除,然后再重新創(chuàng)建。一般在實際項目中是不能這樣做的,正確的做法是在更新數(shù)據(jù)庫表結構時,還要考慮用戶存放于數(shù)據(jù)庫中的數(shù)據(jù)不會丟失。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用SQLiteDatabase操作SQLite數(shù)據(jù)庫Android提供了一個名為SQLiteDatabase的類,該類封裝了一些操作數(shù)據(jù)庫的API,使用該類可以完成對數(shù)據(jù)進行添加(Create)、查詢(Retrieve)、更新(Update)和刪除(Delete)操作(這些操作簡稱為CRUD)。對SQLiteDatabase的學習,我們應該重點掌握execSQL()和rawQuery()方法。execSQL()方法可以執(zhí)行insert、delete、update和CREATE TABLE之類有更改行為的SQL語句;rawQuery()方法用于執(zhí)行select語句。execSQL()方法的使用例子:SQLiteDatabase db=.;db.execSQL(insert into person(name,age)values(傳智播客,4);db.close();執(zhí)行上面SQL語句會往person表中添加進一條記錄,在實際應用中,語句中的“傳智播客”這些參數(shù)值會由用戶輸入界面提供,如果把用戶輸入的內容原樣組拼到上面的insert語句,當用戶輸入的內容含有單引號時,組拼出來的SQL語句就會存在語法錯誤。要解決這個問題需要對單引號進行轉義,也就是把單引號轉換成兩個單引號。有些時候用戶往往還會輸入像“&”這些特殊SQL符號,為保證組拼好的SQL語句語法正確,必須對SQL語句中的這些特殊SQL符號都進行轉義,顯然,對每條SQL語句都做這樣的處理工作是比較煩瑣的。SQLiteDatabase類提供了一個重載后的execSQL(String sql,Object bindArgs)方法,使用這個方法可以解決前面提到的問題,因為這個方法支持使用占位符參數(shù)(?)。使用例子如下:SQLiteDatabase db=.;db.execSQL(insert into person(name,age)values(?,?),new Object傳智播客,4);db.close();execSQL(String sql,Object bindArgs)方法的第一個參數(shù)為SQL語句,第二個參數(shù)為SQL語句中占位符參數(shù)的值,參數(shù)值在數(shù)組中的順序要和占位符的位置對應。G手機開發(fā)之Android應用開發(fā)共8天課程課件高級軟件人才實作培訓專家高級軟件人才實作培訓專家!使用SQLiteDatabase操作SQLite數(shù)據(jù)庫SQLite
展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
提示  裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
關于本文
本文標題:G手機開發(fā)之Android應用開發(fā)共8天課程課件
鏈接地址:http://www.hcyjhs8.com/article/215283377.html

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  sobing.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!