|
-- 會員 / 註冊 --
|
|
|
|
Android開發權威指南(第二版) ( 簡體 字) |
作者:李寧 | 類別:1. -> 程式設計 -> 手機程式 -> Android |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 36506 詢問書籍請說出此書號!【缺書】 【不接受訂購】 |
出版日:9/1/2013 |
頁數:739 |
光碟數:1 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
【不接受訂購】 | ISBN:9787115320339 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 《Android開發權威指南(第二版)》是暢銷書《Android開發權威指南》的升級版,內容更新超過80%,是一本全面介紹Android應用開發的專著,擁有45章精彩內容供讀者學習。 《Android開發權威指南(第二版)》全面介紹了Android應用開發的各種技術,主要內容包括Android的四大應用程序組件(Activity、Service、Content Provider和Broadcast Receiver)、布局、菜單、控件、資源和本地化、可視化UI設計、對話框、Toast和通知欄(Notification)、Fragment、ActionBar、拖放技術、數據存儲技術、Android支持的各種組件技術、通信技術(藍牙、NFC、網絡等)、異步裝載、推送技術、多媒體、2D繪圖技術、OpenGL ES、桌面小部件、動態壁紙、短信和彩信、傳感器、GPS、谷歌地圖、人機交互、輸入法開發、Android NDK開發、測試驅動開發、性能優化等。 《Android開發權威指南(第二版)》并不局限于介紹Android的各種理論知識,而是從“實戰”的角度介紹開發技術。《Android開發權威指南(第二版)》的所有示例都是精心設計的,足以使讀者對當前講解的理論知識駕輕就熟。這些示例中的很多例子都源于真實的項目,讀者可以對這些示例的源程序稍加改動就可用于自己的項目中。《Android開發權威指南(第二版)》除了為每一個知識點提供完整的示例外,最后還提供了兩個完整的項目:笑臉連連看和NFC俠。這兩個項目極具參考價值,尤其是NFC俠,是筆者維護的一個開源項目,用于在不支持NFC的手機或Android模擬器上開發和測試NFC應用。讀者可以關注我的Blog(http://blog.csdn.net/nokiaguy)來獲得NFC俠以及本書的最新信息。 《Android開發權威指南(第二版)》適合有一定Java基礎的讀者閱讀,如果讀者已經掌握了Java的基本語法,那么《Android開發權威指南(第二版)》將會成為您的首選和枕邊書,您將從書中獲得更多有價值的Android開發技術。 |
目錄:第1章 初識Android平臺 1 1.1 Android簡介 1 1.2 Android的制勝法寶 2 1.3 Android的版本發展歷程 3 1.3.1 Android 1.5(紙杯蛋糕) 3 1.3.2 Android 1.6(甜甜圈) 4 1.3.3 Android 2.1(松餅) 4 1.3.4 Android 2.2(凍酸奶) 5 1.3.5 Android 2.3(姜餅) 5 1.3.6 Android 3.0(蜂巢) 6 1.3.7 Android 4.0(冰激凌三明治) 6 1.3.8 Android 4.1/4.2(果凍豆) 7 1.4 Android的系統架構 8 1.5 小結 9
第2章 搭建Android開發和測試環境 10 2.1 搭建Android開發環境需要些什么 10 2.2 安裝Java開發環境 10 2.2.1 安裝JDK 11 2.2.2 安裝和配置Eclipse 11 2.3 安裝Android開發環境 12 2.3.1 下載和安裝Android SDK 13 2.3.2 下載和安裝Android NDK 13 2.3.3 安裝和配置Eclipse插件:ADT 14 2.4 配置Android測試環境 15 2.4.1 建立Android虛擬設備(AVD) 15 2.4.2 啟動Android模擬器 16 2.4.3 安裝真機測試環境 17 2.5 小結 18
第3章 第一個Android應用程序 19 3.1 從第一個Android程序中可以學到什么 19 3.2 建立Android工程 19 3.3 Android工程的結構 21 3.4 在窗口上放兩個按鈕 22 3.5 編寫窗口類 23 3.6 修改字符串資源 24 3.7 運行Android應用程序 25 3.8 調試Android應用程序 27 3.9 簽名Android應用程序 27 3.10 小結 29
第4章 Android應用程序架構 30 4.1 Android應用程序中的資源 30 4.1.1 資源存放在哪里 30 4.1.2 資源的基本使用方法 30 4.2 Android的應用程序組件 32 4.2.1 窗口(Activity)組件 32 4.2.2 服務(Service)組件 32 4.2.3 廣播接收者(Broadcast receivers)組件 33 4.2.4 內容提供者(Content Provider)組件 33 4.3 AndroidManifest.xml文件的結構 33 4.4 小結 34
第5章 窗口(Activity)與視圖(View) 35 5.1 聲明和使用Activity 35 5.1.1 Activity的基本用法 35 5.1.2 同時適合手機和平板電腦的窗口風格 38 5.2 Activity的生命周期 40 5.3 窗口的常用事件 43 5.3.1 設置窗口標題事件(onTitleChanged) 44 5.3.2 鍵盤按下和抬起事件(onKeyDown和onKeyUp) 45 5.3.3 任意情況下捕捉鍵盤事件(dispatchKeyEvent) 48 5.3.4 回退事件(onBackPressed) 49 5.3.5 按鍵長按事件(onKeyLongPress) 50 5.3.6 屏幕觸摸事件(onTouchEvent) 50 5.3.7 窗口獲得焦點事件(onWindowFocusChanged) 51 5.4 在不同Activity之間傳遞數據 52 5.4.1 使用Intent傳遞數據 53 5.4.2 使用靜態變量傳遞數據 54 5.4.3 使用剪貼板傳遞數據 55 5.4.4 使用全局對象傳遞數據 57 5.5 從Activity返回數據 59 5.6 視圖(View) 61 5.6.1 視圖簡介 61 5.6.2 使用XML布局文件定義視圖 61 5.6.3 在代碼中控制視圖 62 5.7 顯示系統窗口 64 5.7.1 直接撥號 65 5.7.2 將電話號傳入撥號程序 65 5.7.3 調用撥號程序 65 5.7.4 瀏覽網頁 65 5.7.5 查看聯系人 66 5.7.6 顯示系統設置界面(設置主界面、Wi-Fi設置界面) 66 5.7.7 啟動處理音頻的程序 66 5.7.8 回到Home窗口(相當于按Home鍵) 66 5.8 與Activity相關的技巧與特效 67 5.8.1 全屏顯示(隱藏標題欄和狀態欄) 67 5.8.2 定制窗口標題欄 71 5.8.3 為程序添加Splash 75 5.8.4 改變窗口大小、位置和透明度 76 5.8.5 按兩次關閉窗口 79 5.8.6 關閉所有的窗口 79 5.8.7 窗口截屏 80 5.9 小結 82
第6章 Intent與Intent Filter 83 6.1 Android系統的信使:Intent 83 6.2 Intent對象 84 6.2.1 Intent對象可以封裝和傳遞哪些信息 84 6.2.2 組件名(Component name) 84 6.2.3 動作(Action) 85 6.2.4 種類(Category) 86 6.2.5 數據(Data) 87 6.2.6 附加數據(Extra) 88 6.2.7 標志(Flags) 89 6.3 顯式和隱式訪問窗口 89 6.4 跨應用程序訪問窗口 90 6.5 Android系統的過濾機制大揭秘 96 6.5.1 過濾條件的設置 96 6.5.2 過濾器的篩選規則 97 6.5.3 示例:過濾機制應用演示 101 6.6 Android源代碼與過濾器 104 6.6.1 系統內置程序有哪些窗口可以利用 104 6.6.2 顯示計算器(Calculator) 105 6.6.3 用瀏覽器(Browser)顯示網頁 106 6.6.4 撥打電話(Phone)與授權 108 6.7 獲取第三方程序中可調用的窗口 109 6.8 傳遞附加數據(Extra) 111 6.9 解析數據 113 6.10 小結 114
第7章 窗口(Activity)高級技術 115 7.1 Activity XML屬性詳解 115 7.1.1 設置Activity的基本信息 115 7.1.2 屏幕方向切換(android:screenOrientation) 117 7.1.3 阻止Activity銷毀和重建(android:configChanges) 119 7.1.4 允許Activity被實例化(android:enabled) 123 7.1.5 在最近應用列表中顯示(android:excludeFromRecents) 124 7.1.6 允許其他程序訪問當前窗口(android:exported) 124 7.1.7 硬件加速(android:hardwareAccelerated) 125 7.1.8 在多進程中創建窗口實例(android:multiprocess) 125 7.1.9 無法返回的Activity(android:noHistory) 125 7.1.10 指定要返回的窗口(android:parentActivityName) 126 7.1.11 使窗口受到權限的保護(android:permission) 126 7.1.12 改變窗口所在的進程(android:process) 127 7.1.13 不保存窗口的狀態(android:stateNotNeeded) 129 7.1.14 窗口的主題(android:theme) 129 7.1.15 擴展窗口UI(android:uiOptions) 129 7.1.16 設置輸入法顯示模式(android:windowSoftInputMode) 130 7.2 深入探索Activity從創建到銷毀的過程 130 7.2.1 任務(Task)與回退棧(Back Stack) 131 7.2.2 保存窗口(Activity)狀態 133 7.2.3 管理任務和回退棧 134 7.2.4 Activity的4種創建模式 135 7.2.5 用Java代碼設置窗口創建模式 141 7.2.6 窗口的乾坤大挪移(affinity) 144 7.2.7 銷毀不再使用的窗口 147 7.3 Activity的別名 149 7.4 小結 151
第8章 布局 152 8.1 Android的五大布局 152 8.1.1 框架布局(FrameLayout) 152 8.1.2 線性布局(LinearLayout) 154 8.1.3 相對布局(RelativeLayout) 158 8.1.4 表格布局(TableLayout) 159 8.1.5 絕對布局(AbsoluteLayout) 160 8.2 屬性資源與Android命名空間 160 8.3 布局屬性 162 8.4 布局高級技術 163 8.4.1 布局別名 163 8.4.2 重用布局 164 8.4.3 優化布局 166 8.4.4 動態裝載布局 167 8.4.5 動態設置布局屬性 169 8.4.6 從右到左布局(RTL Layout) 169 8.5 小結 170
第9章 菜單 171 9.1 菜單的基本用法 171 9.1.1 創建選項菜單(Options Menu) 171 9.1.2 關聯Activity 173 9.1.3 響應菜單的單擊動作 173 9.1.4 動態添加、修改和刪除選項菜單 174 9.1.5 帶復選框和選項按鈕的子菜單 175 9.1.6 上下文菜單 176 9.1.7 菜單事件 177 9.1.8 從菜單資源中裝載菜單 177 9.2 菜單特效 177 9.2.1 自定義菜單 178 9.2.2 模擬UCWeb菜單效果 180 9.3 小結 184
第10章 Android的資源詳解(一) 185 10.1 創建資源 185 10.1.1 手工創建資源文件 185 10.1.2 用ADT模板創建本地化圖標資源 186 10.1.3 用ADT模板創建XML文件資源 188 10.2 使用資源 188 10.2.1 生成資源類文件(R.java) 188 10.2.2 從XML文件中訪問資源 190 10.2.3 使用Java代碼訪問資源 191 10.2.4 Java反射技術與枚舉資源 192 10.3 字符串(String)資源 193 10.3.1 普通字符串 193 10.3.2 字符串數組 194 10.3.3 復數字符串 194 10.3.4 在字符串中使用引號 195 10.3.5 用占位符格式化字符串 195 10.3.6 用HTML標簽格式化字符串資源 195 10.4 值(values)資源 196 10.4.1 整數(Integer)資源 196 10.4.2 尺寸(Dimension)資源 197 10.4.3 布爾(Boolean)資源 198 10.4.4 顏色(Color)資源 198 10.4.5 ID資源 199 10.4.6 整數數組(Integer-Array)資源 200 10.4.7 類型數組(Typed-Array)資源 200 10.5 菜單(menu)資源 200 10.6 圖像(drawable)資源 203 10.6.1 普通圖像資源 203 10.6.2 XML圖像資源 204 10.6.3 Nine-Patch圖像資源 204 10.6.4 XML Nine-Patch圖像資源 205 10.6.5 圖層(Layer)資源 205 10.6.6 圖像狀態(State)資源 206 10.6.7 圖像級別(Level)資源 207 10.6.8 淡入淡出(Cross-fade)資源 208 10.6.9 嵌入(Inset)圖像資源 210 10.6.10 剪切(Clip)圖像資源 210 10.6.11 外形(Shape)資源 211 10.7 小結 212
第11章 Android的資源詳解(二) 213 11.1 動畫資源 213 11.1.1 屬性(Property)動畫 213 11.1.2 幀(Frame)動畫 215 11.1.3 移動補間(TranslateTween)動畫 217 11.1.4 循環向右移動的EditText與上下彈跳的球 218 11.1.5 縮放補間(Scale Tween)動畫 220 11.1.6 跳動的心 221 11.1.7 旋轉補間(Rotate Tween)動畫 222 11.1.8 旋轉的星系 222 11.1.9 透明度補間(Alpha Tween)動畫 223 11.1.10 投擲炸彈 224 11.1.11 震動渲染器(Shake Interpolator) 226 11.1.12 自定義渲染器(Interpolator) 227 11.2 風格(Style)資源與主題(Theme) 229 11.3 小結 232
第12章 資源的本地化 233 12.1 建立本地化的資源目錄 233 12.2 資源目錄的命名規則 237 12.3 建立別名資源 237 12.3.1 圖像別名資源 237 12.3.2 布局別名資源 238 12.3.3 字符串別名資源 238 12.3.4 其他簡單值別名資源 238 12.4 資源目錄的優先級 238 12.5 屏幕適配 239 12.5.1 屏幕適配要考慮的因素 239 12.5.2 適配不同屏幕可以采用的規則 241 12.5.3 屏幕尺寸和屏幕密度 241 12.5.4 位置、尺寸和字體應使用屏幕密度單位 244 12.5.5 與屏幕適配有關的標識符 244 12.5.6 影響屏幕適配的重要因素:布局和圖像 245 12.5.7 典型的屏幕適配案例 246 12.5.8 在Google Play上限制屏幕尺寸和屏幕密度 247 12.5.9 在Android模擬器上測試各種屏幕尺寸和密度 248 12.6 小結 248
第13章 Android的控件詳解(一) 249 13.1 顯示文本的控件(TextView) 249 13.1.1 顯示富文本(URL、不同大小、字體、顏色的文本) 250 13.1.2 用img標簽在TextView控件上顯示圖像 252 13.1.3 單擊鏈接彈出Activity 254 13.1.4 為指定文本添加背景 256 13.2 編輯文本的控件(EditText) 258 13.2.1 像QQ一樣輸入表情圖像 259 13.2.2 在EditText中輸入特定的字符 260 13.2.3 AutoCompleteTextView(自動完成輸入內容的控件) 261 13.3 按鈕(Button)和復選框(Checkbox)控件 263 13.3.1 Button(普通按鈕控件) 263 13.3.2 圖文混排的按鈕 265 13.3.3 ImageButton(圖像按鈕控件) 266 13.3.4 RadioButton(選項按鈕控件) 267 13.3.5 ToggleButton(開關狀態按鈕控件) 267 13.3.6 CheckBox(復選框控件) 268 13.4 圖像控件(ImageView) 270 13.4.1 ImageView控件的基本用法 270 13.4.2 顯示指定區域的圖像 270 13.4.3 縮放和旋轉圖像 272 13.5 時間與日期控件 273 13.5.1 DatePicker(輸入日期的控件) 273 13.5.2 TimePicker(輸入時間的控件) 274 13.5.3 DatePicker、TimePicker與TextView同步顯示日期和時間 274 13.5.4 AnalogClock和DigitalClock(顯示時鐘的控件) 275 13.6 小結 275
第14章 Android的控件詳解(二) 276 14.1 進度條控件 276 14.1.1 ProgressBar(進度條控件) 276 14.1.2 SeekBar(拖動條控件) 278 14.1.3 設置ProgressBar和SeekBar的顏色及背景圖 278 14.1.4 RatingBar(評分控件) 281 14.2 列表控件 282 14.2.1 ListView(普通列表控件) 282 14.2.2 為ListView列表項添加復選框和選項按鈕 285 14.2.3 對列表項進行增、刪、改操作 286 14.2.4 改變列表項的背景色 290 14.2.5 ListActivity(封裝ListView的Activity) 290 14.2.6 ExpandableListView(可擴展的列表控件) 291 14.2.7 Spinner(下拉列表控件) 293 14.3 GridView(網格控件) 296 14.4 TabHost(標簽控件) 298 14.5 ViewStub(惰性裝載控件) 299 14.6 小結 300
第15章 可視化UI設計 301 15.1 拖放控件 301 15.2 設置視圖屬性 303 15.3 預覽各種屏幕尺寸 303 15.4 語言和地區的本地化測試 304 15.5 其他可視化功能 304 15.6 小結 305
第16章 對話框、Toast與通知欄(Notification) 306 16.1 對話框 306 16.1.1 帶2個按鈕(確認/取消)的對話框 306 16.1.2 帶3個按鈕(覆蓋/忽略/取消)的對話框 307 16.1.3 簡單列表對話框 308 16.1.4 單選列表對話框 309 16.1.5 多選列表對話框 311 16.1.6 進度對話框 312 16.1.7 登錄對話框 315 16.1.8 使用Activity托管對話框 316 16.2 Toast 318 16.3 通知(Notification) 319 16.3.1 在狀態欄上顯示通知信息 319 16.3.2 永久存在的Notification 322 16.3.3 自定義Notification 323 16.4 小結 324
第17章 封裝UI和代碼利器——Fragment 325 17.1 Fragment簡介 325 17.2 什么時候使用Fragment 326 17.3 按照Fragment設計原則編寫程序 328 17.4 Fragment的生命周期 332 17.5 創建Fragment 341 17.5.1 通過XML布局文件創建Fragment 341 17.5.2 通過Java代碼創建Fragment 342 17.5.3 創建無UI的Fragment 344 17.5.4 在低版本Android中使用Fragment(Support Library) 345 17.6 Activity與Fragment之間的交互 346 17.6.1 Fragment與Activity之間的交互 346 17.6.2 Fragment的回調機制 348 17.7 Fragment狀態的持久化 351 17.8 Fragment與回退棧(導航) 355 17.9 FragmentManager與FragmentTransaction 357 17.9.1 管理Fragment事務 357 17.9.2 查找Fragment 357 17.9.3 跟蹤回退棧狀態 358 17.9.4 恢復歷史狀態 358 17.9.5 管理Fragment的狀態 359 17.9.6 添加、刪除和替換Fragment 359 17.9.7 分離(Detach)與附加(Attach)Fragment 360 17.9.8 顯示和隱藏Fragment 361 17.10 Fragment擴展 361 17.10.1 ListFragment 361 17.10.2 DialogFragment 363 17.10.3 其他Fragment擴展類 366 17.11 Fragment模板源代碼分析 366 17.12 小結 368
第18章 動作欄——ActionBar 369 18.1 ActionBar簡介 369 18.2 ActionBar基礎 370 18.2.1 隱藏/顯示ActionBar 370 18.2.2 添加和響應Action按鈕 372 18.3可上下兩分的ActionBar 374 18.4 應用程序圖標導航 376 18.5 收縮和展開Action View 377 18.6 ActionProvider 380 18.6.1 分享信息(ShareActionProvider) 380 18.6.2 定制ActionProvider 382 18.7 導航標簽 384 18.8 下拉導航列表 388 18.9 小結 390
第19章 Android的拖放技術 391 19.1 Android中的拖放操作 391 19.2 拖放狀態與拖放處理 391 19.3 拖動陰影 392 19.4 示例:拖動復制圖像 393 19.5 小結 395
第20章 數據存儲解決方案 396 20.1 讀寫key-value對:SharedPreferences 396 20.2 文件流操作 397 20.2.1 openFileOutput和openFileInput方法 398 20.2.2 讀寫SD卡中的文件 399 20.3 讀寫JSON格式的數據 400 20.4 SQLite數據庫 404 20.4.1 SQLite數據庫管理工具 404 20.4.2 SQLiteOpenHelper類與自動升級數據庫 405 20.4.3 數據綁定與SimpleCursorAdapter類 406 20.4.4 操作SD卡上的數據庫 409 20.4.5 將數據庫與應用程序一起發布 410 20.4.6 內存數據庫 411 20.5 小結 412
第21章 內容提供者(Content Provider) 413 21.1 Content Provider的作用 413 21.2 獲得系統數據 413 21.2.1 讀取聯系人信息 414 21.2.2 查看收件箱的短信 415 21.3 自定義Content Provider 417 21.3.1 查詢城市信息 417 21.3.2 為Content Provider添加訪問權限 422 21.4 如何查找系統提供的Content Provider 423 21.5 小結 425
第22章 廣播接收器(Broadcast Receiver) 426 22.1 什么是廣播 426 22.2 接收系統廣播 427 22.2.1 短信攔截 427 22.2.2 用代碼注冊廣播接收器 429 22.2.3 廣播接收器的優先級 429 22.2.4 來去電攔截 430 22.2.5 截獲屏幕休眠與喚醒 432 22.2.6 開機自動運行 433 22.2.7 顯示手機電池的當前電量 434 22.3 發送廣播 434 22.4 小結 435
第23章 服務(Service) 436 23.1 Service基礎 436 23.1.1 Service的生命周期 436 23.1.2 開機啟動Service 438 23.2 跨進程訪問(AIDL服務) 439 23.2.1 什么是AIDL服務 439 23.2.2 建立AIDL服務的步驟 439 23.2.3 創建和調用AIDL服務 440 23.2.4 傳遞復雜數據的AIDL服務 442 23.2.5 AIDL與來去電自動掛斷 445 23.3 小結 447
第24章 Android的組件開發 448 24.1 Android支持哪些組件開發方式 448 24.2 引用jar文件 449 24.3 跨工程引用 450 24.4 引用NDK Library 451 24.5 動態引用APK文件 451 24.6 動靜結合的組件 453 24.7 腳本類型組件(JavaScript)與WebView控件 453 24.8 如何確定動態組件是否安裝 457 24.9 升級動態組件 459 24.10 小結 461
第25章 Android的藍牙開發技術 462 25.1 藍牙簡介 462 25.2 打開和關閉藍牙設備 462 25.3 搜索藍牙設備 463 25.4 藍牙數據傳輸 465 25.5 藍牙通信一定需要UUID嗎 467 25.6 小結 467
第26章 近距離天線通信——NFC技術 468 26.1 NFC簡介 468 26.2 NFC、藍牙和紅外之間的差異 469 26.3 NFC技術的未來前景 470 26.4 Android中的NFC技術 471 26.4.1 NDEF與非NDEF數據 471 26.4.2 NFC的三重過濾機制 471 26.4.3 開啟Android的NFC功能 472 26.4.4 編寫NFC程序的基本步驟 473 26.5 測試NFC程序需要的設備 474 26.6 讓Android手機自動運行程序 475 26.6.1 向NFC標簽寫入數據的基本步驟 475 26.6.2 向NFC標簽寫入啟動Android應用程序的消息 476 26.7 讓Android手機自動打開網頁 483 26.8 讀寫NFC標簽中的文本 485 26.8.1 實現讀寫文本數據應用的基本思路 485 26.8.2 如何將NFC標簽變成NDEF文本格式 485 26.8.3 NDEF文本格式解析 486 26.8.4 實現讀寫文本數據的Android應用程序 490 26.9 讀寫NFC標簽中的Uri 496 26.9.1 NDEF Uri格式解析 496 26.9.2 實現讀寫Uri的Android應用程序 499 26.10 利用NFC標簽支持的數據格式進行過濾 502 26.11 處理任意NFC標簽 504 26.12 讀寫非NDEF格式的數據 505 26.13 Android Beam技術與數據交互 507 26.13.1 傳遞NDEF消息 507 26.13.2 傳輸文件 511 26.14 小結 513
第27章 Android的網絡開發技術 514 27.1 提交HTTP GET和HTTP POST請求 514 27.2 HttpURLConnection類 516 27.3 上傳文件 517 27.4 下載管理(DownloadManager) 519 27.5 Wi-Fi Direct 524 27.5.1 Wi-Fi Direct API的核心部分 524 27.5.2 創建監聽Wi-Fi Direct動作的廣播接收器 524 27.5.3 注冊廣播接收器 525 27.5.4 發現Wi-Fi Direct設備 526 27.5.5 連接Wi-Fi Direct設備 526 27.5.6 數據傳輸 527 27.6 Internet電話(SIP) 528 27.6.1 使用SIP的要求和限制 528 27.6.2 配置Android版SIP電話 528 27.6.3 創建SipManager 529 27.6.4 注冊SIP服務器 529 27.6.5 開始打電話 530 27.6.6 接聽電話 530 27.7 小結 531
第28章 并發與定時器 532 28.1 Handler 532 28.1.1 更新UI 532 28.1.2 延遲執行 535 28.2 定時器 537 28.2.1 單秒循環的定時器:Chronometer 537 28.2.2 任意時間間隔的定時器:Timer 538 28.2.3 全局定時器:AlarmManager 539 28.3 AsyncTask 541 28.4 小結 543
第29章 異步裝載(Loader) 544 29.1 Loader簡介 544 29.2 Loader的核心類/接口 544 29.3 如何使用Loader 545 29.3.1 創建/重用Loader 545 29.3.2 遺棄舊的數據 546 29.3.3 LoaderManager與方法回調 546 29.3.4 創建Loader對象(onCreateLoader) 547 29.3.5 完成數據裝載(onLoadFinished) 547 29.3.6 Loader被重置(onLoaderReset) 548 29.4 異步裝載聯系人(CursorLoader的應用) 548 29.5 小結 552
第30章 Android推送技術 553 30.1 IOS的推送方案 553 30.2 Windows Phone的推送方案 554 30.3 Android的推送方案 554 30.4 第三方推送服務:極光推送 556 30.5 自己搭建推送服務器:AndroidPN 557 30.6 小結 558
第31章 Android的多媒體開發技術 559 31.1 音頻 559 31.1.1 音頻播放 559 31.1.2 錄制音頻 561 31.2 視頻 563 31.2.1 播放視頻 563 31.2.2 錄制視頻 564 31.3 相機 565 31.3.1 調用系統的拍照功能 565 31.3.2 自定義拍照功能 566 31.4 鈴聲 570 31.5 小結 572
第32章 Android的2D繪圖 573 32.1 繪制基本的圖形 573 32.1.1 繪制像素點 573 32.1.2 繪制直線 574 32.1.3 繪制圓形 574 32.1.4 繪制圓弧 574 32.1.5 繪制文本 575 32.1.6 示例:繪制基本的圖形和文本 575 32.2 繪制位圖 578 32.2.1 繪制Bitmap對象 578 32.2.2 使用Drawable.draw方法繪制位圖 579 32.2.3 示例:用兩種方式繪制位圖 579 32.3 設置圖像的透明度 580 32.4 旋轉圖像 581 32.5 小結 583
第33章 3D繪圖之OpenGL ES 584 33.1 OpenGL ES簡介 584 33.2 在3D空間中繪圖 585 33.2.1 要繪制3D圖形了,第一步要做什么 585 33.2.2 定義頂點 587 33.2.3 繪制三角形 588 33.2.4 三角形合并法繪制矩形 590 33.2.5 頂點法繪制矩形 592 33.2.6 頂點的選取順序 592 33.2.7 索引法繪制矩形 593 33.2.8 基于OpenGL ES的動畫原理 594 33.2.9 旋轉的矩形 594 33.3 視圖 595 33.3.1 有趣的比喻:照相機拍照 596 33.3.2 模型變換:立方體旋轉 597 33.3.3 用gluLookAt方法變換視圖 599 33.4 顏色 600 33.5 小結 602
第34章 Android的桌面上的“尤物” 603 34.1 窗口小部件(App Widget) 603 34.1.1 在Android桌面上添加App Widget 603 34.1.2 開發App Widget的步驟 603 34.1.3 數字時鐘 605 34.1.4 AppWidgetProvider類 607 34.1.5 向App Widget添加配置窗口 608 34.1.6 可以選擇風格的數字時鐘 608 34.2 動態壁紙(隨機變換的圓圈) 612 34.3 小結 618
第35章 Android中的短信(SMS)與彩信(MMS)開發技術 619 35.1 通過系統程序發短信 619 35.2 直接發送短信 619 35.3 保存短信發送記錄 620 35.4 監聽短信和彩信 621 35.5 顯示視頻縮略圖 622 35.6 彩信內容與SMIL協議 624 35.7 小結 631
第36章 Android的傳感器開發技術 632 36.1 如何使用傳感器 632 36.2 加速度傳感器(Accelerometer) 635 36.3 重力傳感器(Gravity) 635 36.4 光線傳感器(Light) 636 36.5 陀螺儀傳感器(Gyroscope) 636 36.5 方向傳感器(Orientation) 637 36.6 其他傳感器 638 36.7 小結 638
第37章 Android的全球定位系統(GPS) 639 37.1 GPS的核心API 639 37.2 獲取位置提供者(LocationProvider) 641 37.2.1 獲取所有可用的LocationProvider 641 37.2.2 根據名稱獲取LocationProvider 642 37.2.3 根據條件(Criteria)獲取LocationProvider 642 37.3 實時獲取GPS定位數據 643 37.4 測量地球上任意兩點之間的距離 645 37.5 鄰近警告 646 37.6 小結 647
第38章 谷歌地圖(Google Map)開發應用 648 38.1 Google Map的跨平臺解決方案:Maps JavaScript API v3 648 38.2 Google Map的顯示與定位 648 38.3 在Google Map上插入圖像標志 651 38.4 插入多個圖像標志 653 38.5 帶陰影的位置坐標信息 653 38.6 地圖與Java交互 655 38.7 小結 657
第39章 Android中的人機交互設計 658 39.1 手勢(Gesture) 658 39.1.1 創建手勢文件 658 39.1.2 通過手勢輸入字符串 658 39.1.3 通過手勢調用程序 660 39.1.4 編寫自己的手勢創建器 661 39.2 多點觸摸與放大/縮小操作 662 39.3 語音識別 664 39.4 讓手機說話(TTS) 665 39.5 小結 666
第40章 Android中的輸入法開發 667 40.1 Android輸入法簡介 667 40.2 控制輸入法 668 40.3 輸入法實戰 669 40.3.1 實現輸入法的步驟 669 40.3.2 編寫輸入法程序 669 40.3.3 輸入法服務的生命周期 672 40.3.4 預輸入文本 672 40.3.5 輸入法設置 673 40.4 小結 673
第41章 Android NDK開發 674 41.1 Android NDK簡介 674 41.2 安裝、配置和測試NDK開發環境 674 41.2.1 系統和軟件要求 675 41.2.2 下載和安裝Android NDK 675 41.2.3 下載和安裝Cygwin 675 41.2.4 配置Android NDK的開發環境 677 41.3 利用NDK Samples學習NDK開發 678 41.3.1 編譯NDK Samples 678 41.3.2 NDK程序的結構與命名規則 678 41.4 Android NDK配置文件詳解 679 41.4.1 Android NDK定義的變量 680 41.4.2 Android NDK定義的函數 680 41.4.3 描述模塊的變量 681 41.4.4 配置Application.mk文件 682 41.5 第一個NDK示例:字母的大小寫轉換 682 41.5.1 編寫NDK程序 682 41.5.2 編寫調用NDK函數的Java程序 684 41.5.3 在Eclipse中開發和編譯NDK程序 684 41.6 NDK程序讀取Java字段值 686 41.7 小結 687
第42章 Android的測試驅動開發(TDD) 688 42.1 JUnit測試框架 688 42.2 測試Activity 688 42.3 測試Content Provider 691 42.4 測試Service 692 42.5 測試普通類 692 42.6 小結 693
第43章 Android應用的性能優化 694 43.1 性能優化的基礎知識 694 43.2 編寫Java程序的最優化原則 695 43.2.1 用靜態工廠方法代替構造方法 695 43.2.2 避免創建重復的對象 695 43.2.3 防止內存泄漏 697 43.2.4 返回零長度的集合而不是null 697 43.2.5 通過接口引用對象 698 43.3 避免ANR 698 43.4 執行時間測試 699 43.5 內存消耗測試 700 43.6 測試性能的工具:traceview 701 43.7 小結 702
第44章 游戲項目實戰:笑臉連連看 703 44.1 游戲玩法 703 44.2 準備圖像素材 703 44.3 實現主界面 704 44.4 隨機生成連連看圖像 705 44.5 選中兩個相同圖像后消失 705 44.6 用定時器限制游戲時間 706 44.7 小結 707
第45章 開源項目實戰:NFC俠(NFCMan) 708 45.1 什么是NFCMan 708 45.2 用Android模擬器和非NFC設備測試NFC應用 709 45.3 NFCMan的實現原理 711 45.4 實現服務端程序(NFCMan) 711 45.4.1 可視化SWT開發環境 712 45.4.2 創建NFC標簽 712 45.4.3 描述虛擬NFC標簽的NFCTag類 714 45.4.4 保證虛擬NFC標簽的全局唯一 715 45.4.5 顯示與保存虛擬NFC標簽 716 45.4.6 裝載已經存在的虛擬NFC標簽 719 45.4.7 開啟服務 720 45.4.8 處理客戶端請求 721 45.4.9 保證虛擬Android設備全局唯一 723 45.4.10 描述虛擬Android設備 724 45.4.11 添加虛擬Android設備 725 45.4.12 異常處理機制 727 45.5 客戶端與服務端之間的數據管道(NFCManService) 728 45.5.1 與NFCMan交互(Socket方式) 728 45.5.2 與ANFCMan交互(廣播方式) 732 45.6 客戶端Library(ANFCMan) 733 45.6.1 ANFCMan的數據結構和異常類 733 45.6.2 ANFCMan的入口類 734 45.6.3 模擬檢測到NFC標簽的廣播接收器 734 45.6.4 同時處理物理NFC標簽和虛擬NFC標簽的窗口 735 45.7 測試ANFCMan(TestANFCMan) 738 45.8 小結 739 |
序: |
|