發表於2024-12-28
本書內容來自於Android社區數十位一綫優秀開發者,涵蓋Android應用程序開發的方方麵麵,從GUI、圖形圖像、多媒體、數據持久化到各種通信方式、常用傳感器等等內容無所不包,甚至還囊括瞭應用程序測試、國際化和麵嚮非Java程序員的編程方式等內容,以及自然應用程序開發環境的搭建和程序的發布。無論你打算使用什麼IDE,準備開發什麼樣的項目,都能從本書中找到適閤自己的內容。每一節都是先提齣問題,即本節內容所麵嚮的程序應用背景,然後提齣總體解決思路,最後再按步實施、解決問題,便於你參考解決實際開發問題。
本書對Android程序員在日常開發中容易混淆、迷茫、犯錯、走彎路的種種問題做瞭深入解析,並給齣瞭230多個經過測試的實用技巧,既能成為Android開發新手的入門指南,又能作為有經驗開發者的案頭工具書。
Ian F. Darwin在計算機行業已經工作瞭30多年。他編寫瞭用於Linux和BSD的免費文件命令,是《Checking C Programs with Lint》《Java Cookbook》等書的作者並撰寫瞭100多篇有關C、UNIX、Java及Android的文章和教程。除瞭編程和顧問工作之外,Ian還為世界性的技術培訓公司——Learning Tree International服務,講授UNIX、Java和Android技術。
目錄
前言 1
第1章 入門 9
1.1 理解Android應用程序體係結構 9
1.2 理解Android Activity的生命周期 11
1.3 瞭解Android發行版本 13
1.4 學習Java語言 15
1.5 從命令行創建“Hello World”應用程序 16
1.6 用Apache Maven創建“Hello World”應用程序 20
1.7 為Android開發選擇集成開發環境(IDE) 22
1.8 安裝Android Studio 26
1.9 安裝Platform Editions並保持SDK更新 28
1.10 用Android Studio創建“Hello World”應用程序 31
1.11 將Eclipse ADT項目轉換成Android Studio項目 37
1.12 從Eclipse嚮Android Studio轉換時保留曆史記錄 40
1.13 用Eclipse和Android Studio共同構建Android應用程序 42
1.14 安裝帶有AndMore的Eclipse(代替ADT) 44
1.15 用Eclipse創建“Hello World”應用程序 51
1.16 在Eclipse中安裝Eclipse Marketplace Client 56
1.17 將項目從Eclipse ADT升級到Eclipse AndMore 59
1.18 用命令行ADB控製模擬器/設備 62
1.19 共享其他Eclipse項目中的Java類 64
1.20 引用庫實現外圍功能 66
1.21 通過兼容庫在老設備上使用新功能 70
1.22 應用SDK示例幫助避免讓人頭疼的問題 72
1.23 從模擬器/Android設備上截圖/截取視頻 73
1.24 程序:一個簡單的定時器示例 78
1.25 程序:Tipster, Android操作係統上的小費計算器 82
第2章 設計成功的應用程序 98
2.1 異常處理 101
2.2 運行時請求Android訪問權限 104
2.3 以“單例”模式訪問Android的Application對象 106
2.4 在用戶鏇轉設備時保持數據 109
2.5 監控Android設備上的電池電量 111
2.6 在Android中創建閃屏 112
2.7 設計麵嚮會議/野營/黑客馬拉鬆/公共機構的應用程序 116
2.8 在Android應用程序中使用Google的分析工具 118
2.9 進行首次運行的偏好設置 120
2.10 格式化數字 122
2.11 用正確的復數形式進行格式化 126
2.12 格式化時間和日期進行顯示 128
2.13 用Java 8的java.time API簡化日期/時間計算 131
2.14 用鍵盤監聽器控製輸入 133
2.15 備份Android應用程序數據 136
2.16 用提示(Hint)代替工具小貼士 142
第3章 應用程序測試 144
3.1 針對測試設置Android虛擬設備 145
3.2 在大量設備上進行雲測試 151
3.3 用Eclipse和JUnit進行測試 152
3.4 用Android Studio和JUnit進行測試 154
3.5 用Robolectric和JUnit 4進行測試 159
3.6 用ATSL、Espresso和JUnit 4進行測試 161
3.7 排查應用程序崩潰原因 165
3.8 用Log.d( )和LogCat進行調試 168
3.9 用Crash Reporting自動獲取崩潰報告 169
3.10 針對現場錯誤或情況使用本地運行時應用程序日誌 172
3.11 為測試重現Activity生命周期場景 176
3.12 利用嚴苛模式讓應用程序保持簡潔 180
3.13 用Android Lint進行靜態代碼測試 181
3.14 用Monkey程序進行動態測試 183
3.15 在AVD之間發送文本消息和通話 185
第4章 進程間/進程內通信 187
4.1 用Intent打開網頁、電話號碼本或其他應用程序 187
4.2 從視圖中用電子郵件發送文本 189
4.3 發送帶有附件的電子郵件 192
4.4 用Intent.putExtra( )發送字符串值 194
4.5 從子Activity嚮主Activity發迴數據 195
4.6 當其他應用程序在屏幕上顯示的同時讓後颱服務保持運行 198
4.7 發送/接收廣播消息 200
4.8 在設備重啓後啓動服務 201
4.9 使用綫程創建高可響應的應用程序 202
4.10 使用AsyncTask進行後颱處理 203
4.11 利用Activity的綫程隊列和Handler在綫程間發送消息 210
4.12 結閤Android和HTML/JavaScript創建一個萬年曆應用程序 211
第5章 圖形 218
5.1 使用自定義字體 218
5.2 用OpenGL ES繪製鏇轉正方體 221
5.3 為OpenGL鏇轉正方體添加控製 224
5.4 手繪光滑麯綫 227
5.5 用Intent拍照 232
5.6 用android.media.Camera照相 234
5.7 用Google的條形碼掃描器ZXing掃描條形碼和二維碼 238
5.8 用AndroidPlot顯示圖錶和圖形 240
5.9 使用Inkscape藉助OpenClipArt.org創建Android啓動器圖標 244
5.10 使用Paint.NET藉助OpenClipArt.org創建Android啓動器圖標 248
5.11 使用九宮格文件 254
5.12 使用Android RGraph創建HTML5圖錶 258
5.13 添加一個簡單的光柵動畫 262
5.14 用拇指和食指進行縮放 265
第6章 圖形用戶界麵 268
6.1 理解和遵循用戶界麵準則 269
6.2 用原質化設計賦予應用程序良好外觀 270
6.3 選擇布局管理器(ViewGroup)排列組件 274
6.4 通過解耦視圖與模型處理配置變化 275
6.5 處理動作欄 277
6.6 嚮動作欄添加共享動作 281
6.7 用Fragment API構建現代UI 285
6.8 創建按鈕及其單擊事件監聽器 289
6.9 用圖像按鈕增強UI設計 290
6.10 使用FloatingActionButton 291
6.11 以多種不同方式編寫事件監聽器 294
6.12 使用復選框和單選按鈕 298
6.13 使用卡片窗口部件 302
6.14 通過Spinner類提供下拉選擇器 304
6.15 處理長按/長點事件 307
6.16 用TextView和EditText顯示文本域 308
6.17 用屬性和TextWatcher接口限製EditText的值 309
6.18 實現AutoCompleteTextView 311
6.19 使用SQLite數據庫查詢填充AutoCompleteTextView 313
6.20 將文本域轉換為密碼域 315
6.21 將軟鍵盤上的迴車鍵改為“下一個” 315
6.22 在Activity中處理鍵盤按鍵事件 318
6.23 讓他們看星星:使用RatingBar 319
6.24 讓視圖晃動 323
6.25 提供觸覺反饋 325
6.26 在TabView中的各個Activity之間切換 328
6.27 創建在兩個Activity之間顯示的載入界麵 329
6.28 為布局添加帶有圓角的邊框 331
6.29 在Android中檢測手勢 333
6.30 創建一個簡單的應用程序窗口小部件 340
第7章 GUI中的警告:菜單、對話框、Toast、
Snackbar和通知 344
7.1 用Toast和Snackbar嚮用戶發齣警告 344
7.2 自定義Toast的外觀 346
7.3 創建和顯示菜單 348
7.4 處理菜單項的選擇 349
7.5 創建子菜單 350
7.6 創建彈齣式/警告對話框 352
7.7 創建時間選擇器窗口部件 353
7.8 針對選擇創建iPhone風格的滾輪選擇器 356
7.9 創建選項卡式對話框 358
7.10 創建進度對話框 361
7.11 創建帶有按鈕、圖像和文本的自定義對話框 362
7.12 創建可重用的“關於對話框”類 364
7.13 在狀態欄中創建通知 368
第8章 其他GUI組件:列錶和視圖 373
8.1 用RecyclerView構建基於列錶的應用程序 373
8.2 用ListView構建基於列錶的應用程序 376
8.3 為ListView創建“無數據”視圖 381
8.4 創建帶有圖像和文本的高級ListView 382
8.5 在ListView中使用分組標題 386
8.6 讓ListView始終處於用戶的關注點上 390
8.7 編寫自定義列錶適配器 391
8.8 利用SearchView在ListView中查找數據 394
8.9 處理方嚮變化:從ListView數據值到全局模式中的圖錶繪製 396
第9章 多媒體 402
9.1 播放YouTube視頻 402
9.2 利用MediaRecorder錄製視頻 403
9.3 使用Android的人臉檢測功能 406
9.4 播放音頻文件 409
9.5 在沒有交互的情況下播放音頻 411
9.6 使用語音文本轉換 412
9.7 利用文本語音轉換讓設備發聲 414
第10章 數據持久化 416
10.1 讀寫內存儲器和外存儲器中的文件 416
10.2 獲取文件和文件夾信息 421
10.3 讀取應用程序自帶而非文件係統中的文件 426
10.4 獲取SD卡的存儲空間信息 427
10.5 提供偏好設置Activity 428
10.6 檢查共享偏好設置的一緻性 433
10.7 在Android應用程序中使用SQLite數據庫 435
10.8 在SQLite數據庫上執行高級文本檢索 438
10.9 處理SQLite中的日期 443
10.10 將非SQL數據對外暴露為SQL遊標 445
10.11 用CursorLoader顯示數據 448
10.12 利用JSONObject解析JSON 451
10.13 利用DOM API解析XML文檔 453
10.14 利用ContentProvider存儲和獲取數據 455
10.15 編寫一個ContentProvider 456
10.16 通過聯係人內容提供器添加聯係人 460
10.17 利用ContentProvider讀取聯係人數據 462
10.18 實現拖放 464
10.19 通過FileProvider共享文件 468
10.20 利用SyncAdapter把SQLite中的數據備份到雲端 473
10.21 利用Google Firebase將數據存放到雲端 482
第11章 電話應用程序 487
11.1 來電處理 487
11.2 處理去電呼叫 490
11.3 撥打電話 494
11.4 發送單段式或多段式短信 495
11.5 接收短信 498
11.6 利用模擬器控製颱嚮模擬器發送短信 499
11.7 利用Android的TelephonyManager獲取設備信息 500
第12章 網絡應用程序 511
12.1 藉助URLConnection利用RESTful Web服務 512
12.2 藉助Volley利用RESTful Web服務 515
12.3 利用Google Cloud Messaging的“推送消息”嚮應用程序發齣
通知消息 517
12.4 利用正則錶達式從非結構化文本中提取信息 525
12.5 利用ROME解析RSS/Atom訂閱內容 526
12.6 利用MD5加密純文本 531
12.7 將文本轉換為超鏈接 531
12.8 利用WebView訪問網頁 532
12.9 自定義WebView 533
12.10 編寫進程間通信服務 534
第13章 遊戲和動畫 539
13.1 利用flixel-gdx製作Android遊戲 540
13.2 利用AndEngine製作Android遊戲 544
13.3 處理與時間相關的鍵盤輸入 549
第14章 社交網絡 551
14.1 利用OAUTH2對用戶進行身份認證 551
14.2 利用HTTP集成社交網絡 555
14.3 利用HTML或JSON加載用戶的Twitter時間綫 557
第15章 定位和地圖應用程序 559
15.1 獲取位置信息 559
15.2 在應用程序內獲取GPS信息 561
15.3 在設備上模擬GPS坐標 563
15.4 使用地理編碼和逆嚮地理編碼 565
15.5 為使用Google Maps API V2進行開發做好準備 566
15.6 使用Google Maps API V2 571
15.7 利用OpenStreetMap顯示地圖數據 576
15.8 利用OpenStreetMap地圖創建覆蓋圖層 578
15.9 在OpenStreetMap地圖上使用比例尺 581
15.10 在OpenStreetMap覆蓋圖層上處理觸摸事件 582
15.11 利用OpenStreetMap獲取定位更新 584
第16章 加速計 588
16.1 檢查傳感器是否存在 588
16.2 利用加速計檢測晃動 589
16.3 檢測設備正麵朝上還是朝下 593
16.4 讀取溫度傳感器 594
第17章 藍牙 595
17.1 啓用藍牙並讓設備可被發現 595
17.2 連接啓用瞭藍牙的設備 597
17.3 接受來自藍牙設備的連接 599
17.4 實現發現藍牙設備的功能 600
第18章 係統和設備控製 602
18.1 獲取手機的網絡/連接信息 602
18.2 從應用程序清單文件中獲取信息 603
18.3 將來電通知改為靜音、振動或普通鈴聲 604
18.4 復製文本並從剪切闆中獲取文本 606
18.5 使用基於LED的通知 606
18.6 讓設備振動 607
18.7 確定指定的應用程序是否正在運行 608
第19章 世上並非隻有Java:其他編程語言和框架 609
19.1 瞭解跨平颱解決方案 610
19.2 在應用程序中執行Shell命令 611
19.3 利用JNI在NDK上運行原生C/C++代碼 613
19.4 Android腳本編程層SL4A入門 618
19.5 在SL4A中創建警告消息 620
19.6 利用SL4A獲取Google文檔並在ListView中顯示 624
19.7 在二維碼中共享SL4A腳本 626
19.8 通過JavaScript在WebView中使用原生的手機功能 628
19.9 利用Xamarin構建跨平颱應用程序 630
19.10 利用PhoneGap/Cordova構建跨平颱應用程序 634
第20章 世上並非隻有英語:字符串和國際化 639
20.1 國際化應用程序中的文本 640
20.2 查找和翻譯字符串 643
20.3 處理strings.xml中的細微差彆 644
第21章 打包、部署及發布/齣售應用程序 650
21.1 創建簽名證書並用其對應用程序簽名 650
21.2 通過Google Play應用商店發布應用程序 653
21.3 通過其他應用商店發布應用程序 655
21.4 利用AdMob讓你的應用程序賺錢 656
21.5 利用ProGuard進行混淆和優化 662
21.6 讓應用程序駐留 Android應用開發實戰(原書第2版) [Android Cookbook: Problems and Solutions for Andro] 下載 mobi epub pdf txt 電子書 格式
Android應用開發實戰(原書第2版) [Android Cookbook: Problems and Solutions for Andro] 下載 mobi pdf epub txt 電子書 格式 2024
Android應用開發實戰(原書第2版) [Android Cookbook: Problems and Solutions for Andro] 下載 mobi epub pdf 電子書Android應用開發實戰(原書第2版) [Android Cookbook: Problems and Solutions for Andro] mobi epub pdf txt 電子書 格式下載 2024