版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast3G3G運用開發(fā)之運用開發(fā)之AndroidAndroid講師:黎活明講師:黎活明高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast什么是什么是3G3G3G,全稱為3rd Generation,中文含義就是指第三代數(shù)字通訊。所謂3G,是指將無線通訊與國際互聯(lián)網(wǎng)等多媒體通訊結(jié)合的新一代挪動通訊系統(tǒng)。 3G只是一種通訊技術(shù)規(guī)范,符合這個規(guī)范的技術(shù)有WCDMA、CDMA2000、TD-SCDMA三種制式。中國聯(lián)通運用的是WCDMA世界上大部分3G網(wǎng)絡(luò)都采用的是該規(guī)范 ;中國電信運用的是
2、CDMA2000 日、韓和北美運用;中國挪動運用的是具有自主知識產(chǎn)權(quán)的TD-SCDMA只需中國才運用 。相對第一代模擬制式手機(1G)和第二代GSM、CDMA等數(shù)字手機(2G),3G網(wǎng)絡(luò)能處置圖像、音樂、視頻等多種媒體方式,提供包括網(wǎng)頁閱讀、會議、電子商務(wù)等多種信息效力。第三代與前兩代的主要區(qū)別是在傳輸聲音和數(shù)據(jù)的速度上有很大的提升。由于3G商用需求相當浩大的工程,要從目前的2G邁向3G不能夠一下就銜接得上,因此前幾年2.5G的手機就出現(xiàn)了。符合2.5G規(guī)范的技術(shù)有CDMA2000 1X和GPRS,中國聯(lián)通運用的是CDMA2000 1X規(guī)范,中國挪動運用的是GPRS規(guī)范。目前,我們可以把2.5
3、G挪動通訊技術(shù)看作是2G邁向3G的銜接性技術(shù),在2.5G網(wǎng)絡(luò)下出現(xiàn)了如WAP、藍牙(Bluetoot) 等技術(shù)。 高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast智能手機軟件平臺智能手機軟件平臺智能手機軟件平臺有:Symbian, Windows Mobile, RIM BlackBerry, Android, iPhone, Palm, Brew, Java/J2ME。2021年市場份額:Symbian 51%RIM BlackBerry 18%iPhone 13.3windows Mobile 9.3%linux 4.6%Android 1.8%高級軟件
4、人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast什么是什么是AndroidAndroidAndroid一詞的本義指“機器人,Android是Google于07年11月5日宣布的基于Linux平臺開源手機操作系統(tǒng)稱號,該平臺由操作系統(tǒng)、中間件、用戶界面和運用軟件組成。在國內(nèi),聯(lián)想、戴爾、多普達、飛利浦、中興、三星、摩托羅拉、等廠商曾經(jīng)推出基于Android平臺的智能手機。在3G運用開發(fā)領(lǐng)域,Android的開展前景不容小視,也將會成為未來主流的手機操作系統(tǒng)。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast如何安裝如何安裝 Andro
5、id SDK Android SDK 和和Eclipse Eclipse 插件插件所需開發(fā)環(huán)境所需開發(fā)環(huán)境:JDK 5 或或 JDK 6 (僅有僅有JRE不夠不夠) Eclipse 3.5 (galileo)下載下載ADT 的的Eclipse 插件插件 dl.google/android/ADT-0.9.5.zip安裝安裝 Eclipse 插件插件 (ADT)啟動啟動 Eclipse,選擇,選擇 Help Install New Software,在出現(xiàn)的對話,在出現(xiàn)的對話框里,點擊框里,點擊Add按鈕,在對話框的按鈕,在對話框的name一欄輸入一欄輸入“ADT, 然后點然后點擊擊Archiv
6、e.,閱讀和選擇曾經(jīng)下載的,閱讀和選擇曾經(jīng)下載的ADT插件緊縮文件。插件緊縮文件。 點擊點擊 OK.。前往可用軟件的視圖,他會看到這個插件,然后選擇。前往可用軟件的視圖,他會看到這個插件,然后選擇Developer Tools (會選中下面的會選中下面的“Android Developer Tools和和 “Android Editors“),點擊,點擊 Next,最后重啟,最后重啟 Eclipse。下載下載Android SDK:dl.google/android/android-sdk_r04-windows.zip下載完下載完SDK后,把后,把.zip文件解壓到他電腦上適宜位置。啟動文件
7、解壓到他電腦上適宜位置。啟動 Eclipse,選擇選擇window-preferences,在翻開的視圖左邊點擊,在翻開的視圖左邊點擊android,在,在右邊的右邊的SDK Location中選擇中選擇Android SDK所在位置。所在位置。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast開發(fā)第一個開發(fā)第一個AndroidAndroid運用運用翻開Eclipse,新建工程(點擊FileNewProject),在工程列表中展開Android目錄,選擇Android Project,如以下圖:高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客
8、教育 itcast開發(fā)第一個開發(fā)第一個AndroidAndroid運用運用高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast開發(fā)第一個開發(fā)第一個AndroidAndroid運用運用點擊finish即可完成工程的創(chuàng)建,創(chuàng)建后的工程曾經(jīng)是一個可運轉(zhuǎn)的Android運用,我們可以經(jīng)過下面方式運轉(zhuǎn)此運用:點擊工具欄上手機外形的虛擬設(shè)備管理器簡稱“AVD“,如下:高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast開發(fā)第一個開發(fā)第一個AndroidAndroid運用運用在翻開的虛擬設(shè)備管理器中創(chuàng)建一個虛擬手機:高級軟件人才實作培訓(xùn)專家高級
9、軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast開發(fā)第一個開發(fā)第一個AndroidAndroid運用運用在工程上右鍵點擊run as Android application,如以下圖:高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcastAndroidAndroid運用程序架構(gòu)運用程序架構(gòu)src/ java原代碼存放目錄原代碼存放目錄gen/ 自動生成目錄自動生成目錄gen 目錄中存放一切由目錄中存放一切由Android開發(fā)工具自動生成的文件。目錄中最重要的就是開發(fā)工具自動生成的文件。目錄中最重要的就是R.java文件。文件。 這這個文件由個文件由Andr
10、oid開發(fā)工具自動產(chǎn)生的。開發(fā)工具自動產(chǎn)生的。Android開發(fā)工具會自動根據(jù)他放入開發(fā)工具會自動根據(jù)他放入res目錄的目錄的xml界面界面文件、圖標與常量,同步更新修正文件、圖標與常量,同步更新修正R.java文件。正由于文件。正由于R.java文件是由開發(fā)工具自動生成的,所文件是由開發(fā)工具自動生成的,所以我們應(yīng)防止手工修正以我們應(yīng)防止手工修正R.java。R.java在運用中起到了字典的作用,它包含了界面、圖標、常量在運用中起到了字典的作用,它包含了界面、圖標、常量等各種資源的等各種資源的id,經(jīng)過,經(jīng)過R.java,運用可以很方便地找到對應(yīng)資源。另外編繹器也會檢查,運用可以很方便地找到對
11、應(yīng)資源。另外編繹器也會檢查R.java列列表中的資源能否被運用到,沒有被運用到的資源不會編繹進軟件中,這樣可以減少運用在手機占表中的資源能否被運用到,沒有被運用到的資源不會編繹進軟件中,這樣可以減少運用在手機占用的空間。用的空間。res/ 資源資源(Resource)目錄目錄在這個目錄中我們可以存放運用運用到的各種資源,如在這個目錄中我們可以存放運用運用到的各種資源,如xml界面文件,圖片或數(shù)據(jù)。詳細請看界面文件,圖片或數(shù)據(jù)。詳細請看ppt下方備注欄。下方備注欄。AndroidManifest.xml 功能清單文件功能清單文件 這個文件列出了運用程序所提供的功能,在這個文件中,他可以指定運用程
12、序運用到的效力這個文件列出了運用程序所提供的功能,在這個文件中,他可以指定運用程序運用到的效力(如如效力、互聯(lián)網(wǎng)效力、短信效力、效力、互聯(lián)網(wǎng)效力、短信效力、GPS效力等等效力等等)。另外當他新添加一個。另外當他新添加一個Activity的時候,也需求在的時候,也需求在這個文件中進展相應(yīng)配置,只需配置好后,才干調(diào)用此這個文件中進展相應(yīng)配置,只需配置好后,才干調(diào)用此Aperties 工程環(huán)境信息,普通是不需求修正此文件工程環(huán)境信息,普通是不需求修正此文件高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast拔號器拔號器效果圖:高級
13、軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast拔號器拔號器由于運用要運用手機的效力,所以要在清單文件AndroidManifest.xml中添加效力權(quán)限: 略. 高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast拔號器拔號器界面規(guī)劃: LinearLayout (線性規(guī)劃)、AbsoluteLayout(絕對規(guī)劃)、RelativeLayout(相對規(guī)劃)、TableLayout(表格規(guī)劃)、FrameLayout(幀規(guī)劃)高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast拔號器拔號器Acti
14、vity: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
15、v) EditText editText = (EditText)findViewById(R.idle); Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(:+ editText.getText(); DialerAction.this.startActivity(intent); ); 高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast拔號器拔號器測試步驟: 1在Eclipse中運轉(zhuǎn)此運用 2在Dos窗口中進入android SDK安裝途徑的tools目錄,輸入以下命令再開啟一個Androi
16、d模擬器: emulator -data itcast 注:itcast為用戶數(shù)據(jù)存取文件,假設(shè)該文件不存在,默許在tools目錄創(chuàng)建該文件 3在擾號器中輸入上圖現(xiàn)顯的號碼高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast短信發(fā)送器短信發(fā)送器效果圖:高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast短信發(fā)送器短信發(fā)送器由于運用要運用手機的短信效力,所以要在清單文件AndroidManifest.xml中添加短信效力權(quán)限: 略. 高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast短信發(fā)送器短信發(fā)
17、送器界面規(guī)劃: 高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast短信發(fā)送器短信發(fā)送器Activity主要代碼:String mobile = mobileView.getText().toString();String content = contentView.getText().toString(); SmsManager smsManager = SmsManager.getDefault(); PendingIntent sentIntent = PendingIntent.getBroadcast(SMSSender.this, 0, new In
18、tent(), 0);if(content.length()70)/假設(shè)字數(shù)超越70,需拆分成多條短信發(fā)送 List msgs = smsManager.divideMessage(content); for(String msg : msgs) smsManager.sendTextMessage(mobile, null, msg, sentIntent, null); /最后二個參數(shù)為短信已發(fā)送的廣播意圖,最后一個參數(shù)為短信對方已收到短信的廣播意圖 else smsManager.sendTextMessage(mobile, null, content, sentIntent, nul
19、l);Toast.makeText(SMSSender.this, 短信發(fā)送完成, Toast.LENGTH_LONG).show();高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast短信發(fā)送器短信發(fā)送器測試步驟: 1在Eclipse中運轉(zhuǎn)此運用 2在Dos窗口中進入android SDK安裝途徑的tools目錄,輸入以下命令再開啟一個Android模擬器: emulator -data itcast 注:itcast為用戶數(shù)據(jù)存取文件,假設(shè)該文件不存在,默許在tools目錄創(chuàng)建該文件 3在短信發(fā)送器的手機號中輸入上圖現(xiàn)顯的號碼注:目前Android系統(tǒng)對中
20、文短信尚未支持,所以發(fā)送中文短信會有亂碼,這個問題日后會被處理的。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast數(shù)據(jù)存儲與訪問數(shù)據(jù)存儲與訪問很多時候我們的軟件需求對處置后的數(shù)據(jù)進展存儲或再次訪問。Android為數(shù)據(jù)存儲提供了多種方式,分別有如下幾種:文件SharedPreferencesSQLite數(shù)據(jù)庫內(nèi)容提供者Content provider網(wǎng)絡(luò)高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用文件進展數(shù)據(jù)存儲運用文件進展數(shù)據(jù)存儲首先給大家引見運用文件如何對數(shù)據(jù)進展存儲,Activity提供了openFileOu
21、tput()方法可以用于把數(shù)據(jù)輸出到文件中,詳細的實現(xiàn)過程與在J2SE環(huán)境中保管數(shù)據(jù)到文件中是一樣的。public class FileActivity extends Activity Override public void onCreate(Bundle savedInstanceState) . FileOutputStream outStream = this.openFileOutput(itcast.txt, Context.MODE_PRIVATE); outStream.write(傳智播客.getBytes(); outStream.close(); openFileOut
22、put()方法的第一參數(shù)用于指定文件稱號,不能包含途徑分隔符“/ ,假設(shè)文件不存在,Android 會自動創(chuàng)建它。創(chuàng)建的文件保管在/data/data/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,經(jīng)過點擊Eclipse菜單“Window-“Show View-“Other,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然后在File Explorer視圖中展開/data/data/files目錄就可以看到該文件。openFileOutput()方法的第二參數(shù)用于指定操作方式,有四種方式,分別
23、為: Context.MODE_PRIVATE = 0Context.MODE_APPEND = 32768Context.MODE_WORLD_READABLE = 1Context.MODE_WORLD_WRITEABLE = 2高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用文件進展數(shù)據(jù)存儲運用文件進展數(shù)據(jù)存儲Context.MODE_PRIVATE:為默許操作方式,代表該文件是私有數(shù)據(jù),只能被運用本身訪問,:為默許操作方式,代表該文件是私有數(shù)據(jù),只能被運用本身訪問,在該方式下,寫入的內(nèi)容會覆蓋原文件的內(nèi)容,假設(shè)想把新寫入的內(nèi)容追加到原文件中。可以
24、運在該方式下,寫入的內(nèi)容會覆蓋原文件的內(nèi)容,假設(shè)想把新寫入的內(nèi)容追加到原文件中。可以運用用Context.MODE_APPENDContext.MODE_APPEND:方式會檢查文件能否存在,存在就往文件追加內(nèi)容,否那么就創(chuàng)建:方式會檢查文件能否存在,存在就往文件追加內(nèi)容,否那么就創(chuàng)建新文件。新文件。Context.MODE_WORLD_READABLE和和Context.MODE_WORLD_WRITEABLE用來控制其他用來控制其他運用能否有權(quán)限讀寫該文件。運用能否有權(quán)限讀寫該文件。MODE_WORLD_READABLE:表示當前文件可以被其他運用讀?。唬罕硎井斍拔募梢员黄渌\用讀?。籑
25、ODE_WORLD_WRITEABLE:表示當前文件可以被其他運用寫入。:表示當前文件可以被其他運用寫入。假設(shè)希望文件被其他運用讀和寫,可以傳入:假設(shè)希望文件被其他運用讀和寫,可以傳入: openFileOutput(itcast.txt, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);android有一套本人的平安模型,當運用程序有一套本人的平安模型,當運用程序(.apk)在安裝時系統(tǒng)就會分配給他一個在安裝時系統(tǒng)就會分配給他一個userid,當該,當該運用要去訪問其他資源比如文件的時候,就需求運用要去訪問其他資源比如文
26、件的時候,就需求userid匹配。默許情況下,任何運用創(chuàng)建的文件,匹配。默許情況下,任何運用創(chuàng)建的文件,sharedpreferences,數(shù)據(jù)庫都應(yīng)該是私有的位于,數(shù)據(jù)庫都應(yīng)該是私有的位于/data/data/files,其他,其他程序無法訪問。除非在創(chuàng)建時指定了程序無法訪問。除非在創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者或者Context.MODE_WORLD_WRITEABLE ,只需這樣其他程序才干正確訪問。,只需這樣其他程序才干正確訪問。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast讀取文件內(nèi)容讀取文件內(nèi)容假設(shè)要翻開
27、存放在/data/data/files目錄運用私有的文件,可以運用Activity提供openFileInput()方法。FileInputStream inStream = this.getContext().openFileInput(itcast.txt);Log.i(FileTest, readInStream(inStream);readInStream()的方法請看本頁下面?zhèn)渥??;蛘咧苯舆\用文件的絕對途徑:File file = new File(/data/data/cn.itcast.action/files/itcast.txt);FileInputStream inStre
28、am = new FileInputStream(file);Log.i(FileTest, readInStream(inStream);留意:上面文件途徑中的“cn.itcast.action為運用所在包,當他在編寫代碼時應(yīng)交換為他本人運用運用的包。對于私有文件只能被創(chuàng)建該文件的運用訪問,假設(shè)希望文件能被其他運用讀和寫,可以在創(chuàng)建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權(quán)限。Activity還提供了getCacheDir()和getFilesDir()方法:getCacheDir()方法用于獲取/data/
29、data/cache目錄getFilesDir()方法用于獲取/data/data/files目錄高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast把文件存放在把文件存放在SDCardSDCard運用Activity的openFileOutput()方法保管文件,文件是存放在手機空間上,普通手機的存儲空間不是很大,存放些小文件還行,假設(shè)要存放像視頻這樣的大文件,是不可行的。對于像視頻這樣的大文件,我們可以把它存放在SDCard。 SDCard是干什么的?他可以把它看作是挪動硬盤或U盤。在模擬器中運用SDCard,他需求先創(chuàng)建一張SDCard卡當然不是真的SDC
30、ard,只是鏡像文件。創(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的權(quán)限。在AndroidManifest.xml中參與訪問SDCard的權(quán)限如下:高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast把文件存放在把文件存放在SDCardSD
31、Card要往SDCard存放文件,程序必需先判別手機能否裝有SDCard,并且可以進展讀寫。留意:訪問SDCard必需在AndroidManifest.xml中參與訪問SDCard的權(quán)限if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) File sdCardDir = Environment.getExternalStorageDirectory();/獲取SDCard目錄 File saveFile = new File(sdCardDir, “itcast.txt);FileOutputSt
32、ream outStream = new FileOutputStream(saveFile);outStream.write(傳智播客.getBytes();outStream.close();Environment.getExternalStorageState()方法用于獲取SDCard的形狀,假設(shè)手機裝有SDCard,并且可以進展讀寫,那么方法前往的形狀等于Environment.MEDIA_MOUNTED。Environment.getExternalStorageDirectory()方法用于獲取SDCard的目錄,當然要獲取SDCard的目錄,他也可以這樣寫:File sdCar
33、dDir = new File(/sdcard); /獲取SDCard目錄File saveFile = new File(sdCardDir, itcast.txt); /上面兩句代碼可以合成一句: File saveFile = new File(/sdcard/itcast.txt);FileOutputStream outStream = new FileOutputStream(saveFile);outStream.write(傳智播客test.getBytes();outStream.close();高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itca
34、st運用運用SAXSAX或者或者DOMDOM或者或者pullpull讀取讀取XMLXML文件文件在Android平臺上可以運用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附帶的pull解析器解析XML文件。 下面是本例子要解析的XML文件:文件稱號:itcast.xml李明30李向梅25例子定義了一個javabean用于存放上面解析出來的xml內(nèi)容, 這個javabean為Person,代碼請見本頁下面?zhèn)渥ⅲ焊呒壾浖瞬艑嵶髋嘤?xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用運用SAXSAX讀取讀取
35、XMLXML文件文件SAX是一個解析速度快并且占用內(nèi)存少的xml解析器,非常適宜用于Android等挪動設(shè)備。 SAX解析XML文件采用的是事件驅(qū)動,也就是說,它并不需求解析完好個文檔,在按內(nèi)容順序解析文檔的過程中,SAX會判別當前讀到的字符能否合法XML語法中的某部分,假設(shè)符合就會觸發(fā)事件。所謂事件,其實就是一些回調(diào)callback方法,這些方法(事件)定義在ContentHandler接口。下面是一些ContentHandler接口常用的方法:startDocument()當遇到文檔的開頭的時候,調(diào)用這個方法,可以在其中做一些預(yù)處置的任務(wù)。endDocument()和上面的方法相對應(yīng),當文
36、檔終了的時候,調(diào)用這個方法,可以在其中做一些善后的任務(wù)。 startElement(String namespaceURI, String localName, String qName, Attributes atts) 當讀到一個開場標簽的時候,會觸發(fā)這個方法。namespaceURI就是命名空間,localName是不帶命名空間前綴的標簽名,qName是帶命名空間前綴的標簽名。經(jīng)過atts可以得到一切的屬性名和相應(yīng)的值。要留意的是SAX中一個重要的特點就是它的流式處置,當遇到一個標簽的時候,它并不會紀錄下以前所碰到的標簽,也就是說,在startElement()方法中,一切他所知道的信息
37、,就是標簽的名字和屬性,至于標簽的嵌套構(gòu)造,上層標簽的名字,能否有子元屬等等其它與構(gòu)造相關(guān)的信息,都是不得而知的,都需求他的程序來完成。這使得SAX在編程處置上沒有DOM來得那么方便。endElement(String uri, String localName, String name)這個方法和上面的方法相對應(yīng),在遇到終了標簽的時候,調(diào)用這個方法。characters(char ch, int start, int length) 這個方法用來處置在XML文件中讀到的內(nèi)容,第一個參數(shù)用于存放文件的內(nèi)容,后面兩個參數(shù)是讀到的字符串在這個數(shù)組中的起始位置和長度,運用new String(ch,
38、start,length)就可以獲取內(nèi)容。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用運用SAXSAX讀取讀取XMLXML文件文件只需為SAX提供實現(xiàn)ContentHandler接口的類,那么該類就可以得到通知事件實踐上就是SAX調(diào)用了該類中的回調(diào)方法。由于ContentHandler是一個接口,在運用的時候能夠會有些不方便,因此,SAX還為其制定了一個Helper類:DefaultHandler,它實現(xiàn)了這個接口,但是其一切的方法體都為空,在實現(xiàn)的時候,他只需求承繼這個類,然后重載相應(yīng)的方法即可。運用SAX解析itcast.xml的代碼如下:pub
39、lic static List readXML(InputStream inStream) try SAXParserFactory spf = SAXParserFactory.newInstance();SAXParser saxParser = spf.newSAXParser(); /創(chuàng)建解析器/設(shè)置解析器的相關(guān)特性,/sax/features/namespaces = true 表示開啟命名空間特性 saxParser.setProperty(/sax/features/namespaces,true);XMLContentHandler handler
40、= new XMLContentHandler();saxParser.parse(inStream, handler);inStream.close();return handler.getPersons(); catch (Exception e) e.printStackTrace(); return null;SAX 支持已內(nèi)置到JDK1.5中,他無需添加任何的jar文件。關(guān)于XMLContentHandler的代碼實現(xiàn)請看本頁下面?zhèn)渥ⅰ8呒壾浖瞬艑嵶髋嘤?xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用運用DOMDOM讀取讀取XMLXML文件文件除了可以運用 SA
41、X解析XML文件,大家也可以運用熟習(xí)的DOM來解析XML文件。 DOM解析XML文件時,會將XML文件的一切內(nèi)容讀取到內(nèi)存中,然后允許您運用DOM API遍歷XML樹、檢索所需的數(shù)據(jù)。運用DOM操作XML的代碼看起來比較直觀,并且,在某些方面比基于SAX的實現(xiàn)更加簡單。但是,由于DOM需求將XML文件的一切內(nèi)容讀取到內(nèi)存中,所以內(nèi)存的耗費比較大,特別對于運轉(zhuǎn)Android的挪動設(shè)備來說,由于設(shè)備的資源比較珍貴,所以建議還是采用SAX來解析XML文件,當然,假設(shè)XML文件的內(nèi)容比較小采用DOM是可行的。代碼請看本頁下方備注高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 i
42、tcast運用運用PullPull解析器讀取解析器讀取XMLXML文件文件除了可以運用 SAX和DOM解析XML文件,大家也可以運用Android內(nèi)置的Pull解析器解析XML文件。 Pull解析器的運轉(zhuǎn)方式與 SAX 解析器類似。它提供了類似的事件,如:開場元素和終了元素事件,運用parser.next()可以進入下一個元素并觸發(fā)相應(yīng)事件。事件將作為數(shù)值代碼被發(fā)送,因此可以運用一個switch對感興趣的事件進展處置。當元素開場解析時,調(diào)用parser.nextText()方法可以獲取下一個Text類型元素的值。運用Pull解析器讀取itcast.xml的代碼在本頁下方備注Pull解析器的源碼
43、及文檔下載/高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用運用PullPull解析器生成解析器生成XMLXML文件文件有些時候,我們需求生成一個XML文件,生成XML文件的方法有很多,如:可以只運用一個StringBuilder組拼XML內(nèi)容,然后把內(nèi)容寫入到文件中;或者運用DOM API生成XML文件,或者也可以運用pull解析器生成XML文件,這里引薦大家運用Pull解析器。運用Pull解析器生成一個與itcast.xml文件內(nèi)容一樣的myitcast.xml文件,代碼在本頁下方備注運用代碼如下生成XML文件:File xml
44、File = new File(myitcast.xml);FileOutputStream outStream = new FileOutputStream(xmlFile);OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, UTF-8);BufferedWriter writer = new BufferedWriter(outStreamWriter);writeXML(persons, writer);writer.flush();writer.close();假設(shè)只想得到生成的xml內(nèi)容,可以
45、運用StringWriter:StringWriter writer = new StringWriter();writeXML(persons, writer);String content = writer.toString();高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用運用SharedPreferencesSharedPreferences進展數(shù)據(jù)存儲進展數(shù)據(jù)存儲很多時候我們開發(fā)的軟件需求向用戶提供軟件參數(shù)設(shè)置功能,例如我們常用的QQ,用戶可以設(shè)置能否允許陌生人添加本人為好友。對于軟件配置參數(shù)的保管,假設(shè)是window軟件通常我們會采用ini
46、文件進展保管,假設(shè)是j2se運用,我們會采用properties屬性文件進展保管。假設(shè)是Android運用,我們最適宜采用什么方式保管軟件配置參數(shù)呢?Android平臺給我們提供了一個SharedPreferences類,它是一個輕量級的存儲類,特別適宜用于保管軟件配置參數(shù)。運用SharedPreferences保管數(shù)據(jù),其背后是用xml文件存放數(shù)據(jù),文件存放在/data/data/shared_prefs目錄下:SharedPreferences sharedPreferences = getSharedPreferences(itcast, Context.MODE_PRIVATE);Ed
47、itor editor = sharedPreferences.edit();/獲取編輯器editor.putString(name, 傳智播客);editor.putInt(age, 4);editormit();/提交修正生成的itcast.xml文件內(nèi)容如下:傳智播客由于SharedPreferences背后是運用xml文件保管數(shù)據(jù),getSharedPreferences(name,mode)方法的第一個參數(shù)用于指定該文件的稱號,稱號不用帶后綴,后綴會由Android自動加上。方法的第二個參數(shù)指定文件的操作方式,共有四種操作方式,這四種方式前面引見運用文件方式保管數(shù)據(jù)時曾經(jīng)講解過。假設(shè)
48、希望SharedPreferences背后運用的xml文件能被其他運用讀和寫,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權(quán)限。另外Activity還提供了另一個getPreferences(mode)方法操作SharedPreferences,這個方法默許運用當前類不帶包名的類名作為文件的稱號。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast訪問訪問SharedPreferencesSharedPreferences中的數(shù)據(jù)中的數(shù)據(jù)訪問SharedPreferences中的數(shù)據(jù)代碼
49、如下:SharedPreferences sharedPreferences = getSharedPreferences(itcast, Context.MODE_PRIVATE);/getString()第二個參數(shù)為缺省值,假設(shè)preference中不存在該key,將前往缺省值String name = sharedPreferences.getString(name, );int age = sharedPreferences.getInt(age, 1);假設(shè)訪問其他運用中的Preference,前提條件是:該preference創(chuàng)建時指定了Context.MODE_WORLD_REA
50、DABLE或者Context.MODE_WORLD_WRITEABLE權(quán)限。如:有個為cn.itcast.action的運用運用下面語句創(chuàng)建了preference。getSharedPreferences(itcast, Context.MODE_WORLD_READABLE);其他運用要訪問上面運用的preference,首先需求創(chuàng)建上面運用的Context,然后經(jīng)過Context 訪問preference ,訪問preference時會在運用所在包下的shared_prefs目錄找到preference :Context otherAppsContext = createPackageCo
51、ntext(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);假設(shè)不經(jīng)過創(chuàng)建Context訪問其他運用的preference,可以以讀取
52、xml文件方式直接訪問其他運用preference對應(yīng)的xml文件,如: File xmlFile = new File(“/data/data/shared_prefs/itcast.xml);/應(yīng)交換成運用的包名高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用嵌入式關(guān)系型運用嵌入式關(guān)系型SQLiteSQLite數(shù)據(jù)庫存儲數(shù)據(jù)數(shù)據(jù)庫存儲數(shù)據(jù)除了可以運用文件或SharedPreferences存儲數(shù)據(jù),還可以選擇運用SQLite數(shù)據(jù)庫存儲數(shù)據(jù)。在Android平臺上,集成了一個嵌入式關(guān)系型數(shù)據(jù)庫SQLite,SQLite3支持 NULL、INTEGER、
53、REAL浮點數(shù)字、TEXT(字符串文本)和BLOB(二進制對象)數(shù)據(jù)類型,雖然它支持的類型雖然只需五種,但實踐上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等數(shù)據(jù)類型,只不過在運算或保管時會轉(zhuǎn)成對應(yīng)的五種數(shù)據(jù)類型。 SQLite最大的特點是他可以保管任何類型的數(shù)據(jù)到任何字段中,無論這列聲明的數(shù)據(jù)類型是什么。例如:可以在Integer字段中存放字符串,或者在布爾型字段中存放浮點數(shù),或者在字符型字段中存放日期型值。 但有一種情況例外:定義為INTEGER PRIMARY KEY的字段只能存儲64位整數(shù), 當向這種字段中保管除整數(shù)以外的數(shù)據(jù)時,將會產(chǎn)生錯誤。
54、另外, SQLite 在解析CREATE TABLE 語句時,會忽略 CREATE TABLE 語句中跟在字段名后面的數(shù)據(jù)類型信息,如下面語句會忽略 name字段的類型信息:CREATE TABLE person (personid integer primary key autoincrement, name varchar(20)SQLite可以解析大部分規(guī)范SQL語句,如:查詢語句:select * from 表名 where 條件子句 group by 分組字句 having . order by 排序子句如:select * from person select * from per
55、son 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 條件
56、子句。如:update person set name=傳智 where id=10刪除語句:delete from 表名 where 條件子句。如:delete from person where id=10高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用運用SQLiteDatabaseSQLiteDatabase操作操作SQLiteSQLite數(shù)據(jù)庫數(shù)據(jù)庫Android提供了一個名為SQLiteDatabase的類,該類封裝了一些操作數(shù)據(jù)庫的API,運用該類可以完成對數(shù)據(jù)進展添加(Create)、查詢(Retrieve)、更新(Update)和刪除(
57、Delete)操作這些操作簡稱為CRUD。對SQLiteDatabase的學(xué)習(xí),我們應(yīng)該重點掌握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表中添加進一條記錄,在實踐運用中
58、, 語句中的“傳智播客這些參數(shù)值應(yīng)該由用戶輸入界面提供,假設(shè)把用戶輸入的內(nèi)容原樣組拼到上面的insert語句, 當用戶輸入的內(nèi)容含有單引號時,組拼出來的SQL語句就會存在語法錯誤。要處理這個問題需求對單引號進展本義,也就是把單引號轉(zhuǎn)換成兩個單引號。有些時候用戶往往還會輸入像“ & 這些特殊SQL符號,為保證組拼好的SQL語句語法正確,必需對SQL語句中的這些特殊SQL符號都進展本義,顯然,對每條SQL語句都做這樣的處置任務(wù)是比較煩瑣的。 SQLiteDatabase類提供了一個重載后的execSQL(String sql, Object bindArgs)方法,運用這個方法可以處理前面
59、提到的問題,由于這個方法支持運用占位符參數(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ù)組中的順序要和占位符的位置對應(yīng)。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 itcast運用運用SQLiteDatabaseSQLiteDat
60、abase操作操作SQLiteSQLite數(shù)據(jù)庫數(shù)據(jù)庫SQLiteDatabase的rawQuery() 用于執(zhí)行select語句,運用例子如下: SQLiteDatabase db = .;Cursor cursor = db.rawQuery(“select * from person, null);while (cursor.moveToNext() int personid = cursor.getInt(0); /獲取第一列的值,第一列的索引從0開場String name = cursor.getString(1);/獲取第二列的值int age = cursor.getInt(2);/獲取
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版企業(yè)人力資源總監(jiān)職責與權(quán)益合同3篇
- 武漢體育學(xué)院《地下水數(shù)值模擬基礎(chǔ)與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢傳媒學(xué)院《現(xiàn)代分析檢驗技術(shù)應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度建筑工地安全文明施工評估合同3篇
- 二零二五版兒童樂園開業(yè)慶典承包合同范本3篇
- 2024陶瓷廠勞務(wù)外派工作合同模板3篇
- 2025版大型工程船舶租賃合同6篇
- 威海職業(yè)學(xué)院《數(shù)值計算與仿真》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度酒店會議場地預(yù)訂與策劃服務(wù)合同3篇
- 天津城市職業(yè)學(xué)院《工程光學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 專題24 短文填空 選詞填空 2024年中考英語真題分類匯編
- JT∕T 794-2011 道路運輸車輛衛(wèi)星定位系統(tǒng) 車載終端技術(shù)要求
- 西南師大版五年級上冊小數(shù)乘除法豎式計算題200道及答案
- 再生障礙性貧血課件
- AQ/T 2061-2018 金屬非金屬地下礦山防治水安全技術(shù)規(guī)范(正式版)
- 2024年湖北三江航天江河化工科技有限公司招聘筆試沖刺題(帶答案解析)
- 采購人員管理制度
- 礦卡司機安全教育考試卷(帶答案)
- SYT 6963-2013 大位移井鉆井設(shè)計指南
- 合同增項補充協(xié)議書范本
- 產(chǎn)后抑郁癥的護理查房
評論
0/150
提交評論