宣傳語
瘋狂源自夢想
技術成就輝煌
內容簡介
計算機便攜化是未來的發展趨勢,而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