瘋狂Android講義

瘋狂Android講義

《瘋狂Android講義》是2011年6月電子工業出版社出版的一本圖書,作者是李剛。

宣傳語

瘋狂源自夢想

技術成就輝煌

內容簡介

計算機便攜化是未來的發展趨勢,而Android作為最受歡迎的手機、平板電腦操作之一,其發展的上升勢頭是勢不可當的。而Android套用選擇了Java作為其開發語言,對於Java來說也是一次極好的機會。

本書並不局限於介紹Android編程的各種理論知識,而是從“項目驅動”的角度來講授理論,全書一共包括近百個實例,這些示範性的實例既可幫讀者更好地理解各知識點在實際開發中的套用,也可供讀者在實際開發時作為參考、拿來就用。本書最後還提供了兩個實用的案例:瘋狂連連看和電子拍賣系統Android客戶端,具有極高的參考價值。本書提供了配套的答疑網站,如果讀者在閱讀本書時遇到了技術問題,可以登錄瘋狂Java聯盟發帖,筆者將會及時予以解答。

本書適合於有一定Java編程基礎的讀者。如果讀者已熟練掌握Java編程語法並具有一定圖形界面編程經驗,閱讀本書將十分合適。否則,閱讀本書之前建議先認真閱讀瘋狂Java體系之《瘋狂Java講義》。

編輯推薦

《瘋狂Android講義》全面地介紹了Android套用開發的相關知識,全書內容覆蓋了Android用戶界面編程、Android四大組件、Android資源訪問、圖形/圖像處理、事件處理機制、Android輸入/輸出處理、音頻/視頻多媒體套用開發、OpenGL與3D套用開發、網路通信編程、Android平台的Web Service、感測器套用開發、GPS套用開發、Google Map服務等。

前言

計算機便攜化是一種趨勢。在人們的習慣里,很容易把電腦理解成主機、顯示器、鍵盤的“組合”,即使後來出現了筆記本電腦,其實依然脫不了主機、顯示器與鍵盤的組合。對於這種傳統的電腦,用戶必須“安靜”地坐下來,打開計算機,然後才能使用計算機。但用戶並不能完全滿足通過這種方式使用電腦,有時用戶需要在車上查看、管理公司的運營狀況,有時用戶需要在等飛機時查看、管理自己的證券交易情況,有時用戶需要隨時玩玩遊戲鬆弛神經……在這些需求場景下,用戶需要更加便攜化的計算機,這也是智慧型手機、平板電腦大行其道的重要原因。

Android系統就是一個開發式的手機和平板電腦的作業系統,發展勢頭十分迅猛。雖然Android面世的時間不長,但Android已經對傳統的手機平台(如Symbian)構成了強大衝擊,Nokia宣布與Microsoft結盟,可能會逐步採用Windows Phone來代替自己的Symbian系統,不過業界大多並不看好這次結盟,因為Windows的手機作業系統本身並不太受市場歡迎。業界部分人士預測,Android將會成為套用最為廣泛的手機作業系統。

對於Java語言而言,Android系統給了Java一個新的機會。在過去的歲月中,Java語言作為伺服器端程式語言,已經取得了極大的成功,Java EE平台發展得非常成熟,而且一直是電信、移動、銀行、證券、電子商務套用的首選平台、不爭的王者。但在客戶端套用開發方面,Java語言一直表現不佳,雖然Java既有AWT/Swing界面開發庫,也有SWT/JFace界面開發庫,但對於客戶端套用開發人員而言,大多不願意選擇Java語言。Android系統的出現改變了這種局面。Android是一個非常優秀的手機、平板電腦作業系統,它將會逐漸蠶食傳統的桌面作業系統,而Android平台套用的開發語言就是Java,這意味著Java語言將可以在客戶端套用開發上大展拳腳。

隨著Android平台在市場占有率上的穩步上升,採用Java語言開發的Android套用會越來越多。不過需要指出的是,運行Android平台的硬體只是手機、平台電腦等攜帶型設備,這些設備的計算能力、數據存儲能力都是有限的,不太可能在Android平台上部署大型企業級套用,因此Android套用可能以純粹客戶端套用的角色出現,然後通過網路與傳統大型套用互動,充當大型企業套用的客戶端,比如已經出現的淘寶Android客戶端、趕集網Android客戶端,它們都是這種發展趨勢下的產物。

對於Java開發者來說,以前主要在Java EE平台上從事伺服器端套用開發,但在計算機便攜化的趨勢下,Java開發者必然面臨著為這些套用開發客戶端的需求。對於Java開發者來說,Android套用開發既是一個挑戰,也是一個機遇——挑戰是:掌握Android套用開發需要重新投入學習成本;機遇是:掌握Android開發之後將可讓職業生涯達到一個新的高度,而且Android系統是一個新的發展趨勢,這必然帶來更多的就業機會與創業機會,這都值得當下的開發者好好把握。

特點

本書是一本介紹Android套用開發的實用圖書,全面介紹了Android 2.3平台上套用開發各方面的知識。與市面上有些介紹Android編程的圖書不同,本書並沒有花太多篇幅介紹Android的發展歷史(因為這些內容到處都是),完全沒有介紹Android市場(因為它只是一個交易網站,與Android開發無關,但有些圖書甚至用整整一章來介紹它),也沒有介紹JDK安裝、環境變數配置等內容——筆者假設讀者已經具有一定的Java功底。換句話來說,如果你對JDK安裝、Java基本語法還不熟,本書並不適合你。

本書只用了一章來介紹如何搭建Android開發環境、Android套用結構,當然也簡要說明了Android的發展歷史。可能依然會有人覺得本書篇幅很多,這是由於本書覆蓋了Android開發絕大部分知識,而且很多知識不僅介紹了相應的理論,並通過相應的實例程式給出了示範。

需要說明的是,本書只是一本介紹Android實際開發的圖書,這不是一本關於所謂“思想”的書,不要指望學習本書能提高你所謂的“Android思想”,所以奉勸那些希望提高編程思想的讀者不要閱讀本書。

本書更不是一本看完之後可以“吹噓、炫耀”的書——因為本書並沒有堆砌一堆“深奧”的新名詞、一堆“高深”的思想,只要讀者有基本的Java基礎,閱讀本書不會有任何問題,看完本書不會讓你覺得自己突然“高深”了,“高深”到自己都理解不了。

認真看完本書、把書中所有示例都練習一遍,本書帶給你的只是9個字:“看得懂、學得會、做得出”。本書不能讓你認識一堆新名詞,只會讓你學會實際的Android套用開發。

如果讀者有非常紮實的Java基本功、良好的英文閱讀能力,而且對圖形用戶界面編程也有豐富的經驗,不管是AWT/Swing編程的經驗,還是SWT編程的經驗,抑或是Windows界面編程的經驗都行,那沒有多大必要購買本書,只要花幾天時間快速瀏覽本書即可動手編程了。如果遇到某個類、某個功能不太確定,直接查閱Android Dev Guide和API參考文檔即可。

不管怎樣,只要讀者在閱讀本書時遇到知識上的問題,都可以登錄瘋狂Java聯盟與廣大Java學習者交流,筆者也會通過該平台與大家一起交流、學習。

本書還具有如下幾個特點。

知識全面,覆蓋面廣

本書深入闡述了Android套用開發的Activity、Service、BroadcastReceiver與ContentProvider四大組件,並詳細介紹了Android全部圖形界面組件的功能和用法,Android各種資源的管理與用法,Android圖形、圖像處理,事件處理,Android輸入/輸出處理,視頻/音頻等多媒體開發,OpenGL-ES開發,網路通信,感測器和GPS開發等內容,全面覆蓋Android官方指南,在某些內容上更加具體、深入。

內容實際,實用性強

本書並不局限於枯燥的理論介紹,而是採用了“項目驅動”的方式來講授知識點,全書包括近百個實例,幾乎每個知識點都可找到對應的參考實例。本書最後還提供了“瘋狂連連看”、“電子拍賣系統Android客戶端”兩個套用,具有極高的參考價值。

講解詳細,上手容易

本書保持了“瘋狂Java體系”的一貫風格:操作步驟詳細、編程思路清晰,語言平實。只要讀者有一定的Java編程基礎,閱讀本書將可以很輕鬆地上手Android套用開發;學習完本書最後的兩個案例後,讀者即可完全滿足實際企業中Android套用開發的要求。

光碟說明

1.光碟內容

光碟中的代碼按章節存放,即第2章、第2節所使用的代碼放在02\2.2資料夾下,依此類推。

另外,書中每份原始碼也給出與光碟源檔案的對應關係,方便讀者查找。

本光碟中有19個資料夾,其內容和含義說明如下:

(1)資料夾名01~19對應於書中的章號,即第2章所使用的代碼放在02資料夾下,依此類推。

(2)10資料夾下有HRSystem和HRSystem_Eclipse兩個資料夾,它們是同一個項目的源檔案,其中HRSystem是IDE平台無關的項目,使用Ant來編譯即可;而HRSystem_Eclipse是該項目在Eclipse IDE工具中的項目檔案。

(3)本書的絕大部分項目都是Eclipse項目,因此項目資料夾下包含.classpath、.project等檔案,它們是Eclipse項目檔案,請不要刪除。

2.運行環境

本書中的程式在以下環境調試通過:

(1)安裝jdk-6u22-windows-i586-p.exe,安裝完成後,添加CLASSPATH環境變數,該環境變數的值為;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar。如果為了可以編譯和運行Java程式,還應該在PATH環境變數中增加%JAVA_HOME%/bin。其中JAVA_HOME代表JDK(不是JRE)的安裝路徑。

(2)安裝Android 2.3。創建AVD虛擬設備。安裝Android SDK的方法請參考本書第1章。

(3)安裝Apache的Tomcat7.0.6,不要使用安裝檔案安裝,而是採用解壓縮的安裝方式。安裝Tomcat請參看瘋狂Java體系的《輕量級Java EE企業套用實戰》第1章。安裝完成後,將Tomcat安裝路徑的lib下的jsp-api.jar和servlet-api.jar兩個JAR檔案添加到CLASSPATH環境變數之後。

(4)安裝apache-ant-1.8.1。

將下載的Ant壓縮檔案解壓縮到任意路徑,然後增加ANT_HOME的環境變數,讓變數的值為Ant的解壓縮路徑。

並在PATH環境變數中增加%ANT_HOME%/bin環境變數。

(5)安裝Eclipse-jee-helios版(也就是Eclipse 3.6 for Java EE Developers)。

並安裝ADT外掛程式,安裝外掛程式後在Eclipse中設定Android SDK的路徑。

關於如何安裝上面的工具,請參考本書的第1章。

3.注意事項

(1)本書所有Android項目都是Eclipse工程,讀者只要將它們導入Eclipse工具中即可。

(2)介紹網路編程章節涉及少數Web套用,將該Web套用複製到%TOMCAT_HOME%/ webapps路徑下,然後進入build.xml所在路徑,執行如下命令:

ant compile -- 編譯套用

啟動Tomcat伺服器,使用瀏覽器即可訪問該套用。

(3)對於Eclipse項目檔案 ,導入Eclipse開發工具即可。

(4)第19章的案例,請參看項目下的readme.txt。

(5)本書有部分按案例需要連線資料庫,讀者應修改資料庫URL及用戶名、密碼讓這些代碼與讀者運行環境一致。如果項目下有SQL腳本,導入SQL腳本即可,如果沒有SQL腳本,系統將在運行時自動建表,讀者只需創建對應資料庫即可。

(6)本書關於網路編程、感測器編程等部分章節需要連線PC。筆者PC的IP位址為192.168.1.88,讀者可以將自己的IP位址設為該地址,或將程式中用到該IP位址的地方修改為自己的PC的IP位址。

(7)在使用本光碟的程式時,請將程式複製到硬碟上,並去除檔案的唯讀屬性。

4.技術支持

如果您使用本光碟的過程中遇到不懂的技術問題,可以登錄如下網站與作者聯繫

其它

衷心感謝可愛的兒子。大年三十,新年初一,當爸爸依然端坐著創作本書時,你用天籟般的哭聲把爸爸從電腦前拉開,努力告訴爸爸:生活除了編程,還有其他更多的樂趣。無數個眼乾、腰痛的時刻,你用天使般的笑容舒緩爸爸的心情,帶給爸爸生活的輕鬆。當爸爸抱著你在電腦之前編寫代碼時,你多次努力給爸爸輸入一些“上帝的提示”。

還要感謝博文視點的張月萍編輯,她是一個非常務實的好朋友,因為她的敦促,才有了本書的誕生。在本書的創作過程中,她亦提供了大量切實、有用的幫助。

本書寫給誰看

如果你已經具備一定的Java基礎和XML基礎,或已經學完了《瘋狂Java講義》一書,那么你閱讀此書將會比較適合;如果你有不錯的Java基礎,而且有一定的圖形界面編程經驗,那么閱讀本書將可以很快掌握Android套用開發。如果你對Java的掌握還不熟練,比如對JDK安裝、Java基本語法都不熟練,建議遵從學習規律,循序漸進,暫時不要購買、閱讀此書。

2011-4-14

圖書目錄

第1章 Android套用與開發環境 1

1.1 Android的發展和歷史 2

1.1.1 Android的發展和簡介 2

1.1.2 Android平台架構及特性 3

1.2 搭建Android開發環境 5

1.2.1 下載和安裝Android SDK 5

1.2.2 安裝Eclipse和ADT外掛程式 7

1.3 Android常用開發工具的用法 10

1.3.1 創建、刪除和瀏覽AVD 10

1.3.2 使用Android模擬器

(Emulator) 14

1.3.3 使用DDMS進行調試 15

1.3.4 Android Debug Bridge(ADB)

的用法 16

1.3.5 使用DX編譯Android套用 18

1.3.6 使用Android Asset Packaging

Tool(AAPT)打包資源 19

1.3.7 使用mksdcard管理虛擬SD卡 19

1.4 開始第一個Android套用 20

1.4.1 使用Eclipse開發第一個

Android套用 20

1.4.2 通過ADT運行Android套用 23

1.5 Android套用結構分析 24

1.5.1 創建一個Android套用 24

1.5.2 自動生成的R.java 26

1.5.3 res目錄說明 27

1.5.4 Android套用的清單檔案:

AndroidManifest.xml 28

1.5.5 應用程式許可權說明 29

1.6 Android套用的基本組件

介紹 31

1.6.1 Activity和View 31

1.6.2 Service 32

1.6.3 BroadcastReceiver 32

1.6.4 ContentProvider 32

1.6.5 Intent和IntentFilter 33

1.7 本章小結 33

第2章 Android套用的界面編程 35

2.1 界面編程與視圖(View)組件 36

2.1.1 視圖組件與容器組件 36

2.1.2 使用XML布局檔案控制UI

界面 40

2.1.3 在代碼中控制UI界面 41

2.1.4 使用XML布局檔案和Java

代碼混合控制UI界面 42

2.1.5 開發自定義View 43

2.2 布局管理器 46

2.2.1 線性布局 47

2.2.2 表格布局 49

2.2.3 幀布局 52

2.2.4 相對布局 55

2.2.5 絕對布局 58

2.3 基本界面組件 60

2.3.1 文本框(TextView)與編輯框

(EditText)的功能和用法 60

2.3.2 按鈕(Button)與圖片按鈕(ImageButton)組件的功能和

用法 66

2.3.3 使用9Patch圖片作為按鈕背景 68

2.3.4 單選按鈕(RadioButton)和複選

框(CheckBox)介紹與套用 69

2.3.5 狀態開關按鈕(ToggleButton)

的功能與用法 71

2.3.6 時鐘(AnalogClock和Digital

Clock)的功能與功法 73

2.3.7 圖像視圖(ImageView)的

功能和用法 75

2.4 高級界面組件 79

2.4.1 自動完成文本框(AutoCompleteTextView)的

功能和用法 79

2.4.2 Spinner的功能和用法 80

2.4.3 日期、時間選擇器(DatePicker

和TimePicker)的功能和用法 83

2.4.4 進度條(ProgressBar)的

功能和用法 85

2.4.5 拖動條(SeekBar)的功能和

用法 90

2.4.6 星級評分條(RatingBar)的

功能和用法 91

2.4.7 選項卡(TabHost)的功能和

用法 93

2.4.8 滾動視圖(ScrollView)的

功能和用法 95

2.4.9 列表視圖(ListView和

ListActivity) 95

2.4.10 可展開的列表組件(ExpandableListView) 101

2.4.11 格線視圖(GridView)和

圖像切換器(ImageSwitcher)

功能和用法 104

2.4.12 畫廊視圖(Gallery)的功能和

用法 107

2.5 對話框 110

2.5.1 使用AlertDialog創建簡單

對話框 110

2.5.2 使用AlertDialog創建列表

對話框 112

2.5.3 使用AlertDialog創建自定義

對話框 116

2.5.4 使用PopupWindow 121

2.5.5 使用DatePickerDialog、TimePickerDialog 123

2.5.6 使用ProgressDialog創建進度

對話框 125

2.6 訊息提示 127

2.6.1 使用Toast顯示提示信息框 128

2.6.2 Notification的功能與用法 129

2.7 選單 132

2.7.1 選項選單和子選單

(SubMenu) 132

2.7.2 使用監聽器來監聽選單事件 136

2.7.3 創建複選選單項和單選選單項 137

2.7.4 設定與選單項關聯的Activity 140

2.7.5 上下文選單 141

2.8 本章小結 143

第3章 事件處理 144

3.1 Android的事件處理 145

3.2 基於監聽的事件處理 145

3.2.1 事件監聽的處理模型 145

3.2.2 事件和事件監聽器 148

3.2.3 內部類作為事件監聽器類 151

3.2.4 外部類作為事件監聽器類 152

3.2.5 Activity本身作為事件監聽器 153

3.2.6 匿名內部類作為事件監聽器類 154

3.2.7 直接綁定到標籤 155

3.3 基於回調的事件處理 156

3.3.1 回調機制與監聽機制 156

3.3.2 基於回調的事件傳播 158

3.3.3 重寫onTouchEvent方法回響

觸控螢幕事件 160

3.4 回響的系統設定的事件 162

3.4.1 Configuration類簡介 162

3.4.2 重寫onConfigurationChanged

回響系統設定更改 164

3.5 Handler訊息傳遞機制 166

3.5.1 Handler類簡介 166

3.5.2 Handler使用案例 167

3.6 本章小結 168

第4章 深入理解Activity 169

4.1 建立、配置和使用Activity 170

4.1.1 建立Activity 170

4.1.2 配置Activity 177

4.1.3 啟動、關閉Activity 179

4.1.4 使用Bundle在Activity之間

交換數據 181

4.1.5 啟動其他Activity並返回結果 185

4.2 Activity的回調機制 189

4.3 Activity的生命周期 190

4.3.1 Activity的生命周期演示 190

4.3.2 Activity與Servlet的相似性與

區別 194

4.4 本章小結 195

第5章 使用Intent和IntentFilter

第5章 進行通信 196

5.1 Intent對象詳解 197

5.1.1 使用Intent啟動系統組件 197

5.2 Intent的屬性及intent-filter

配置 198

5.2.1 Component屬性 198

5.2.2 Action、Category屬性與

intent-filter配置 200

5.2.3 指定Action、Category調用

系統Activity 204

5.2.4 Data、Type屬性與intent-filter

配置 209

5.2.5 Extra屬性 211

5.3 使用Intent創建Tab頁面 211

5.4 本章小結 212

第6章 Android套用的資源 213

6.1 資源的類型及存儲方式 214

6.1.1 資源的類型以及存儲方式 214

6.1.2 使用資源 216

6.2 使用字元串、顏色、

尺寸資源 217

6.2.1 顏色值的定義 217

6.2.2 定義字元串、顏色、尺寸資源

檔案 218

6.2.3 使用字元串、顏色、

尺寸資源 219

6.3 數組(Array)資源 222

6.4 使用(Drawable)資源 225

6.4.1 圖片資源 225

6.4.2 StateListDrawable資源 225

6.4.3 LayerDrawable資源 227

6.4.4 ShapeDrawable資源 229

6.4.5 ClipDrawable資源 231

6.4.6 AnimationDrawable資源 233

6.5 使用原始XML資源 236

6.5.1 定義原始XML資源 236

6.5.2 使用原始XML檔案 237

6.6 使用布局(Layout)資源 239

6.7 使用選單(Menu)資源 239

6.7.1 定義選單資源 239

6.7.2 使用選單資源 240

6.8 樣式(Style)和主題(Theme)

資源 243

6.8.1 樣式資源 243

6.8.2 主題資源 245

6.9 屬性(Attribute)資源 247

6.10 使用原始資源 249

6.11 國際化和資源自適應 251

6.11.1 Java國際化的思路 252

6.11.2 Java支持的語言和國家 252

6.11.3 完成程式國際化 253

6.11.4 為Android套用提供國際化

資源 255

6.11.5 國際化Android套用 256

6.12 本章小結 258

第7章 圖形與圖像處理 259

7.1 使用簡單圖片 260

7.1.1 使用Drawable對象 260

7.1.2 Bitmap和BitmapFactory 260

7.2 繪圖 263

7.2.1 Android繪圖基礎:Canvas、

Paint等 263

7.2.2 Path類 267

7.2.3 繪製遊戲動畫 270

7.3 圖形特效處理 278

7.3.1 使用Matrix控制變換 278

7.3.2 使用drawBitmapMesh扭曲

圖像 282

7.3.3 使用Shader填充圖形 285

7.4 逐幀(Frame)動畫 288

7.4.1 AnimationDrawable與逐幀

動畫 288

7.5 補間(Tween)動畫 292

7.5.1 Tween動畫與Interpolator 292

7.5.2 位置、大小、旋轉度、透明度

改變的補間動畫 293

7.5.3 自定義補間動畫 298

7.6 使用SurfaceView實現動畫 300

7.6.1 SurfaceView的繪圖機制 301

7.7 本章小結 305

第8章 Android的數據存儲和IO 306

8.1 使用SharedPreferences 307

8.1.1 SharedPreferences與Editor

簡介 307

8.1.2 SharedPreferences的存儲

位置和格式 308

8.1.3 讀、寫其他套用Shared

Preferences 310

8.2 File存儲 311

8.2.1 openFileOutput和open

FileInput 312

8.2.2 讀寫SD卡上的檔案 314

8.3 SQLite資料庫 321

8.3.1 簡介SQLiteDatabase 321

8.3.2 創建資料庫和表 323

8.3.3 使用SQL語句操作SQLite

資料庫 323

8.3.4 使用sqlite3工具 325

8.3.5 使用特定方法操作SQLite

資料庫 327

8.3.6 事務 329

8.3.7 SQLiteOpenHelper類 330

8.4 手勢(Gesture) 335

8.4.1 手勢檢測 335

8.4.2 增加手勢 342

8.4.3 識別用戶的手勢 346

8.5 自動朗讀(TTS) 347

8.6 本章小結 350

第9章 使用ContentProvider實現

第9章 數據共享 351

9.1 數據共享標準:

ContentProvider簡介 352

9.1.1 ContentProvider簡介 352

9.1.2 Uri簡介 353

9.1.3 使用ContentResolver操作

數據 354

9.2 作業系統的ContentProvider 355

9.2.1 使用ContentProvider管理

聯繫人 355

9.2.2 使用ContentProvider管理

多媒體內容 360

9.3 實現ContentProvider 364

9.3.1 創建ContentProvider的步驟 364

9.4 監聽ContentProvider的數據

改變 370

9.4.1 ContentObserver簡介 370

9.5 本章小結 372

第10章 Service與Broadcast

第10章 Receiver 373

10.1 Service簡介 374

10.1.1 創建、配置Service 374

10.1.2 啟動和停止Service 376

10.1.3 綁定本地Service並與之

通信 377

10.1.4 Service的生命周期 381

10.2 跨進程調用Service

(AIDL服務) 382

10.2.1 AIDL服務簡介 382

10.2.2 創建AIDL檔案 383

10.2.3 將接口暴露給客戶端 383

10.2.4 客戶端訪問AIDLService 385

10.3 電話管理器

(TelephonyManager) 393

10.4 簡訊管理器(SmsManager) 400

10.5 音頻管理器

(AudioManager) 404

10.5.1 AudioManager簡介 404

10.6 振動器(Vibrator) 407

10.6.1 Vibrator簡介 407

10.6.2 使用Vibrator控制手機振動 407

10.7 手機鬧鐘服務

(AlarmManager) 408

10.7.1 AlarmManager簡介 408

10.7.2 設定鬧鐘 409

10.8 接收廣播訊息 413

10.8.1 BroadcastReceiver簡介 413

10.8.2 傳送廣播 414

10.8.3 有序廣播 416

10.9 接收系統廣播訊息 424

10.10 本章小結 427

第11章 多媒體套用開發 428

11.1 音頻和視頻的播放 429

11.1.1 使用MediaPlayer播放音頻 429

11.1.2 使用SoundPool播放音效 432

11.1.3 使用VideoView播放視頻 435

11.1.4 使用MediaPlayer和

SurfaceView播放視頻 436

11.2 使用MediaRecorder錄製

音頻 439

11.3 控制攝像頭拍照 442

11.3.1 通過Camera進行拍照 442

11.3.2 錄製視頻短片 446

11.4 本章小結 450

第12章 OpenGL與3D套用開發 451

12.1 3D圖像與3D開發的

基本知識 452

12.2 OpenGL和OpenGL ES簡介 453

12.3 繪製2D圖形 454

12.3.1 在Android套用中使用

OpenGL ES 454

12.3.2 繪製平面上的多邊形 457

12.3.3 旋轉 463

12.4 繪製3D圖形 465

12.4.1 構建3D圖形 465

12.4.2 套用紋理貼圖 469

12.5 本章小結 475

第13章 Android的網路套用 476

13.1 基於TCP協定的網路通信 477

13.1.1 TCP協定基礎 477

13.1.2 使用ServerSocket創建

TCP伺服器端 478

13.1.3 使用Socket進行通信 479

13.1.4 加入多執行緒 483

13.2 使用URL訪問網路資源 488

13.2.1 使用URL讀取網路資源 489

13.2.2 使用URLConnection

提交請求 490

13.3 使用HTTP訪問網路 496

13.3.1 使用HttpURLConnection 496

13.3.2 使用Apache HttpClient 501

13.4 使用WebView視圖

顯示網頁 505

13.4.1 使用WebView瀏覽網頁 506

13.4.2 使用WebView載入HTML

代碼 507

13.5 使用Web Service進行

網路編程 508

13.5.1 Web Service簡介 509

13.5.2 Web Service平台概述 510

13.5.3 使用Android套用調用

Web Service 512

13.6 本章小結 524

第14章 管理Android手機桌面 525

14.1 管理手機桌面 526

14.1.1 刪除桌面組件 526

14.1.2 添加桌面組件 526

14.2 改變手機壁紙 527

14.2.1 開發實時壁紙

(Live Wallpapers) 528

14.3 桌面捷徑 532

14.3.1 在桌面上創建捷徑 532

14.3.2 向Launcher添加捷徑 534

14.4 管理桌面小控制項 535

14.5 實時資料夾(LiveFolder) 539

14.5.1 使用實時資料夾顯示

ContentProvider的數據 540

14.6 本章小結 545

第15章 感測器套用開發 546

15.1 利用Android的感測器 547

15.1.1 開發感測器套用 547

15.1.2 下載和安裝SensorSimulator 549

15.1.3 利用SensorSimulator開發

感測器套用 551

15.2 Android的常用感測器 553

15.2.1 方向感測器Orientation 553

15.2.2 磁場感測器Magnetic Field 554

15.2.3 溫度感測器Temperature 554

15.2.4 光感測器Light 554

15.2.5 壓力感測器Pressure 554

15.3 感測器套用案例 557

15.4 本章小結 564

第16章 GPS套用開發 565

16.1 支持GPS的核心API 566

16.2 獲取LocationProvider 568

16.2.1 獲取所有可用的

LocationProvider 568

16.2.2 通過名稱獲得指定

LocationProvider 569

16.2.3 根據Criteria獲得

LocationProvider 569

16.3 獲取定位信息 570

16.3.1 通過模擬器傳送GPS信息 571

16.3.2 獲取定位數據 571

16.4 臨近警告 573

16.5 本章小結 575

第17章 使用Google Map服務 576

17.1 調用Google Map的準備 577

17.1.1 獲取Map API Key 577

17.1.2 創建支持Google Map API的

AVD 580

17.2 根據GPS信息在地圖上

定位 582

17.3 GPS導航 588

17.4 根據地址定位 590

17.4.1 地址解析與反向地址解析 590

17.4.2 根據地址定位 595

17.5 本章小結 597

第18章 瘋狂連連看 598

18.1 連連看遊戲簡介 599

18.2 開發遊戲界面 600

18.2.1 開發界面布局 600

18.2.2 開發遊戲界面組件 601

18.2.3 處理方塊之間的連線線 605

18.3 連連看的狀態數據模型 606

18.3.1 定義數據模型 606

18.3.2 初始化遊戲狀態數據 606

18.4 載入界面的圖片 610

18.5 實現遊戲Activity 612

18.6 實現遊戲邏輯 618

18.6.1 定義GameService組件接口 618

18.6.2 實現GameService組件 619

18.6.3 獲取觸碰點的方塊 620

18.6.4 判斷兩個方塊是否可以相連 622

18.6.5 定義獲取通道的工具方法 623

18.6.6 沒有轉折點的橫向連線 625

18.6.7 沒有轉折點的縱向連線 626

18.6.8 一個轉折點的連線 626

18.6.9 兩個轉折點的連線 629

18.6.10 找出最短距離 636

18.7 本章小結 638

第19章 電子拍賣系統 639

19.1 系統功能簡介和架構設計 640

19.1.1 系統功能簡介 640

19.1.2 系統架構設計 641

19.2 JSON簡介 643

19.2.1 使用JSON語法創建對象 643

19.2.2 使用JSON語法創建數組 644

19.2.3 Java的JSON支持 645

19.3 傳送請求的工具類 646

19.4 用戶登錄 647

19.4.1 處理登錄的Servlet 648

19.4.2 用戶登錄 649

19.5 查看流拍物品 655

19.5.1 查看流拍物品的Servlet 655

19.5.2 查看流拍物品 656

19.6 管理物品種類 661

19.6.1 瀏覽物品種類的Servlet 661

19.6.2 查看物品種類 662

19.6.3 添加種類的Servlet 666

19.6.4 添加物品種類 666

19.7 管理拍賣物品 668

19.7.1 查看自己的拍賣物品的

Servlet 668

19.7.2 查看自己的拍賣物品 669

19.7.3 添加拍賣物品的Servlet 672

19.7.4 添加拍賣物品 673

19.8 參與競拍 678

19.8.1 選擇物品種類 678

19.8.2 根據種類瀏覽物品的Servlet 680

19.8.3 根據種類瀏覽物品 680

19.8.4 參與競價的Servlet 682

19.8.5 參與競價 683

19.9 許可權控制 688

19.10 本章小結 689

相關詞條

相關搜尋

熱門詞條

聯絡我們