本書主要分為三部分,包括軟件篇、硬件篇和項(xiàng)目篇。軟件篇從Android體系結(jié)構(gòu)和開發(fā)環(huán)境搭建,以及Android應(yīng)用程序開發(fā)等方面構(gòu)造了一個(gè)完整的Android開發(fā)流程;硬件篇重點(diǎn)講解了S5PV210硬件結(jié)構(gòu)和Android系統(tǒng)移植,詳細(xì)介紹了底層驅(qū)動(dòng)的封裝、中間層JNI的制作,以及上層UI的設(shè)計(jì);項(xiàng)目篇提供完整的綜合應(yīng)用項(xiàng)目的程序開發(fā)實(shí)例,詳細(xì)介紹了開發(fā)過程和原始程序代碼。并且安排了豐富的實(shí)驗(yàn)內(nèi)容與實(shí)踐,讓讀者深刻理解和掌握嵌入式系統(tǒng)開發(fā)的整個(gè)過程,了解底層驅(qū)動(dòng)程序驅(qū)動(dòng)硬件的原理和上層應(yīng)用程序的設(shè)計(jì)方法。
全面詳解底層驅(qū)動(dòng)、中間層JNI制作和上層UI接口貫通設(shè)計(jì)的著作,大量的實(shí)驗(yàn)程序,完整的項(xiàng)目實(shí)例,快速提高嵌入式硬件與Android的開發(fā)能力
第2版前言
《Android嵌入式系統(tǒng)程序開發(fā)(基于Cortex-A8)》一書,自2013年4月由機(jī)械工業(yè)出版社出版后,分別在2013年和2014年重印兩次,在此類專業(yè)圖書教材中表現(xiàn)相當(dāng)突出。作者非常感謝購買本書的讀者,尤其是那些能夠通過網(wǎng)絡(luò)提出問題討論并給出建議或指出錯(cuò)誤的讀者朋友。根據(jù)最近幾年Android的發(fā)展變化、開發(fā)平臺(tái)軟件和開發(fā)工具的更新等相關(guān)資料,以及近幾年筆者在學(xué)校、公司從事教學(xué)與培訓(xùn)中的經(jīng)驗(yàn)和積累,決定對(duì)本書進(jìn)行升級(jí)以適應(yīng)快速迭代的市場(chǎng)變化。
本書在第1版內(nèi)容的基礎(chǔ)上修改了部分內(nèi)容,主要內(nèi)容包括:更新第2章Android應(yīng)用程序開發(fā)內(nèi)容,增加了界面布局、菜單和事件處理內(nèi)容;新增第3章數(shù)據(jù)庫應(yīng)用程序開發(fā),增加本地SQLite數(shù)據(jù)庫應(yīng)用程序,以及遠(yuǎn)程數(shù)據(jù)庫訪問應(yīng)用程序;根據(jù)讀者的建議,修改S5PV210硬件結(jié)構(gòu)與接口驅(qū)動(dòng)程序部分內(nèi)容,涉及第5章系統(tǒng)硬件及驅(qū)動(dòng)程序,以及第6章外設(shè)接口及驅(qū)動(dòng)程序,實(shí)現(xiàn)了硬件接口、上層UI界面程序和中間層JNI程序結(jié)合的驅(qū)動(dòng)程序;修改了第7章并更換了第9章的實(shí)例,使得初學(xué)者更容易理解和接受相關(guān)知識(shí)。
盡管筆者設(shè)計(jì)和開發(fā)過許多實(shí)際的應(yīng)用項(xiàng)目和產(chǎn)品,但考慮到本書讀者主要是初學(xué)者,通常不可能具備與掌握開發(fā)各種實(shí)際項(xiàng)目或產(chǎn)品所涉及的相關(guān)知識(shí)和基礎(chǔ),所以提供完整的綜合應(yīng)用項(xiàng)目的程序開發(fā)實(shí)例。再版書中的實(shí)例源代碼放在華章網(wǎng)站上,包括應(yīng)用程序開發(fā)、數(shù)據(jù)庫應(yīng)用程序開發(fā),系統(tǒng)硬件及驅(qū)動(dòng)程序、外設(shè)接口及驅(qū)動(dòng)程序和綜合應(yīng)用項(xiàng)目的程序開發(fā)實(shí)例等源代碼。
本書在編寫過程中,得到了許多專家和學(xué)者的大力支持,聽取了多方面的寶貴意見和建議,在此對(duì)他們表示衷心感謝。書中難免存在不足和錯(cuò)誤之處,敬請(qǐng)讀者批評(píng)指正。
編者
2015年4月
胡 文 大學(xué)計(jì)算機(jī)系教授,多年從事Windows CE和Android嵌入式系統(tǒng)應(yīng)用研究,精通單片機(jī)系統(tǒng)開發(fā)和嵌入式終端開發(fā),所開發(fā)的嵌入式組態(tài)軟件、嵌入式訪問數(shù)據(jù)庫軟件和嵌入式終端等應(yīng)用于多個(gè)領(lǐng)域。
目 錄
第2版前言
第1版前言
軟件篇
第1章 Android體系結(jié)構(gòu)及開發(fā)環(huán)境 / 2
1.1 Android體系結(jié)構(gòu)介紹 / 2
1.1.1 應(yīng)用程序 / 3
1.1.2 應(yīng)用程序框架 / 3
1.1.3 函數(shù)庫 / 4
1.1.4 Linux內(nèi)核 / 4
1.2 搭建Windows下的開發(fā)環(huán)境 / 5
1.2.1 安裝JDK / 5
1.2.2 安裝Eclipse / 6
1.2.3 安裝ADT / 6
1.2.4 安裝SDK / 7
1.2.5 創(chuàng)建Android虛擬設(shè)備 / 9
1.3 搭建Linux下的開發(fā)環(huán)境 / 11
1.3.1 安裝JDK / 11
1.3.2 安裝Eclipse / 12
1.3.3 安裝ADT / 13
1.3.4 安裝SDK / 15
1.3.5 創(chuàng)建Android虛擬設(shè)備 / 17
1.4 搭建NDK開發(fā)環(huán)境 / 20
1.4.1 NDK開發(fā)環(huán)境與安裝目錄 / 20
1.4.2 系統(tǒng)和軟件需求 / 20
1.4.3 Windows 平臺(tái)NDK環(huán)境搭建 / 21
1.4.4 Linux平臺(tái)NDK環(huán)境搭建 / 25
第2章 Android應(yīng)用程序開發(fā) / 28
2.1 第一個(gè)HelloEveryone / 28
2.1.1 創(chuàng)建第一個(gè)Android項(xiàng)目HelloEveryone / 28
2.1.2 Android應(yīng)用工程組成 / 29
2.2 Android應(yīng)用程序組成 / 31
2.2.1 Activity組件 / 31
2.2.2 Intent組件 / 36
2.2.3?Broadcast Receiver組件 / 39
2.2.4 Service組件 / 39
2.2.5 Content Provider組件 / 39
2.3 使用AndroidManifest文件定義應(yīng)用程序 / 40
2.3.1 管理應(yīng)用程序身份 / 42
2.3.2 注冊(cè)Activity和其他應(yīng)用程序組件 / 42
2.3.3 使用許可權(quán)限 / 44設(shè)備和軟件 / 45
2.3.5 使用庫和Android SDK版本 / 46
2.3.6 定義應(yīng)用程序的其他配置參數(shù) / 46
2.4?常用Widget控件介紹 / 47
2.4.1?用Widget控件創(chuàng)建Android項(xiàng)目 / 47
2.4.2?按鈕 / 48
2.4.3?文字框 / 50
2.4.4?編輯框 / 51
2.4.5?多項(xiàng)選擇框 / 52
2.4.6?單項(xiàng)選擇框 / 54
2.4.7?下拉列表 / 55
2.4.8?自動(dòng)完成文本 / 56
2.4.9?日期、時(shí)間選擇器 / 58
2.4.10?進(jìn)度條 / 60
2.4.11?拖動(dòng)條 / 61
2.4.12?圖片視圖 / 62
2.4.13?基于網(wǎng)格索引的圖片瀏覽器 / 63
2.4.14?選項(xiàng)卡 / 66
2.4.15?列表 / 67
2.4.16?圖片按鈕 / 69
2.4.17?拖動(dòng)效果 / 70
2.4.18?對(duì)話框?qū)嵗?/ 72
2.5 界面布局 / 75
2.5.1 線性布局 / 75
2.5.2 框架布局 / 77
2.5.3 表格布局 / 78
2.5.4 相對(duì)布局 / 80
2.5.5 絕對(duì)布局 / 81
2.5.6 網(wǎng)格布局 / 82
2.6 菜單 / 84
2.6.1 菜單資源 / 84
2.6.2 選項(xiàng)菜單 / 85
2.6.3 子菜單 / 87
2.6.4 快捷菜單 / 89
2.7 事件處理 / 91
2.7.1 Android的事件處理概述 / 91
2.7.2 基于監(jiān)聽的事件處理 / 91
2.7.3 基于回調(diào)的事件處理 / 94
2.7.4 響應(yīng)的系統(tǒng)設(shè)置的事件 / 97
2.7.5 Handler消息傳遞機(jī)制 / 101
第3章 SQLite數(shù)據(jù)庫程序開發(fā) / 103
3.1 SQLite簡(jiǎn)介 / 103
3.1.1 SQLite體系結(jié)構(gòu) / 103
3.1.2 數(shù)據(jù)庫基礎(chǔ) / 104
3.1.3 SQLite語句及語法 / 104
3.1.4 數(shù)據(jù)庫包 / 107
3.1.5 SQLiteDatabase類 / 109
3.2 SQLite連接 / 111
3.2.1 開始構(gòu)建 / 112
3.2.2 數(shù)據(jù)庫基本操作 / 114
3.2.3 數(shù)據(jù)庫與UI連接 / 120
3.3 數(shù)據(jù)共享 / 122
3.3.1 Content Provider實(shí)現(xiàn)數(shù)據(jù)共享 / 123
3.3.2 創(chuàng)建Content Provider / 125
3.3.3 使用CRUD基本函數(shù) / 127
3.3.4 注冊(cè)與使用Content Provider / 130
3.4 基于SQLite數(shù)據(jù)庫的日記賬工具 / 135
硬件篇
第4章 Android系統(tǒng)移植 / 152
4.1 Android 結(jié)構(gòu)介紹 / 152
4.2 Android 內(nèi)核結(jié)構(gòu)和設(shè)備驅(qū)動(dòng) / 153
4.2.1 Android 內(nèi)核源代碼結(jié)構(gòu) / 153
4.2.2 Android 常用設(shè)備驅(qū)動(dòng) / 155
4.3 Android 內(nèi)核基本配置 / 161
4.3.1 Android內(nèi)核中的Kconf?ig文件 / 162
4.3.2 Android內(nèi)核配置選項(xiàng) / 162
4.4 Android 內(nèi)核編譯 / 165
4.4.1 Android內(nèi)核中的Makef?ile文件 / 166
4.4.2 解壓Android 內(nèi)核源代碼 / 167
4.4.3 編譯Android 內(nèi)核 / 167
4.5 DMA-210XP平臺(tái)Android文件系統(tǒng)燒寫 / 168
4.5.1 燒寫u-boot到Nand F?lash / 168
4.5.2 燒寫zImage內(nèi)核映像文件 / 171
4.5.3 燒寫ramdisk-uboot.img映像文件 / 172
4.5.4 燒寫Android System.img文件 / 172
4.5.5 燒寫Android userdata.img文件 / 173
4.5.6 啟動(dòng)Android系統(tǒng) / 173
4.5.7 TF卡自動(dòng)更新kernel和Android系統(tǒng)文件 / 174
第5章 系統(tǒng)硬件與驅(qū)動(dòng)程序 / 175
5.1 Android硬件抽象層(HAL) / 175
5.1.1 內(nèi)核硬件驅(qū)動(dòng)程序 / 175
5.1.2 增加C硬件驅(qū)動(dòng)程序 / 184
5.1.3 接口硬件驅(qū)動(dòng)程序 / 185
5.1.4 JNI硬件驅(qū)動(dòng)程序 / 189
5.2 GPIO接口及驅(qū)動(dòng)程序 / 191
5.2.1 GPIO接口 / 191
5.2.2 LED接口電路 / 199
5.2.3 LED驅(qū)動(dòng)程序設(shè)計(jì) / 199
5.2.4 LED程序測(cè)試 / 214
5.3 PWM定時(shí)器及驅(qū)動(dòng)程序 / 215
5.3.1 PWM定時(shí)器 / 215
5.3.2 背光接口電路 / 221
5.3.3 背光驅(qū)動(dòng)程序設(shè)計(jì) / 224
5.3.4 背光程序測(cè)試 / 232
5.4 ADC接口及驅(qū)動(dòng)程序 / 232
5.4.1 ADC轉(zhuǎn)換器 / 232
5.4.2 ADC接口電路 / 239
5.4.3 ADC驅(qū)動(dòng)程序設(shè)計(jì) / 239
5.4.4 ADC程序測(cè)試 / 244
5.5 鍵盤接口及驅(qū)動(dòng)程序 / 245
5.5.1 鍵盤掃描原理 / 245
5.5.2 矩陣鍵盤硬件原理圖 / 246
5.5.3 鍵盤驅(qū)動(dòng)程序設(shè)計(jì) / 250
5.5.4 鍵盤程序測(cè)試 / 259
第6章 外設(shè)接口與驅(qū)動(dòng)程序 / 261
6.1 UART串行接口及通信程序 / 261
6.1.1 UART簡(jiǎn)介 / 261
6.1.2 UART接口及操作 / 271
6.1.3 UART通信程序設(shè)計(jì) / 272
6.1.4 UART程序測(cè)試 / 285
6.2 IIC總線接口及驅(qū)動(dòng)程序 / 286
6.2.1 IIC總線簡(jiǎn)介 / 286
6.2.2 在Linux內(nèi)核中添加IIC設(shè)備 / 291
6.2.3 IIC驅(qū)動(dòng)程序設(shè)計(jì) / 291
6.3 藍(lán)牙接口及驅(qū)動(dòng)程序 / 302
6.3.1 藍(lán)牙簡(jiǎn)介 / 302
6.3.2 Android系統(tǒng)下的藍(lán)牙架構(gòu) / 304
6.3.3 藍(lán)牙驅(qū)動(dòng)程序設(shè)計(jì) / 305
6.3.4 藍(lán)牙程序測(cè)試 / 312
6.4 Wi-Fi接口及通信程序 / 313
6.4.1 Wi-Fi介紹 / 313
6.4.2 Wi-Fi程序設(shè)計(jì) / 316
6.4.3 Wi-Fi程序測(cè)試 / 323
6.5 MediaPlayer播放器程序 / 324
6.5.1 MediaPlayer簡(jiǎn)介 / 324
6.5.2 MediaPlayer的界面與架構(gòu) / 325
6.5.3 MediaPlayer播放器程序設(shè)計(jì) / 327
6.5.4 MediaPlayer程序測(cè)試 / 335
6.6 Camera 拍照及攝影程序 / 336
6.6.1 Camera簡(jiǎn)介 / 336
6.6.2 Android 系統(tǒng)的Camera / 337
6.6.3 Camera拍照程序設(shè)計(jì) / 338
6.6.4 Camera程序測(cè)試 / 343
項(xiàng)目篇
第7章?Android界面與IO設(shè)計(jì)工具 / 346
7.1 Android界面與IO設(shè)計(jì)工具介紹 / 346
7.2 Android界面與IO設(shè)計(jì)工具結(jié)構(gòu) / 346
7.3 Android界面與IO設(shè)計(jì)工具界面設(shè)計(jì) / 348
7.3.1 界面設(shè)計(jì) / 348
7.3.2 界面內(nèi)容添加 / 348
7.4 Android界面與IO設(shè)計(jì)工具功能選擇區(qū)設(shè)計(jì) / 356
7.4.1 界面設(shè)計(jì) / 356
7.4.2 IO設(shè)計(jì) / 369
7.4.3?數(shù)據(jù)庫設(shè)計(jì) / 371
7.5 Android界面與IO設(shè)計(jì)工具輔助功能區(qū)設(shè)計(jì) / 376
7.6 Android界面與IO設(shè)計(jì)工具程序生成區(qū)設(shè)計(jì) / 377
7.6.1 Android界面與IO設(shè)計(jì)工具程序生成區(qū)功能介紹 / 377
7.6.2 Android界面與IO設(shè)計(jì)工具程序生成區(qū)的代碼實(shí)現(xiàn) / 378
第8章 GPS與Google Map定位系統(tǒng) / 392
8.1 MyMap服務(wù)系統(tǒng) / 392
8.2 Android Google Map / 393
8.2.1 申請(qǐng)Google Map Android API Key / 393
8.2.2 編寫Google Map框架程序 / 394
8.2.3 控制地圖 / 396
8.2.4 地圖的顯示模式 / 398
8.2.5 地圖的圖層 / 401
8.2.6 查詢與定位 / 403
8.3 Android定位服務(wù) / 409
8.3.1 開啟定位服務(wù) / 409
8.3.2 模擬測(cè)試 / 411
8.3.3 GPS與Google Map定位 / 413
8.4 案例重構(gòu) / 414
8.4.1 地圖的顯示模式 / 414
8.4.2 重構(gòu)“查詢方法” / 417
第9章 Android圖書管理系統(tǒng) / 420
9.1 系統(tǒng)功能設(shè)計(jì) / 420
9.2 系統(tǒng)開發(fā)環(huán)境 / 420
9.3 數(shù)據(jù)庫設(shè)計(jì) / 421
9.4 圖書管理系統(tǒng)學(xué)生端開發(fā) / 424
9.4.1 登錄界面 / 424
9.4.2 查詢界面 / 425
9.4.3 學(xué)生預(yù)約管理 / 431
9.4.4 掛失管理 / 433
9.5 圖書管理系統(tǒng)管理端開發(fā) / 434
9.5.1 登錄界面 / 434
9.5.2 圖書管理 / 438
9.5.3 學(xué)生信息管理 / 439
9.5.4 管理員管理 / 441
9.5.5 借閱預(yù)約圖書 / 443
9.5.6 繳納罰款 / 446
參考文獻(xiàn) / 450