《Android/OPhone 開發完全講義》已出版。
購買:互動網(China-pub)
樣章下載
現將本書原始碼完全公開
Android-OPhone-src.zip 《Android/OPhone開發完全講義》原始碼
下載次數: 82 小時前
目錄
前言
第1章 Android入門 1
1.1 Android的基本概念 1
1.1.1 Android簡介 1
1.1.2 Android的系統構架 3
1.2 Android開發環境的搭建 4
1.2.1 開發Android程式需要些什麼 4
1.2.2 安裝Android SDK 4
1.2.3 安裝Eclipse外掛程式ADT 5
1.2.4 測試ADT是否安裝成功 5
1.3 Android SDK中的常用命令列工具 7
1.3.1 啟動和關閉ADB服務(adb start-server和adb kill-server) 7
1.3.2 查詢當前模擬器/裝置的執行個體(adb devices) 7
1.3.3 安裝、卸載和運行程式(adb install、adb uninstall和am) 7
1.3.4 PC與模擬器或真機分頁檔(adb pull和adb push) 8
1.3.5 Shell命令 8
1.3.6 建立、刪除和瀏覽AVD裝置(android) 9
1.3.7 建立SD卡 9
1.4 PC上的Android 9
1.4.1 Android LiveCD 10
.1.4.2 AndroidX86 10
1.5 Android的學習資源 11
1.6 應用程式商店 11
1.6.1 Android Market 11
1.6.2 Mobile Market(MM) 11
1.6.3 其他應用程式商店 12
1.7 本章小結 12
第2章 第一個Android程式 13
2.1 編寫用於顯示當前日期和時間的程式 13
2.1.1 建立一個Android工程 13
2.2.2 介面組件的布局 14
2.2.3 編寫實際代碼 14
2.2 偵錯工具 17
2.3 簽名和發布應用程式 17
2.3.1 使用命令列方式進行簽名 18
2.3.2 使用ADT外掛程式方式進行簽名 18
2.4 DDMS透視圖 19
2.5 本章小結 20
第3章 Android應用程式架構 21
3.1 Android應用程式中的資源 21
3.1.1 資源存放在哪裡 21
3.1.2 資源的種類 21
3.1.3 資源的基本使用方法 22
3.2 Android的應用程式組件 23
3.2.1 活動(Activity)組件 23
3.2.2 服務(Service)組件 23
3.2.3 廣播接收者(Broadcast receivers)組件 24
3.2.4 內容提供者(Content providers)組件 24
3.3 AndroidManifest.xml檔案的結構 24
3.5 本章小結 25
第4章 建立使用者介面 26
4.1 建立、配置和使用Activity 26
4.1.1 建立和配置Activity 26
4.1.2 Activity的生命週期 28
執行個體1:示範Activity的生命週期 29
4.2 視圖(View) 31
4.2.1 視圖簡介 32
4.2.2 使用XML布局檔案控制視圖 32
4.2.3 在代碼中控制視圖 33
執行個體2:混合使用XML布局檔案和代碼來控制視圖 35
4.2.4 定製組件(Widget)的三種方式 37
執行個體3:定製組件——帶映像的TextView 37
執行個體4:定製組件——帶文字標籤的EditText 40
執行個體5:定製組件——可更換錶盤的指標時鐘 42
4.3 使用AlertDialog類建立對話方塊 47
4.3.1 AlertDialog類簡介 47
4.3.2 【確認/取消】對話方塊 47
執行個體6:建立詢問是否刪除檔案的
【確認/取消】對話方塊 48
4.3.3 帶3個按鈕的對話方塊 49
執行個體7:建立【覆蓋/忽略/取消】對話方塊 49
4.3.4 簡單列表對話方塊 50
4.3.5 單選列表對話方塊 51
4.3.6 多選列表對話方塊 51
執行個體8:建立3種選擇省份的列表對話方塊 52
4.3.7 水平進度對話方塊和圓形進度對話方塊 56
執行個體9:水平進度對話方塊和圓形進度對話方塊示範 56
4.3.8 自訂對話方塊 59
執行個體10:建立登入對話方塊 59
執行個體11:使用Activity託管對話方塊 61
執行個體12:建立懸浮對話方塊和觸摸任何位置 都可以關閉的對話方塊 62
4.4 Toast和Notification 65
4.4.1 用Toast顯示提示資訊框 65
4.4.2 Notification與狀態列資訊 66
4.5 菜單 68
4.5.1 建立選項菜單 68
4.5.2 設定與功能表項目關聯的映像和Activity 69
4.5.3 響應選項功能表項目單擊事件的3種方式 69
4.5.4 動態添加、修改和刪除選項菜單 70
4.5.5 建立帶複選框和選項按鈕的子功能表 71
4.5.6 建立操作功能表 72
4.5.7 菜單事件 73
執行個體13:Activity菜單、子功能表、上下
文菜單示範 73
4.6 布局 74
4.6.1 架構布局(FrameLayout) 74
執行個體14:霓虹燈效果的TextView 75
4.6.2 線性布局(LinearLayout) 76
執行個體15:利用LinearLayout將按鈕放在螢幕的四角和中心位置 78
4.6.3 相對布局(RelativeLayout) 79
執行個體16:利用RelativeLayout實現梅花效果的布局 79
4.6.4 表格版面配置(TableLayout) 80
執行個體17:計算機按鈕的布局 80
4.6.5 絕對布局(AbsoluteLayout) 81
4.7 本章小結 81
第5章 組件詳解 82
5.1 顯示和編輯文本的組件 82
5.1.1 顯示文本的組件:TextView 83
執行個體18:在TextView中顯示URL及不同字型大小、不同顏色的文本 84
執行個體19:帶邊框的TextView 86
5.1.2 輸入文本的組件:EditText 87
執行個體20:在EditText中輸入特定的字元 88
執行個體21:按斷行符號鍵顯示EditText 89
5.1.3 自動完成輸入內容的組件:AutoCompleteTextView 90
5.2 按鈕與複選框組件 91
5.2.1 普通按鈕組件:Button 91
執行個體22:異形(圓形、五角星、螺旋形 和箭頭)按鈕 92
5.2.2 映像按鈕組件:ImageButton 93
執行個體23:同時顯示映像和文字的按鈕 94
5.2.3 選項按鈕組件:RadioButton 94
5.2.4 開關狀態按鈕組件:ToggleButton 95
5.2.5 複選框組件:CheckBox 95
執行個體24:利用XML布局檔案動態建立CheckBox 96
5.3 日期與時間組件 98
5.3.1 輸入日期的組件:DatePicker 98
5.3.2 輸入時間的組件:TimePicker 98
執行個體25:DatePicker、TimePicker與TextView
同步顯示日期和時間 98
5.3.3 顯示時鐘的組件:AnalogClock和DigitalClock 99
5.4 進度條組件 100
5.4.1 進度條組件:ProgressBar 100
5.4.2 拖動條組件:SeekBar 101
執行個體26:改變ProgressBar和SeekBar
的顏色 102
5.4.3 評分組件:RatingBar 103
5.5 其他重要組件 104
5.5.1 顯示映像的組件:ImageView 104
執行個體27:可顯示映像指定地區的ImageView組件 105
執行個體28:動態縮放和旋轉映像 106
5.5.2 列表組件:ListView 107
執行個體29:可以單選和多選的ListView 109
執行個體30:動態添加、刪除ListView
清單項目 110
執行個體31:改變ListView清單項目選中狀態的背景顏色 113
5.5.3 封裝ListView的Activity:ListActivity 114
執行個體32:使用SimpleAdapter建立複雜的清單項目 114
執行個體33:給應用程式評分 115
5.5.4 可展開的列表組件:ExpandableListView 118
5.5.5 下拉式清單組件:Spinner 119
5.5.6 垂直滾動視圖組件:ScrollView 121
5.5.7 水平滾動視圖組件:Horizontal-ScrollView 121
執行個體34:可垂直和水平滾動的視圖 122
5.5.8 網格視圖組件:GridView 122
5.5.9 可迴圈顯示和切換映像的組件:Gallery和ImageSwitcher 123
5.5.10 標籤組件:TabHost 125
5.6 本章小結 126
第6章 移動儲存解決方案 127
6.1 最簡單的資料存放區方式:SharedPreferences 127
6.1.1 使用SharedPreferences存取資料 127
6.1.2 資料的儲存位置和格式 129
執行個體35:存取複雜類型的資料 129
6.1.3 設定資料檔案的存取權限 131
6.1.4 可以儲存設定的Activity——PreferenceActivity 132
6.2 檔案的儲存 135
6.2.1 openFileOutput和openFileInput方法 135
執行個體36:SD卡檔案瀏覽器 136
執行個體37:存取SD卡中的映像 140
6.2.2 SAX引擎讀取XML檔案的原理 141
執行個體38:將XML資料轉換成Java對象 142
6.4 SQLite資料庫 145
6.4.1 SQLite資料庫管理工具 145
6.4.2 建立資料庫和表 146
6.4.3 模糊查詢 147
6.4.4 分頁顯示記錄 147
6.4.5 事務 147
6.5 在Android中使用SQLite資料庫 147
6.5.1 SQLiteOpenHelper類與自動升級資料庫 148
6.5.2 SimpleCursorAdapter類與資料繫結 148
執行個體39:帶照片的連絡人管理系統 151
6.5.3 將資料庫與應用程式一起發布 154
執行個體40:英文詞典 154
6.6 抽象的標準——內容提供者(ContentProvider) 157
6.6.1 獲得系統資料 157
執行個體41:將連絡人管理和英文字典整合到自己的應用中 158
6.7 本章小結 163
第7章 應用程式之間的通訊 164
7.1 Intent與Activity 164
7.1.1 用Intent啟動Activity,並在Activity
之間傳遞資料 164
7.1.2 調用其他應用程式中的Activity(撥打到電話、瀏覽網頁、發Email等) 167
7.1.3 定製自己的Activity Action 170
執行個體42:將電子詞典的查詢功能共用成一個Activity Action 172
7.2 接收和發送廣播 173
7.2.1 接收系統廣播 173
執行個體43:開機可自動啟動並執行程式 174
執行個體44:收到簡訊了,該做點什麼 174
執行個體45:顯示手機電池的當前電量 176
7.2.2 在自己的應用程式中發送廣播 177
執行個體46:接收連絡人系統中發送的新增連絡人...廣播 178
7.3 本章小結 179
第8章 Android服務 180
8.1 Service起步 180
8.1.1 Service的生命週期 180
8.1.2 綁定Activity和Service 183
8.1.3 在BroadcastReceiver中啟動Service 185
8.2 系統服務 186
8.2.1 獲得系統服務 186
執行個體47:監聽手機來電 187
執行個體48:來電黑名單 188
8.2.2 在模擬器上類比重力感應 189
執行個體49:手機翻轉靜音 190
8.3 時間服務 192
8.3.1 計時器:Chronometer 192
8.3.2 預約時間Handler 194
8.3.3 定時器Timer 195
8.3.4 線上程中更新GUI組件 196
8.3.5 全域定時器AlarmManager 198
執行個體50:定時更換壁紙 199
執行個體51:多次定時提醒 201
8.4 跨進程訪問(AIDL服務) 203
8.4.1 什麼是AIDL服務 204
8.4.2 建立AIDL服務的步驟 204
執行個體52:建立AIDL服務 204
執行個體53:傳遞複雜資料的AIDL服務 207
8.5 本章小結 211
第9章 網路 212
9.1 可裝載網路資料的組件 212
執行個體54:將網狀圖像裝載到ListView組件中 213
執行個體55:Google映像畫廊(Gallery) 215
9.2 WebView組件 219
9.2.1 用WebView組件瀏覽網頁 219
執行個體56:手機瀏覽器 219
9.2.2 用WebView組件裝載HTML代碼 220
執行個體57:將英文詞典整合到Web頁中(JavaScript調用Java方法) 222
9.3 訪問HTTP資源 223
9.3.1 提交HTTP GET和HTTP POST
請求 223
9.3.2 HttpURLConnection類 225
執行個體58:上傳檔案 226
執行個體59:遠程Apk安裝器 229
9.3.3 調用WebService 230
執行個體60:通過WebService查詢產品資訊 231
9.4 本章小結 234
第10章 多媒體 235
10.1 圖形 235
10.1.1 圖形繪製基礎 235
執行個體61:繪製基本的圖形和文本 237
10.1.2 繪製位元影像 241
執行個體62:用兩種方式繪製位元影像 241
10.1.3 設定顏色的透明度 242
執行個體63:可任意改變透明度的位元影像 243
10.1.4 旋轉映像 244
執行個體64:旋轉動畫 244
10.1.5 扭曲映像 245
執行個體65:按圓形軌跡扭曲映像 246
10.1.6 展開映像 249
執行個體66:展開映像示範 249
10.1.7 路徑 251
執行個體67:沿著路徑繪製文本 254
執行個體68:可在映像上繪製圖形的畫板 256
10.2 音頻和視頻 260
10.2.1 使用MediaPlayer播放MP3檔案 260
10.2.2 使用MediaRecorder錄音 261
10.2.3 使用VideoView播放視頻 262
10.2.4 使用SurfaceView播放視頻 262
10.3 本章小結 263
第11章 2D動畫 264
11.1 幀(Frame)動畫 264
AnimationDrawable與幀動畫 264
執行個體69:通過幀動畫方式播放Gif動畫 266
執行個體70:播放幀動畫的子集 268
11.2 補間(Tween)動畫 270
11.2.1 移動補間動畫 270
執行個體71:迴圈向右移動的EditText與上下彈跳的球 272
11.2.2 縮放補間動畫 274
執行個體72:跳動的心 274
11.2.3 旋轉補間動畫 276
執行個體73:旋轉的星系 276
11.2.4 透明度補間動畫 277
執行個體74:投擲炸彈 278
11.2.5 震動效果 280
11.2.6 自訂動畫渲染器(Interceptor) 281
11.2.7 以動畫方式切換View的組件ViewFlipper 282
11.3 本章小結 284
第12章 OpenGL ES編程 285
12.1 OpenGL簡介 285
12.2 構建OpenGL ES的基本開發架構 286
12.3 2D圖形繪製 287
12.3.1 多邊形 287
12.3.2 顏色 289
12.3.3 旋轉 290
12.4 3D圖形繪製 291
12.4.1 旋轉立方體 291
12.4.2 在立方體上顯示紋理 292
12.4.3 光照下的立方體 293
12.4.4 透明的立方體 295
12.5 本章小結 295
第13章 資源、國際化與自適應 296
13.1 Android中的資源 296
13.1.1 Android怎麼儲存資源 297
13.1.2 資源的種類 297
13.1.3 資源檔的命名 298
13.2 定義和使用資源 298
13.2.1 使用系統資源 298
13.2.2 字串(String)資源 299
13.2.3 數組(Array)資源 300
13.2.4 顏色(Color)資源 302
13.2.5 尺寸(Dimension)資源 303
13.2.6 類型(Style)資源 304
13.2.7 主題(Theme)資源 305
13.2.8 繪畫(Drawable)資源 306
13.2.9 動畫(Animation)資源 307
13.2.10 菜單(Menu)資源 307
13.2.11 布局(Layout)資源 310
13.2.12 屬性(Attribute)資源 310
執行個體75:改進可顯示表徵圖的IconTextView組件 312
13.2.13 XML資源 313
13.2.14 RAW資源 314
13.2.15 ASSETS資源 314
13.3 國際化和資源自適應 315
13.3.1 對資源進行國際化 315
13.3.2 Locale與國際化 317
13.3.3 常用的資源配置 317
13.4 本章小結 318
第14章 訪問Android手機的硬體 319
14.1 在手機上測試硬體 319
14.1.1 安裝Android USB驅動 319
14.1.2 在手機上測試程式 321
14.1.3 在手機上偵錯工具 321
14.2 錄音 322
14.3 控制手機網路攝影機(拍照) 323
14.3.1 調用系統的拍照功能 323
14.3.2 實現自己的拍照Activity 325
14.4 感應器在手機中的應用 329
執行個體76:電子羅盤 330
執行個體77:計步器 331
14.5 GPS與地圖定位 332
14.5.1 Google地圖 333
14.5.2 用GPS定位到當前位置 336
14.6 WIFI 337
14.7 本章小結 339
第15章 放在案頭上的小玩意 340
15.1 視窗小組件(App Widget) 340
15.1.1 在Android案頭上添加App Widget 340
15.1.2 開發App Widget的步驟 341
執行個體78:數字時鐘 343
15.1.3 AppWidgetProvider類 345
15.1.4 向App Widget添加配置Activity 346
執行個體79:可以選擇風格的數字時鐘 346
15.2 捷徑 350
15.2.1 向捷徑列表中添加捷徑 350
15.2.2 直接將捷徑放到案頭上 351
15.3 即時檔案夾(LiveFolder) 351
15.4 本章小結 353
第16章 NDK編程 354
16.1 Android NDK簡介 354
16.2 安裝、配置和測試NDK開發環境 355
16.2.1 系統和軟體要求 355
16.2.2 下載和安裝Android NDK 355
16.2.3 下載和安裝Cygwin 356
16.2.4 配置Android NDK的開發環境 358
16.2.5 編譯和運行NDK內建的例子 359
16.3 Android NDK開發 361
16.3.1 JNI介面設計 361
16.3.2 編寫Android NDK程式的步驟 362
執行個體80:將檔案中的小寫字母轉換成大寫字母(NDK版本) 362
16.3.3 配置Android.mk檔案 364
16.3.4 Android NDK定義的變數 365
16.3.5 Android NDK定義的函數 366
16.3.6 描述模組的變數 366
16.3.7 配置Application.mk檔案 367
16.4 本章小結 368
第17章 整合Android與指令碼語言 369
17.1 Android指令碼環境簡介 369
17.2 Android指令碼環境安裝 370
17.3 編寫和運行Android指令碼 371
17.4 本章小結 373
第18章 Android平台的新特性展示 374
18.1 Android平台的新特性 374
18.1.1 Android 1.6的新特性 374
18.1.2 Android 2.0的新特性 376
18.2 Android Framework API演變 376
18.2.1 Android 1.6 Framework API的變化 376
18.2.2 Android 2.x Framework API的變化 377
18.3 即時壁紙(Live Wallpapers,Android 2.1) 377
18.4 補間動畫渲染器(Android 1.6) 384
18.4.1 Anticipate渲染器 385
18.4.2 Overshoot渲染器 385
18.4.3 Anticipate/Overshoot渲染器 385
18.4.4 Bounce渲染器 385
18.5 本章小結 386
第19章 另類的輸入輸出(Android 1.6) 387
19.1 手勢(Gesture) 387
19.1.1 建立手勢檔案 387
19.1.2 通過手勢輸入字串 388
19.1.3 通過手勢調用程式 390
19.1.4 編寫自己的手勢建立器 391
19.2 讓手機說話(TTS) 392
19.3 本章小結 393
第20章 藍芽(Android 2.0) 394
20.1 藍芽簡介 394
20.2 開啟和關閉藍牙裝置 395
20.3 搜尋藍牙裝置 395
20.4 藍芽Socket 397
20.5 OBEX伺服器 399
20.6 本章小結 400
第21章 OPhone入門 401
21.1 OPhone平台概述 401
21.1.1 OPhone的系統架構 401
21.1.2 JIL Widget的運行環境 402
21.1.3 OPhone應用程式展示 402
21.2 OPhone開發環境搭建 403
21.2.1 安裝ODT和WDT 403
21.2.2 測試一下ODT是否安裝成功 403
21.2.3 測試一下WDT是否安裝成功 403
21.3 本章小結 404
第22章 OPhone的API擴充 405
22.1 視頻電話 405
22.1.1 撥打視頻電話 405
22.1.2 掛斷視頻電話 405
執行個體81:可撥打視頻電話的程式 406
22.2 搜尋API 407
22.3 本章小結 408
第23章 JIL Widget開發詳解 409
23.1 編寫第一個JIL Widget程式 409
23.2 多媒體 411
23.2.1 播放音頻 411
23.2.2 播放視頻 412
23.3 操作檔案 412
23.3.1 獲得與檔案相關的資訊 413
23.3.2 操作檔案 413
23.3.3 操作檔案夾 415
23.4 獲得系統資訊 416
23.4.1 獲得電池資訊 416
23.4.2 獲得手機訊號資訊 417
23.4.3 獲得裝置資訊 418
23.4.4 獲得裝置狀態資訊 418
23.5 控制硬體 419
23.5.1 拍照和攝像 420
23.5.2 打電話 420
23.5.3 手機震動 420
23.6 本章小結 421
第24章 萬年曆 422
24.1 主介面設計與實現 422
24.1.1 萬年曆的核心類:Calendar 422
24.1.2 日曆內容元素的基類:CalendarParent 424
24.1.3 繪製萬年曆邊框:Border類 424
24.1.4 繪製周名稱:Week類 425
24.2.5 繪製日期和網格:Grid類 426
24.2.6 行事曆檢視:CalendarView類 433
24.2.7 產生萬年曆的主介面 435
24.2 選項菜單功能 436
24.2.1 切換到今天的日期 436
24.2.2 指定日期 436
24.3 可以寫日記和提醒的萬年曆 437
24.3.1 顯示所有的記錄資訊:AllRecord類 437
24.3.2 添加和修改記錄:Record類 439
24.3.3 設定提醒時間 440
24.3.4 啟動服務 441
24.3.5 在廣播接收器中顯示提醒介面 442
24.3.6 訪問資料庫:DBService 443
24.4 本章小結 447
第25章 知道當前位置的Google GTalk機器人 448
25.1 GTalk的通訊協議和技術 448
25.1.1 Jabber和XMPP 448
25.1.2 XMPP用戶端庫:Smack和Asmack 449
25.2 登入GTalk:Login類 449
25.3 連絡人資訊 451
25.3.1 顯示連絡人清單 451
25.3.2 監聽連絡人是否上線 453
25.4 連絡人之間的通訊 454
25.4.1 發送聊天資訊 455
25.4.2 接收聊天資訊 455
25.4.3 自動回複當前的位置(GPS定位) 458
25.5 本章小結 459