Android 4高級編程(第3版)

《Android 4高級編程(第3版)》是2015年清華大學出版社出版的圖書。

圖書簡介

《Android 4高級編程(第3版)》由Android權威專家編寫,涵蓋了所有最新的內容,是學習使用Android 4 SDK開發移動應用程式的理想指南。本書見解深刻,幫助經驗豐富的Android開發人員充分挖掘Android 4的新特性的潛力,同時講解了Android開發的基礎知識,使初學者也可以藉助本書入門。作為一本以實用性為目的的指導圖書,本書帶領您逐步完成複雜程度越來越高的Android項目,每個項目中都引入一種新的Android平台特性,並著重指出有助於編寫引人入勝的應用程式的技術和最佳實踐。

目錄

第1章Android簡介 1

1.1一些背景信息 2

1.1.1不遠的過去 2

1.1.2未來的前景 2

1.2對Android的誤解 3

1.3Android:開放的移動開發平台 3

1.4原生Android應用程式 4

1.5AndroidSDK的特徵 5

1.5.1訪問硬體(包括攝像頭、GPS和

感測器) 5

1.5.2使用Wi-Fi、藍牙技術和NFC

進行數據傳輸 6

1.5.3地圖、地理編碼和基於位置的

服務 6

1.5.4後台服務 6

1.5.5使用SQLite資料庫進行數據

存儲和檢索 7

1.5.6共享數據和應用程式間通信 7

1.5.7使用Widget和LiveWallpaper

增強主螢幕 7

1.5.8廣泛的媒體支持和2D/3D圖形 7

1.5.9CloudtoDeviceMessaging 8

1.5.10最佳化的記憶體和進程管理 8

1.6開放手機聯盟簡介 8

1.7運行Android的環境 9

1.8從事移動開發的原因 9

1.9從事Android開發的原因 9

1.9.1推動Android普及的因素 10

1.9.2Android的獨到之處 10

1.9.3改變移動開發格局 11

1.10開發框架簡介 11

1.10.1開發包中的資源 12

1.10.2理解Android軟體棧 12

1.10.3Dalvik虛擬機 14

1.10.4Android應用程式架構 14

1.10.5Android庫 15

第2章開始入手 17

2.1Android開發 18

2.1.1開始前的準備工作 18

2.1.2創建第一個Android應用程式 24

2.1.3Android應用程式的類型 31

2.2面向移動設備和嵌入式設備的

開發 32

2.2.1硬體限制帶來的設計考慮事項 32

2.2.2考慮用戶環境 35

2.2.3Android開發 36

2.3Android開發工具 40

2.3.1Android虛擬設備管理器 41

2.3.2AndroidSDK管理器 42

2.3.3Android模擬器 42

2.3.4Dalvik調試監控服務(DDMS) 42

2.3.5Android調試橋(ADB) 43

2.3.6HierarchyViewer和Lint工具 43

2.3.7Monkey和MonkeyRunner 43

第3章創建應用程式和Activity 45

3.1Android應用程式的組成部分 46

3.2應用程式Manifest檔案簡介 47

3.3使用Manifest編輯器 54

3.4分離資源 55

3.4.1創建資源 55

3.4.2使用資源 63

3.4.3為不同的語言和硬體創建

資源 66

3.4.4運行時配置更改 68

3.5Android應用程式生命周期 70

3.6理解應用程式的優先權和進程

狀態 70

3.7AndroidApplication類簡介 72

3.7.1擴展和使用Application類 72

3.7.2重寫應用程式的生命周期

事件 73

3.8深入探討AndroidActivity 74

3.8.1創建Activity 74

3.8.2Activity的生存期 76

3.8.3AndroidActivity類 81

第4章創建用戶界面 83

4.1AndroidUI基本設計 84

4.2AndroidUI的基礎知識 84

4.3布局簡介 85

4.3.1定義布局 86

4.3.2使用布局創建設備無關的UI 87

4.3.3最佳化布局 90

4.4To-DoList示例 93

4.5Fragment介紹 100

4.5.1創建新的Fragment 101

4.5.2Fragment的生命周期 101

4.5.3FragmentManager介紹 105

4.5.4向Activity中添加Fragment 105

4.5.5Fragment和Activity之間的

接口 110

4.5.6沒有用戶界面的Fragment 111

4.5.7AndroidFragment類 112

4.5.8對To-DoList示例使用

Fragment 112

4.6Androidwidget工具箱 116

4.7創建新視圖 117

4.7.1修改現有的視圖 118

4.7.2創建複合控制項 122

4.7.3使用布局創建簡單的複合

控制項 124

4.7.4創建定製的視圖 124

4.7.5使用定製的控制項 137

4.8Adapter簡介 137

4.8.1部分原生Adapter簡介 138

4.8.2定製ArrayAdapter 138

4.8.3使用Adapter綁定數據到

視圖 139

第5章Intent和BroadcastReceiver 145

5.1Intent簡介 145

5.1.1使用Intent來啟動Activity 146

5.1.2Linkify簡介 153

5.1.3使用Intent廣播事件 155

5.1.4LocalBroadcastManager 159

5.1.5PendingIntent簡介 160

5.2創建IntentFilter和Broadcast

Receiver 161

5.2.1使用IntentFilter為隱式Intent

提供服務 161

5.2.2使用IntentFilter作為外掛程式和

擴展 170

5.2.3監聽本地BroadcastIntent 173

5.2.4使用BroadcastIntent監控設備的

狀態變化 174

5.2.5在運行時管理Manifest

Receiver 176

第6章使用Internet資源 177

6.1下載和分析Internet資源 177

6.1.1連線Internet資源 178

6.1.2使用XMLPullParser分析

XML 179

6.1.3創建一個地震查看器 180

6.2使用DownloadManager 186

6.2.1下載檔案 186

6.2.2自定義DownloadManager

Notification 187

6.2.3指定下載位置 188

6.2.4取消和刪除下載 189

6.2.5查詢DownloadManager 189

6.3使用Internet服務 192

6.4連線到GoogleAppEngine 192

6.5下載數據而不會耗盡電量的

最佳實踐 194

第7章檔案、保存狀態和首選項 195

7.1保存簡單的應用程式數據 195

7.2創建並保存SharedPreference 196

7.3檢索SharedPreference 197

7.4為地震查看器創建一個設定

Activity 197

7.5首選項框架和PreferenceActivity

概述 205

7.5.1在XML中定義一個

PreferenceScreen布局 206

7.5.2PreferenceFragment簡介 208

7.5.3使用PreferenceHeader定義

PreferenceFragment的層次

結構 208

7.5.4PreferenceActivity簡介 209

7.5.5向後兼容性與Preference

Screen 210

7.5.6找到並使用PreferenceScreen

設定的SharedPreference 210

7.5.7SharedPreferenceChange

Listener簡介 211

7.6為地震查看器創建一個標準的

PreferenceActivity 211

7.7持久化應用程式實例的狀態 215

7.7.1使用SharedPreference保存

Activity狀態 215

7.7.2使用生命周期處理程式保存和

還原Activity實例 215

7.7.3使用生命周期處理程式保存和

還原Fragment實例狀態 216

7.8將靜態檔案作為資源添加 218

7.9在檔案系統下工作 218

7.9.1檔案管理工具 218

7.9.2使用特定於應用程式的資料夾

存儲檔案 219

7.9.3創建私有的應用程式檔案 219

7.9.4使用應用程式檔案快取 220

7.9.5存儲公共可讀的檔案 220

第8章資料庫和ContentProvider 223

8.1Android資料庫簡介 223

8.1.1SQLite資料庫簡介 224

8.1.2ContentProvider簡介 224

8.2SQLite簡介 224

8.3ContentValue和Cursor 225

8.4使用SQLite資料庫 225

8.4.1SQLiteOpenHelper簡介 226

8.4.2在不使用SQLiteOpenHelper的

情況下打開和創建資料庫 228

8.4.3Android資料庫設計注意

事項 228

8.4.4查詢資料庫 228

8.4.5從Cursor中提取值 229

8.4.6添加、更新和刪除行 230

8.5創建ContentProvider 232

8.5.1註冊ContentProvider 233

8.5.2發布ContentProvider的URI

地址 233

8.5.3創建ContentProvide的

資料庫 234

8.5.4實現ContentProvider查詢 235

8.5.5ContentProvider事務 236

8.5.6在ContentProvider中存儲

檔案 239

8.5.7一個ContentProvider的實現

框架 240

8.6使用ContentProvider 244

8.6.1ContentResolver簡介 244

8.6.2查詢ContentProvider 244

8.6.3使用CursorLoader異步查詢

內容 247

8.6.4添加、刪除和更新內容 249

8.6.5訪問ContentProvider中存儲的

檔案 251

8.6.6創建一個To-DoList資料庫和

ContentProvider 253

8.7將搜尋功能添加到應用程式中 260

8.7.1使ContentProvider可搜尋 261

8.7.2為應用程式創建一個搜尋

Activity 261

8.7.3將搜尋Activity設定為套用

程式的默認搜尋Provider 263

8.7.4使用搜尋視圖微件 266

8.7.5由ContentProvider支持搜尋

建議 267

8.7.6在快速搜尋框中顯示搜尋

結果 270

8.8創建可搜尋的地震Content

Provider 270

8.8.1創建ContentProvider 270

8.8.2使用地震ContentProvider 276

8.8.3搜尋EarthquakeContent

Provider 279

8.9本地AndroidContentProvider 285

8.9.1使用MediaStoreContent

Provider 285

8.9.2使用ContactsContractContent

Provider 286

8.9.3使用CalendarContent

Provider 293

第9章在後台操作 297

9.1Service簡介 298

9.1.1創建和控制Service 298

9.1.2將Service綁定到Activity 302

9.1.3地震監控Service示例 304

9.1.4創建前台Service 308

9.2使用後台執行緒 309

9.2.1使用AsyncTask運行異步任務 310

9.2.2IntentService簡介 312

9.2.3Loader簡介 313

9.2.4手動創建執行緒和GUI執行緒

同步 313

9.3使用Alarm 315

9.3.1創建、設定和取消Alarm 316

9.3.2設定重複Alarm 317

9.3.3使用重複Alarm調度網路

刷新 318

9.4使用IntentService簡化Earthquake

更新Service 320

第10章擴展用戶體驗 323

10.1操作欄簡介 324

10.1.1自定義操作欄 325

10.1.2自定義操作欄來控制套用

程式的導航行為 328

10.1.3操作欄操作簡介 333

10.2向地震監控程式添加一個

操作欄 333

10.3創建並使用選單和操作欄

操作項 339

10.3.1Android選單系統簡介 340

10.3.2創建選單 341

10.3.3指定操作欄的操作 342

10.3.4選單項選項 343

10.3.5添加操作View和操作提供

程式 344

10.3.6在Fragment中添加選單項 345

10.3.7使用XML定義選單層次

結構 345

10.3.8動態更新選單項 347

10.3.9處理選單選擇 347

10.3.10子選單和上下文選單簡介 348

10.4更新地震監控程式 351

10.5全螢幕顯示 353

10.6對話框簡介 355

10.6.1創建一個對話框 356

10.6.2使用AlertDialog類 356

10.6.3使用專門的輸入對話框 357

10.6.4通過DialogFragment管理和

顯示對話框 358

10.6.5通過Activity事件處理程式

管理和顯示對話框 360

10.6.6將Activity用作對話框 361

10.7創建Toast 361

10.7.1自定義Toast 362

10.7.2在工作執行緒中使用Toast 364

10.8Notification簡介 365

10.8.1NotificationManager簡介 366

10.8.2創建Notification 366

10.8.3設定和自定義通知托盤UI 369

10.8.4配置持續和連續的

Notification 373

10.8.5觸發、更新和取消

Notification 374

10.9向地震監控程式中添加

Notification和對話框 376

第11章高級用戶體驗 381

11.1為每個螢幕尺寸和解析度做

設計 382

11.1.1解析度無關 382

11.1.2為不同的螢幕大小提供支持和

最佳化 383

11.1.3創建可縮放的圖形資源 386

11.1.4創建最佳化的、自適應的、

動態的設計 390

11.1.5反覆測試 390

11.2確保可訪問性 391

11.2.1為非觸屏設備提供導航 391

11.2.2為每個View提供文本

描述 391

11.3AndroidText-to-Speech簡介 392

11.4使用語音識別 394

11.4.1使用語音識別進行語音

輸入 395

11.4.2使用語音識別進行搜尋 396

11.5控制設備振動 396

11.6使用動畫 397

11.6.1補間View動畫 397

11.6.2創建和使用逐幀動畫 400

11.6.3插值屬性動畫 400

11.7強化View 404

11.7.1高級Canvas繪圖 404

11.7.2硬體加速 419

11.7.3SurfaceView簡介 420

11.7.4創建互動式控制項 423

11.8高級Drawable資源 428

11.9複製、貼上和剪貼簿 431

11.9.1向剪貼簿中複製數據 431

11.9.2貼上剪貼簿數據 431

第12章硬體感測器 433

12.1使用感測器和感測器

管理器 433

12.1.1受支持的Android感測器 434

12.1.2虛擬感測器簡介 435

12.1.3查找感測器 435

12.1.4監視感測器 436

12.1.5解釋感測器值 438

12.2監視設備的移動和方向 439

12.2.1確定設備的自然方向 440

12.2.2加速計簡介 441

12.2.3檢測加速度變化 442

12.2.4創建一個重力計 443

12.2.5確定設備方向 446

12.2.6創建一個指南針和人工

地平儀 450

12.2.7陀螺儀感測器簡介 453

12.3環境感測器簡介 454

12.3.1使用氣壓計感測器 454

12.3.2創建氣象站 455

第13章地圖、地理編碼和基於位置的

服務 461

13.1使用基於位置的服務 461

13.2在模擬器中使用基於位置的

服務 462

13.2.1更新模擬器位置提供器中的

位置 463

13.2.2配置模擬器來測試基於位置的

服務 463

13.3選擇一個位置提供器 464

13.3.1查找位置提供器 464

13.3.2通過指定條件查找位置

提供器 464

13.3.3確定位置提供器的能力 465

13.4確定當前位置 466

13.4.1位置的隱私性 466

13.4.2找出上一次確定的位置 466

13.4.3WhereAmI示例 466

13.4.4刷新當前位置 469

13.4.5在WhereAmI中跟蹤

位置 472

13.4.6請求單獨一次位置更新 473

13.5位置更新的最佳實踐 474

13.6使用近距離提醒 477

13.7使用地理編碼器 478

13.7.1反向地理編碼 479

13.7.2前向地理編碼 480

13.7.3對“WhereAmI”示例

進行地理編碼 481

13.8創建基於地圖的Activity 482

13.8.1MapView和MapActivity

簡介 482

13.8.2獲得地圖的APIkey 483

13.8.3創建一個基於地圖的

Activity 483

13.8.4地圖和Fragment 485

13.8.5配置和使用MapView 486

13.8.6使用MapController 486

13.8.7對“WhereAmI”示例使用

地圖 487

13.8.8創建和使用覆蓋(Overlay) 490

13.8.9MyLocationOverlay簡介 497

13.8.10ItemizedOverlay和

OverlayItem簡介 498

13.8.11將視圖固定到地圖和地圖的

某個位置上 500

13.9對Earthquake示例添加地圖

功能 501

第14章個性化主螢幕 507

14.1主螢幕Widget簡介 507

14.2創建AppWidgets 509

14.2.1創建Widget的XML

布局資源 509

14.2.2定義Widget設定 511

14.2.3創建WidgetBroadcastReceiver

並將其添加到應用程式的

manifest檔案中 512

14.2.4AppWidgetManager和

RemoteView簡介 513

14.2.5刷新Widget 518

14.2.6創建並使用Widget配置

Activity 521

14.3創建地震Widget 522

14.4CollectionViewWidget簡介 528

14.4.1創建CollectionViewWidget的

布局 529

14.4.2創建RemoteViewsService 530

14.4.3創建一個RemoteViews-

Factory 531

14.4.4使用RemoteViewsService

填充CollectionViewWidget 533

14.4.5向CollectionViewWidget

中的項添加互動性 534

14.4.6將CollectionViewWidget

綁定到ContentProvider 535

14.4.7刷新CollectionView

Widget 537

14.4.8創建EarthquakeCollection

ViewWidget 537

14.5LiveFolder簡介 543

14.5.1創建LiveFolder 544

14.5.2創建EarthquakeLiveFolder 548

14.6使用快速搜尋框顯示應用程式

搜尋結果 551

14.6.1在快速搜尋框中顯示搜尋

結果 551

14.6.2將Earthquake示例的搜尋

結果添加到快速搜尋框中 552

14.7創建LiveWallpaper 553

14.7.1創建LiveWallpaper定義

資源 553

14.7.2創建WallpaperService 554

14.7.3創建WallpaperService

引擎 555

第15章音頻、視頻以及攝像頭的

使用 557

15.1播放音頻和視頻 558

15.1.1MediaPlayer簡介 559

15.1.2準備音頻播放 559

15.1.3準備視頻播放 560

15.1.4控制MediaPlayer的

播放 564

15.1.5管理媒體播放輸出 566

15.1.6回響音量控制 566

15.1.7回響Media播放控制項 567

15.1.8請求和管理音頻焦點 569

15.1.9當音頻輸出改變時暫停

播放 571

15.1.10RemoteControlClient簡介 572

15.2操作原始音頻 574

15.2.1使用AudioRecord錄製

聲音 574

15.2.2使用AudioTrack播放音頻 575

15.3創建一個SoundPool 577

15.4使用音效 578

15.5使用攝像頭拍攝照片 579

15.5.1使用Intent拍攝照片 579

15.5.2直接控制攝像頭 581

15.5.3讀取並寫入JPEGEXIF圖像

詳細信息 588

15.6錄製視頻 589

15.6.1使用Intent錄製視頻 589

15.6.2使用MediaRecorder錄製

視頻 590

15.7使用媒體效果 593

15.8向媒體庫中添加新媒體 594

15.8.1使用媒體掃瞄器插入媒體 594

15.8.2手動插入媒體 595

第16章藍牙、NFC、網路和Wi-Fi 597

16.1使用藍牙 597

16.1.1管理本地藍牙設備適配器 598

16.1.2可發現性和遠程設備發現 600

16.1.3藍牙通信 604

16.2管理網路和Internet連線 609

16.2.1ConnectivityManager簡介 609

16.2.2支持用戶首選項以進行後台

數據傳輸 609

16.2.3查找和監視網路連線 611

16.3管理Wi-Fi 612

16.3.1監視Wi-Fi連線 613

16.3.2監視活動的Wi-Fi連線的

詳細信息 613

16.3.3掃描熱點 613

16.3.4管理Wi-Fi配置 614

16.3.5創建Wi-Fi網路配置 615

16.4使用Wi-FiDirect傳輸數據 615

16.4.1初始化Wi-FiDirect框架 615

16.4.2啟用Wi-FiDirect並監視其

狀態 617

16.4.3發現對等設備 618

16.4.4連線對等設備 618

16.4.5在對等設備之間傳輸數據 620

16.5近場通信 621

16.5.1讀取NFC標籤 622

16.5.2使用前台分派系統 623

16.5.3AndroidBeam簡介 625

第17章電話服務和SMS 629

17.1電話服務的硬體支持 629

17.1.1將電話功能指定為必需的

硬體功能 629

17.1.2檢查電話硬體 630

17.2使用電話服務 630

17.2.1啟動電話呼叫 630

17.2.2替換本機撥號程式 631

17.2.3訪問電話服務的屬性及狀態 632

17.2.4使用PhoneStateListener

監視電話狀態的變化 635

17.2.5使用IntentReceiver監視傳入的

電話呼叫 639

17.3SMS和MMS簡介 640

17.3.1在應用程式中使用SMS和

MMS 640

17.3.2使用Intent從應用程式中

傳送SMS和MMS 640

17.3.3使用SMSManager傳送

SMS訊息 641

17.3.4監聽傳入的SMS訊息 644

17.3.5緊急回響程式SMS示例 646

17.3.6自動緊急回響程式 654

17.4SIP和VOIP簡介 662

第18章Android高級開發 663

18.1Android的安全性 664

18.1.1Linux核心安全 664

18.1.2許可權簡介 664

18.2CloudtoDeviceMessaging簡介 666

18.2.1C2DM的局限性 667

18.2.2註冊使用C2DM 667

18.2.3在C2DM伺服器上註冊

設備 667

18.2.4向設備傳送C2DM訊息 670

18.2.5接收C2DM訊息 672

18.3使用LicenseVerificationLibrary

實現著作權保護 673

18.3.1安裝LicenseVerification

Library 673

18.3.2獲得LicenseVerification

公鑰 673

18.3.3配置LicenseValidation

Policy 674

18.3.4執行許可驗證檢查 674

18.4應用程式內收費 675

18.4.1應用程式內收費的局限性 676

18.4.2安裝IAB庫 676

18.4.3獲得公鑰和定義可購買的

物品 676

18.4.4開始IAB交易 677

18.4.5處理IAB購買請求的回響 678

18.5使用WakeLock 679

18.6使用AIDL支持Service的

IPC 680

18.7處理不同硬體和軟體的可用性 686

18.7.1指定硬體的要求 686

18.7.2確認硬體可用性 687

18.7.3構建向後兼容的應用程式 687

18.8利用STRICT模式最佳化UI

性能 689

第19章推廣和發布應用程式並從中

獲利 691

19.1簽名和發布應用程式 691

19.2發布應用程式 693

19.2.1GooglePlay簡介 693

19.2.2開始使用GooglePlay 694

19.2.3發布應用程式 695

19.2.4開發者控制台上的應用程式

報告 697

19.2.5查看應用程式錯誤報告 697

19.3如何通過應用程式賺錢 698

19.4應用程式銷售、推廣和分發的

策略 699

19.4.1應用程式的起步策略 699

19.4.2在GooglePlay上推廣 700

19.4.3國際化 700

19.5分析數據和跟蹤推薦人 701

19.5.1使用移動應用程式的Google

Analytics 702

19.5.2使用GoogleAnalytics追蹤

推薦 703

相關詞條

熱門詞條

聯絡我們