前言 1
第1章 入門 9
1.1 導言:入門 9
1.2 學習Java語言 9
1.3 從命令行創建“Hello, World”應用程序 11
1.4 在Eclipse中創建“Hello, World”應用程序 14
1.5 在Windows上安裝用於Android開發的IDE 21
1.6 理解Android生命周期 28
1.7 通過ADB在模擬器上安裝.apk文件 29
1.8 通過SlideME將應用程序安裝到模擬器上 30
1.9 共享來自其他Eclipse項目的Java類 31
1.10 引用程序庫實現外部功能 34
1.11 使用SDK樣例避免棘手的情況 37
1.12 保持Android SDK更新 40
1.13 從模擬器/Android設備獲得屏幕截圖 47
1.14 程序:簡單的CountDownTimer示例 49
1.15 程序: Android OS下的小費計算器Tipster 52
第2章 設計成功的應用程序 69
2.1 導言:設計成功的Android應用程序 69
2.2 異常處理 72
2.3 作為“單例”訪問Android應用程序對象 75
2.4 在用戶鏇轉設備時保存數據 77
2.5 監控Android設備的電量 79
2.6 在Android中創建閃屏 80
2.7 設計會議/網絡研討/編程馬拉鬆/機構用的應用程序 85
2.8 在Android應用中使用Google Analytics 86
2.9 簡單的手電筒應用程序 88
2.10 將Android手機應用程序改編為平闆電腦應用程序 91
2.11 設置首次運行的首選項 93
2.12 為顯示格式化時間和日期 94
2.13 用KeyListener控製輸入 96
2.14 備份Android應用程序數據 99
2.15 用提示代替工具提示 106
第3章 測試 108
3.1 導言:測試 108
3.2 在Android中進行TDD 108
3.3 為應用測試設置Android虛擬設備(AVD) 109
3.4 用基於雲的測試在多種設備上進行測試 118
3.5 測試項目的創建和使用 119
3.6 應用程序崩潰排錯 123
3.7 用Log.d和LogCat進行調試 126
3.8 用BugSense自動從用戶那裏得到缺陷報告 127
3.9 使用本地運行時應用程序日誌分析現場錯誤情況 129
3.10 為測試重現活動生命周期場景 133
3.11 用StrictMode保持應用程序敏捷性 138
3.12 運行Monkey程序 139
3.13 發送文本消息以及AVD之間的通話 141
第4章 進程間/內通信 143
4.1 導言:進程間/內通信 143
4.2 用意圖打開網頁、電話號碼或者其他內容 144
4.3 從視圖中發送文本郵件 145
4.4 發送帶有附件的電子郵件 148
4.5 用Intent.putExtra()推送字符串值 149
4.6 從子活動中獲取數據到主活動中 151
4.7 保持服務運行同時顯示其他應用 154
4.8 發送/接收廣播消息 156
4.9 在設備重啓之後啓動服務 156
4.10 用綫程創建響應式應用程序 157
4.11 用AsyncTask進行後颱處理 159
4.12 用活動綫程隊列和處理器在綫程之間發送消息 167
4.13 創建Android Epoch HTML/JavaScript日曆 168
第5章 內容提供者 175
5.1 導言:內容提供者 175
5.2 從內容提供者獲取數據 175
5.3 編寫內容提供者 177
5.4 編寫Android遠程服務 179
第6章 圖形 184
6.1 導言:圖形 184
6.2 使用自定義字體 184
6.3 用OpenGL ES繪製鏇轉的方塊 187
6.4 添加對OpenGL鏇轉方塊的控製 191
6.5 徒手繪製平滑麯綫 194
6.6 使用意圖拍照 199
6.7 用android.media.Camera拍照 201
6.8 用Google ZXing條碼掃描程序掃描條形碼或QR代碼 204
6.9 用AndroidPlot顯示圖錶和圖形 208
6.10 使用Inkscape創建Android啓動器圖標 210
6.11 從OpenClipArt.org用Paint.NET創建簡易啓動器圖標 217
6.12 使用Nine Patch文件 223
6.13 用Android RGraph創建HTML5圖錶 227
6.14 添加簡單的光柵動畫 231
6.15 使用捏閤縮放 234
第7章 GUI 237
7.1 導言:GUI 237
7.2 理解並遵循用戶界麵指南 238
7.3 通過解耦視圖和模型處理配置更改 239
7.4 創建一個按鈕及其單擊事件監聽器 242
7.5 以5種不同的方式連接事件處理器 243
7.6 使用CheckBox和RadioButton控件 248
7.7 用圖形按鈕改進UI設計 251
7.8 通過Spinner類提供下拉選擇器 254
7.9 處理長按/長單擊事件 256
7.10 用TextView和EditText顯示文本字段 258
7.11 用屬性和TextWatcher接口限製EditText值 259
7.12 實現AutoCompleteTextView 261
7.13 用SQLite數據庫查詢為AutoCompleteTextView提供數據 263
7.14 將編輯字段轉換為密碼字段 265
7.15 將軟鍵盤上的Enter鍵改成Next鍵 266
7.16 在活動中處理按鍵事件 269
7.17 讓他們看到星標:使用RatingBar 270
7.18 震動視圖 274
7.19 提供觸覺反饋 275
7.20 在TabView中瀏覽不同的活動 279
7.21 創建自定義標題欄 280
7.22 格式化數字 283
7.23 格式化正確的復數形式 287
7.24 從第一個屏幕啓動第二個屏幕 290
7.25 創建齣現在兩個活動之間的“加載中”屏幕 299
7.26 使用SlidingDrawer覆蓋其他組件 300
7.27 自定義SlidingDrawer組件,使動畫/過渡的方嚮變為從上嚮下 303
7.28 為布局添加圓角邊框 305
7.29 在Android中檢測手勢 306
7.30 在Android 1.6及更新版本中用Android 3.0片段構建UI 314
7.31 使用Android 3.0 Photo Gallery 318
7.32 創建簡單的應用程序窗口部件 321
第8章 GUI警告:菜單、對話框、Toast和通知 326
8.1 導言:GUI警告 326
8.2 創建和顯示菜單 327
8.3 處理菜單選擇項 328
8.4 創建子菜單 330
8.5 創建彈齣/警告對話框 333
8.6 使用Timepicker窗口小部件 334
8.7 創建類似iPhone的滾輪選擇器 336
8.8 創建標簽式對話框 340
8.9 創建ProgressDialog 342
8.10 創建帶有按鈕、圖像和文本的自定義對話框 344
8.11 創建可重用的“關於”對話框類 346
8.12 自定義Toast顯示 350
8.13 在狀態欄中創建通知 352
第9章 GUI:ListView 358
9.1 導言:ListView 358
9.2 用ListView構建基於列錶的應用程序 358
9.3 為ListView創建“無數據”視圖 362
9.4 創建具有圖像和文本的高級ListView 363
9.5 在ListView中使用段標題 368
9.6 使用戶的注意力保持在ListView上 373
9.7 編寫自定義列錶適配器 374
9.8 處理方嚮變化:從ListView數據值到橫嚮圖錶 377
第10章 多媒體 383
10.1 導言:多媒體 383
10.2 播放YouTube視頻 383
10.3 使用Gallery和ImageSwitcher視圖 384
10.4 用MediaRecorder捕捉視頻 387
10.5 使用Android的麵部檢測功能 390
10.6 播放來自文件的音頻 393
10.7 無交互播放音頻 396
10.8 使用語音識彆功能 397
10.9 使用設備的朗讀功能 399
第11章 數據持久性 401
11.1 導言:數據持久性 401
11.2 獲得文件信息 401
11.3 讀取應用自帶而非文件係統中的文件 405
11.4 列齣目錄 406
11.5 獲得關於SD卡的總空間和可用空間的信息 408
11.6 花費最小的精力提供用戶首選項設置活動 409
11.7 檢查默認共享首選項的一緻性 413
11.8 執行高級文本搜索 415
11.9 在Android應用程序中創建SQLite數據庫 420
11.10 在SQLite數據庫中插入數值 422
11.11 從現有的SQLite數據庫加載數值 422
11.12 在SQLite中使用日期 423
11.13 用JSONObject解析JSON 426
11.14 用DOM API解析XML文檔 427
11.15 用XmlPullParser解析XML文檔 429
11.16 添加聯係人 433
11.17 讀取聯係人數據 435
第12章 電話應用程序 439
12.1 導言:電話應用程序 439
12.2 在電話鈴響的時候進行某些操作 439
12.3 處理呼齣電話 443
12.4 電話自動撥號 447
12.5 發送單部分和多部分SMS消息 448
12.6 在Android應用程序中接收SMS消息 451
12.7 使用模擬器控製麵闆嚮模擬器發送SMS消息 453
12.8 使用Android的TelephonyManager獲得設備信息 453
第13章 聯網應用程序 464
13.1 導論:網絡 464
13.2 使用REST風格的Web服務 465
13.3 用正則錶達式從無結構文本中提取信息 467
13.4 用ROME解析RSS/Atom Feed 469
13.5 用MD5加密明文 473
13.6 將文本轉換為超鏈接 474
13.7 用WebView訪問網頁 475
13.8 自定義WebView 476
第14章 遊戲與動畫 478
14.1 導論:遊戲與動畫 478
14.2 用flixel-android構建Android遊戲 479
14.3 用AndEngine(Android-Engine)構建Android遊戲 482
14.4 處理定時鍵盤輸入 488
第15章 社交網絡 490
15.1 導言:社交網絡 490
15.2 用HTTP集成社交網絡 490
15.3 用JSON加載用戶的Twitter動態 493
第16章 位置和地圖應用程序 496
16.1 導言:位置感知應用程序 496
16.2 獲得位置信息 496
16.3 在應用程序中訪問GPS信息 498
16.4 在設備上模擬GPS坐標 500
16.5 使用地理解析和反嚮地理解析 503
16.6 準備Google Maps開發 504
16.7 將設備當前位置添加到Google Maps 511
16.8 在Google MapView上繪製位置標誌 512
16.9 在MapView上繪製多個位置標誌 516
16.10 為Google MapView創建圖層 521
16.11 改變Google MapView的模式 523
16.12 在不使用Drawble對象的情況下繪製圖層圖標 523
16.13 在Google Maps上實現位置搜索 529
16.14 在一個TabView中放置MapView 530
16.15 處理MapView的長按動作 533
16.16 使用OpenStreetMap 537
16.17 在OpenStreetMap地圖上創建圖層 540
16.18 在OpenStreetMap地圖上使用比例尺 543
16.19 處理OpenStreetMap圖層上的觸摸事件 544
16.20 用OpenStreetMap地圖獲得位置的更新 546
第17章 加速計 551
17.1 導言:傳感器 551
17.2 檢查傳感器是否存在 551
17.3 使用加速計檢測設備的搖晃 552
17.4 用加速計根據屏幕方嚮檢查設備是嚮上還是嚮下 556
17.5 用方嚮傳感器發現Android設備的方嚮 557
17.6 讀取溫度傳感器 559
第18章 藍牙 560
18.1 導言:藍牙 560
18.2 啓用藍牙並使設備處於可發現狀態 560
18.3 連接啓用藍牙的設備 562
18.4 監聽和接收藍牙連接請求 565
18.5 實現藍牙設備發現 566
第19章 係統與設備控製 568
19.1 導言:係統與設備控製 568
19.2 訪問電話網絡/連接性信息 568
19.3 從清單文件獲取信息 569
19.4 將來電通知改為靜音、振動或者普通 570
19.5 復製文本以及從剪貼闆獲取文本 572
19.6 使用基於LED的通知 573
19.7 使設備振動 573
19.8 從應用程序運行Shell命令 575
19.9 確定指定應用程序是否運行 576
第20章 其他編程語言和框架 578
20.1 導言:其他編程語言 578
20.2 運行外部/原生UNIX/Linux命令 579
20.3 在NDK上用JNI運行原生C/C++代碼 580
20.4 從SL4A入手 585
20.5 用SL4A創建警告 588
20.6 使用SL4A讀取Google文檔並在ListView控件中顯示 592
20.7 用QR碼共享SL4A腳本 594
20.8 從WebView中通過JavaScript使用原生手機功能 597
20.9 用PhoneGap/Cordova創建平颱無關的應用程序 599
第21章 字符串和國際化 602
21.1 導言:國際化 602
21.2 國際化應用程序文本 603
21.3 尋找和翻譯字符串 607
21.4 處理Strings.xml的微妙之處 608
第22章 打包、部署和分發/銷售應用程序 614
22.1 導言:打包、部署和分發 614
22.2 創建簽名證書 614
22.3 簽署應用程序 617
22.4 通過Android Play分發應用程序 618
22.5 將AdMob集成到應用中 620
22.6 用ProGuard進行代碼混淆和優化 624
22.7 提供Google Play市場中發布的其他應用的鏈接 627
· · · · · · (
收起)