Android 4高級編程

Android 4高級編程

《Android4高級編程》是2013年清華大學出版社出版的圖書,作者是(美)邁耶(Meier,R.)。

內容簡介

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

本書特色

◆ 深入分析了Android應用程式的組件和生命周期

◆ 探討了Android的UI原理、設計理念和UI API,使用戶界

面在手機、平板電腦和電視上都引人注目

◆ 介紹了創建基於地圖的應用程式和使用基於位置的服務

的相關知識

◆ 解釋了如何創建後台服務、通知和Cloud to Device Messaging

◆ 演示了如何創建動態的、互動式的主螢幕微件和Live

Wallpaper

◆ 探索了硬體和通信API,包括藍牙、電話、Wi-Fi Direct、

NFC和Android Beam

◆ 講解了攝像頭和硬體感測器的使用

◆ 詳述了新的動畫框架和其他增強用戶體驗的特性,包括

拖放、Action Bar和Fragment

◆ 新增了關於應用程式發布的一章內容

◆ 介紹了License Verification和應用程式內收費服務

作者簡介

Reto Meier 目前是Google Android 團隊的一名Android 開發人員倡導者,幫助Android 開發人員創建最優秀的應用程式。Reto 是一位經驗豐富的軟體開發人員,擁有逾10 年的GUI 應用程式開發經驗。進入Google 之前,他曾在多種行業中工作過,包括海洋石油、天然氣以及金融業。

技術編輯簡介

Dan Ulery 是一名軟體工程師,具有.NET、Java 和PHP 的開發經驗,並且十分熟悉軟體部署。他畢業於愛達荷大學,獲得了計算機科學學士學位,並且輔修了數學專業。

圖書目錄

目 錄
第1章 Android簡介 1
1.1 一些背景信息 2
1.1.1 不遠的過去 2
1.1.2 未來的前景 2
1.2 對Android的誤解 3
1.3 Android:開放的移動開發平台 3
1.4 原生Android應用程式 4
1.5 Android SDK的特徵 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和Live Wallpaper
增強主螢幕 7
1.5.8 廣泛的媒體支持和2D/3D圖形 7
1.5.9 Cloud to Device Messaging 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.2 Android的獨到之處 10
1.9.3 改變移動開發格局 11
1.10 開發框架簡介 11
1.10.1 開發包中的資源 12
1.10.2 理解Android軟體棧 12
1.10.3 Dalvik虛擬機 14
1.10.4 Android應用程式架構 14
1.10.5 Android庫 15
第2章 開始入手 17
2.1 Android開發 18
2.1.1 開始前的準備工作 18
2.1.2 創建第一個Android應用程式 24
2.1.3 Android應用程式的類型 31
2.2 面向移動設備和嵌入式設備的
開發 32
2.2.1 硬體限制帶來的設計考慮事項 32
2.2.2 考慮用戶環境 35
2.2.3 Android開發 36
2.3 Android開發工具 40
2.3.1 Android虛擬設備管理器 41
2.3.2 Android SDK管理器 42
2.3.3 Android模擬器 42
2.3.4 Dalvik調試監控服務(DDMS) 42
2.3.5 Android調試橋(ADB) 43
2.3.6 Hierarchy Viewer和Lint工具 43
2.3.7 Monkey和Monkey Runner 43
第3章 創建應用程式和Activity 45
3.1 Android應用程式的組成部分 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.5 Android應用程式生命周期 70
3.6 理解應用程式的優先權和進程
狀態 70
3.7 Android Application類簡介 72
3.7.1 擴展和使用Application類 72
3.7.2 重寫應用程式的生命周期
事件 73
3.8 深入探討Android Activity 74
3.8.1 創建Activity 74
3.8.2 Activity的生存期 76
3.8.3 Android Activity類 81
第4章 創建用戶界面 83
4.1 Android UI基本設計 84
4.2 Android UI的基礎知識 84
4.3 布局簡介 85
4.3.1 定義布局 86
4.3.2 使用布局創建設備無關的UI 87
4.3.3 最佳化布局 90
4.4 To-Do List示例 93
4.5 Fragment介紹 100
4.5.1 創建新的Fragment 101
4.5.2 Fragment的生命周期 101
4.5.3 Fragment Manager介紹 105
4.5.4 向Activity中添加Fragment 105
4.5.5 Fragment和Activity之間的
接口 110
4.5.6 沒有用戶界面的Fragment 111
4.5.7 Android Fragment 類 112
4.5.8 對To-Do List示例使用
Fragment 112
4.6 Android widget 工具箱 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.8 Adapter簡介 137
4.8.1 部分原生Adapter簡介 138
4.8.2 定製ArrayAdapter 138
4.8.3 使用Adapter綁定數據到
視圖 139
第5章 Intent和Broadcast Receiver 145
5.1 Intent簡介 145
5.1.1 使用Intent來啟動Activity 146
5.1.2 Linkify簡介 153
5.1.3 使用Intent廣播事件 155
5.1.4 Local Broadcast Manager 159
5.1.5 Pending Intent簡介 160
5.2 創建Intent Filter和Broadcast
Receiver 161
5.2.1 使用Intent Filter為隱式Intent
提供服務 161
5.2.2 使用Intent Filter作為外掛程式和
擴展 170
5.2.3 監聽本地Broadcast Intent 173
5.2.4 使用Broadcast Intent監控設備的
狀態變化 174
5.2.5 在運行時管理Manifest
Receiver 176
第6章 使用Internet資源 177
6.1 下載和分析Internet資源 177
6.1.1 連線Internet資源 178
6.1.2 使用XML Pull Parser分析
XML 179
6.1.3 創建一個地震查看器 180
6.2 使用Download Manager 186
6.2.1 下載檔案 186
6.2.2 自定義Download Manager
Notification 187
6.2.3 指定下載位置 188
6.2.4 取消和刪除下載 189
6.2.5 查詢Download Manager 189
6.3 使用Internet服務 192
6.4 連線到Google App Engine 192
6.5 下載數據而不會耗盡電量的
最佳實踐 194
第7章 檔案、保存狀態和首選項 195
7.1 保存簡單的應用程式數據 195
7.2 創建並保存Shared Preference 196
7.3 檢索Shared Preference 197
7.4 為地震查看器創建一個設定
Activity 197
7.5 首選項框架和Preference Activity
概述 205
7.5.1 在XML中定義一個
Preference Screen布局 206
7.5.2 Preference Fragment簡介 208
7.5.3 使用Preference Header定義
Preference Fragment的層次
結構 208
7.5.4 Preference Activity簡介 209
7.5.5 向後兼容性與Preference
Screen 210
7.5.6 找到並使用Preference Screen
設定的Shared Preference 210
7.5.7 Shared Preference Change
Listener簡介 211
7.6 為地震查看器創建一個標準的
Preference Activity 211
7.7 持久化應用程式實例的狀態 215
7.7.1 使用Shared Preference保存
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章 資料庫和Content Provider 223
8.1 Android資料庫簡介 223
8.1.1 SQLite資料庫簡介 224
8.1.2 Content Provider簡介 224
8.2 SQLite簡介 224
8.3 Content Value和Cursor 225
8.4 使用SQLite資料庫 225
8.4.1 SQLiteOpenHelper簡介 226
8.4.2 在不使用SQLiteOpenHelper的
情況下打開和創建資料庫 228
8.4.3 Android資料庫設計注意
事項 228
8.4.4 查詢資料庫 228
8.4.5 從Cursor中提取值 229
8.4.6 添加、更新和刪除行 230
8.5 創建Content Provider 232
8.5.1 註冊Content Provider 233
8.5.2 發布Content Provider的URI
地址 233
8.5.3 創建Content Provide的
資料庫 234
8.5.4 實現Content Provider查詢 235
8.5.5 Content Provider事務 236
8.5.6 在Content Provider中存儲
檔案 239
8.5.7 一個Content Provider的實現
框架 240
8.6 使用Content Provider 244
8.6.1 Content Resolver簡介 244
8.6.2 查詢Content Provider 244
8.6.3 使用Cursor Loader異步查詢
內容 247
8.6.4 添加、刪除和更新內容 249
8.6.5 訪問Content Provider中存儲的
檔案 251
8.6.6 創建一個To-Do List資料庫和
Content Provider 253
8.7 將搜尋功能添加到應用程式中 260
8.7.1 使Content Provider可搜尋 261
8.7.2 為應用程式創建一個搜尋
Activity 261
8.7.3 將搜尋Activity設定為套用
程式的默認搜尋Provider 263
8.7.4 使用搜尋視圖微件 266
8.7.5 由Content Provider支持搜尋
建議 267
8.7.6 在快速搜尋框中顯示搜尋
結果 270
8.8 創建可搜尋的地震Content
Provider 270
8.8.1 創建Content Provider 270
8.8.2 使用地震Content Provider 276
8.8.3 搜尋EarthquakeContent
Provider 279
8.9 本地Android Content Provider 285
8.9.1 使用Media StoreContent
Provider 285
8.9.2 使用Contacts Contract Content
Provider 286
8.9.3 使用Calendar Content
Provider 293
第9章 在後台操作 297
9.1 Service簡介 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.2 Intent Service簡介 312
9.2.3 Loader簡介 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 使用Intent Service簡化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.1 Android選單系統簡介 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 通過Dialog Fragment管理和
顯示對話框 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.8 Notification簡介 365
10.8.1 Notification Manager簡介 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.3 Android Text-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.3 Surface View簡介 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.3 Where Am I示例 466
13.4.4 刷新當前位置 469
13.4.5 在Where Am I中跟蹤
位置 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 對“Where Am I”示例
進行地理編碼 481
13.8 創建基於地圖的Activity 482
13.8.1 MapView和MapActivity
簡介 482
13.8.2 獲得地圖的API key 483
13.8.3 創建一個基於地圖的
Activity 483
13.8.4 地圖和Fragment 485
13.8.5 配置和使用MapView 486
13.8.6 使用MapController 486
13.8.7 對“Where Am I”示例使用
地圖 487
13.8.8 創建和使用覆蓋(Overlay) 490
13.8.9 MyLocationOverlay簡介 497
13.8.10 ItemizedOverlay和
OverlayItem簡介 498
13.8.11 將視圖固定到地圖和地圖的
某個位置上 500
13.9 對Earthquake示例添加地圖
功能 501
第14章 個性化主螢幕 507
14.1 主螢幕Widget簡介 507
14.2 創建App Widgets 509
14.2.1 創建Widget的XML
布局資源 509
14.2.2 定義Widget設定 511
14.2.3 創建Widget Broadcast Receiver
並將其添加到應用程式的
manifest檔案中 512
14.2.4 AppWidgetManager和
RemoteView簡介 513
14.2.5 刷新Widget 518
14.2.6 創建並使用Widget配置
Activity 521
14.3 創建地震Widget 522
14.4 Collection View Widget簡介 528
14.4.1 創建Collection View Widget的
布局 529
14.4.2 創建RemoteViewsService 530
14.4.3 創建一個RemoteViews-
Factory 531
14.4.4 使用RemoteViewsService
填充CollectionViewWidget 533
14.4.5 向Collection View Widget
中的項添加互動性 534
14.4.6 將Collection View Widget
綁定到Content Provider 535
14.4.7 刷新Collection View
Widget 537
14.4.8 創建Earthquake Collection
View Widget 537
14.5 Live Folder簡介 543
14.5.1 創建Live Folder 544
14.5.2 創建Earthquake Live Folder 548
14.6 使用快速搜尋框顯示應用程式
搜尋結果 551
14.6.1 在快速搜尋框中顯示搜尋
結果 551
14.6.2 將Earthquake示例的搜尋
結果添加到快速搜尋框中 552
14.7 創建Live Wallpaper 553
14.7.1 創建Live Wallpaper定義
資源 553
14.7.2 創建Wallpaper Service 554
14.7.3 創建Wallpaper Service
引擎 555
第15章 音頻、視頻以及攝像頭的
使用 557
15.1 播放音頻和視頻 558
15.1.1 Media Player簡介 559
15.1.2 準備音頻播放 559
15.1.3 準備視頻播放 560
15.1.4 控制Media Player的
播放 564
15.1.5 管理媒體播放輸出 566
15.1.6 回響音量控制 566
15.1.7 回響Media播放控制項 567
15.1.8 請求和管理音頻焦點 569
15.1.9 當音頻輸出改變時暫停
播放 571
15.1.10 Remote Control Client簡介 572
15.2 操作原始音頻 574
15.2.1 使用AudioRecord錄製
聲音 574
15.2.2 使用AudioTrack播放音頻 575
15.3 創建一個Sound Pool 577
15.4 使用音效 578
15.5 使用攝像頭拍攝照片 579
15.5.1 使用Intent拍攝照片 579
15.5.2 直接控制攝像頭 581
15.5.3 讀取並寫入 JPEG EXIF圖像
詳細信息 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.1 Connectivity Manager簡介 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-Fi Direct傳輸數據 615
16.4.1 初始化Wi-Fi Direct框架 615
16.4.2 啟用Wi-Fi Direct並監視其
狀態 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.3 Android Beam簡介 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 使用Intent Receiver監視傳入的
電話呼叫 639
17.3 SMS和MMS簡介 640
17.3.1 在應用程式中使用SMS和
MMS 640
17.3.2 使用Intent從應用程式中
傳送SMS和MMS 640
17.3.3 使用SMS Manager傳送
SMS訊息 641
17.3.4 監聽傳入的SMS訊息 644
17.3.5 緊急回響程式SMS示例 646
17.3.6 自動緊急回響程式 654
17.4 SIP和VOIP簡介 662
第18章 Android高級開發 663
18.1 Android的安全性 664
18.1.1 Linux核心安全 664
18.1.2 許可權簡介 664
18.2 Cloud to Device Messaging簡介 666
18.2.1 C2DM的局限性 667
18.2.2 註冊使用C2DM 667
18.2.3 在C2DM伺服器上註冊
設備 667
18.2.4 向設備傳送C2DM訊息 670
18.2.5 接收C2DM訊息 672
18.3 使用License Verification Library
實現著作權保護 673
18.3.1 安裝License Verification
Library 673
18.3.2 獲得License Verification
公鑰 673
18.3.3 配置License Validation
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 使用Wake Lock 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.1 Google Play簡介 693
19.2.2 開始使用Google Play 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 在Google Play上推廣 700
19.4.3 國際化 700
19.5 分析數據和跟蹤推薦人 701
19.5.1 使用移動應用程式的Google
Analytics 702
19.5.2 使用Google Analytics追蹤
推薦 703

相關詞條

相關搜尋

熱門詞條

聯絡我們