圖書信息
苗忠良 宛斌 等編著
ISBN 978-7-121-12532-4 2011年5月出版定價39.00元
16開
316 頁
宣傳語
深入淺出,依靠深厚行業經驗講透技術原理
循序漸進,詳解典型套用案例提升實戰能力
內 容 簡 介
本書主要圍繞著Android多媒體編程進行,縱向上,從共享記憶體、IPC通信、HAL、原生服務、JNI調用,以及多媒體的圖像、音頻、視頻框架等多個層次和子系統著手;橫向上,貫穿了移動網際網路、Android體系套用框架、OpenMax多媒體框架、渲染機制等方面,深入淺出地介紹了開發多媒體套用需要了解和掌握的多媒體框架及相關知識。涉及Android多媒體編程的所有主要內容。
本書內容翔實、分析深刻,是Android學習多媒體編程不可多得的資料,可以作為IT相關專業本科生和研究生,以及嵌入式領域的初、中級軟體工程師的參考讀物。
前 言
管理學大師Peter F. Drucker在其名著《卓有成效的管理者》中曾經說道“心智決定視野,視野決定格局,格局決定命運,命運決定未來”。對於一個人或者企業的發展而言,現實中也確實如此,能夠擁有多寬廣的視野,就能擁有多寬廣的舞台,也就能擁有做出多大成就的機會。
隨著移動通信的發展,尤其是3G技術的逐漸普及,我們的生活必將再次發生重大的變化,但3G究竟是什麼,這是個重要而又令人迷茫的話題。僅從技術上講,3G意味著更高的頻寬、更快的傳輸速率,也意味著固定網路和行動網路在基於IP這樣的傳輸技術上的無縫融合,計算機世界和電信世界之間的鴻溝因此變得逐漸消融,移動網際網路的概念已經呼之欲出;從民生而言,3G意味著人民的生活逐漸跨越以往無法隨時、隨地、隨心所欲地進入網際網路世界的障礙,向個人通信的終極理想又邁進了堅實的一步。從行業而言,傳統的以語音業務為中心的產業模式比較發生改變,通信的目的將不再僅是滿足通話的需要,將更多地圍繞生活、工作、學習、娛樂、醫療等內容而開展。從單純的語音通話到滿足人們隨心所欲的個性化交往需求,IT界最為重要的一次產業變革已經徐徐拉開序幕。
具體到移動終端,如果說2G時代的多媒體手機意味著通信和消費電子融合的話,那么在3G時代,移動終端已經逐漸成為以計算機、通信、消費電子、內容為主的“4C”融合的最佳載體,成為我們生活中不可缺少的一部分,輔助人們完成生活、工作、學習、娛樂、保健醫療等諸多方面的諸多內容。另外隨著3G移動終端的逐漸普及,基於3G的服務也將產生爆發式的增長,技術必然推動生活,生活又反過來推動技術的進步,為技術創造需求,從而極大地改變我們目前的生活現狀。
建立終端競爭力的立足點也將從1G時代的語音質量到2G時代的工業設計、人機互動向著內容和服務轉變,誰能把握這一趨勢,誰就將在即將來臨的下一個計算革命中占領先機。
2007年6月,美國Apple公司將行動電話、觸控螢幕、電子郵件、網頁瀏覽、搜尋和地圖功能等諸多網際網路功能融於通信設備的IPhone手機推向市場。伴隨著這一革命性的移動終端產品,Apple公司本著對“4C”融合理念的深刻理解,隨後推出了相應的應用程式商店,就此拉開了以“軟體、服務”為中心的移動終端生態系統序幕,開啟了新的移動計算革命。
傳統的以硬體銷售為中心的移動終端生態系統,正在加速朝著以“軟體、服務”為中心的移動終端生態系統轉變。
2007年10月,Nokia以81億美元收購數字導航公司Navteq,2007年11月,Nokia宣布從以移動終端為主的公司轉型為網際網路服務公司,同時發布了全新的網際網路服務品牌“Ovi”。隨後動作頻頻,於2008年1月,Nokia耗資1.53億美元收購著名開源軟體公司trolltech,2008年6月,Nokia以2.64億歐元收購Symbian公司52%的股權,將Symbian OS完全置於自己的掌控之下,並隨後將之完全開源,同時在線上媒體服務、社交網路等領域,Nokia也併購了多家小型公司,目前Nokia的網際網路戰略已經逐漸清晰,即基於手機地圖、導航和位置感知的社交網路已經成為Nokia的戰略核心。以Linux和Symbian的雙作業系統平台構成了產品的高、低端搭配。
作為網際網路時代的搜尋巨頭,Google本質上仍然是一家媒體公司,如何將自己的業務擴展到更多的用戶群,通過在更大的用戶群中為自己的客戶推廣產品,拓展自己的盈利增長點,從而進一步提升自己的盈利水平,迎合投資者的期望,Google顯然深諳此道並勇於開拓。
2005年8月,Google收購了Android公司,Android公司是一家基於Linux核心,通過最佳化的Java為用戶提供嵌入式平台的公司。通過特定的最佳化,在嵌入式終端上,極大地提高了Java的運行效率,實現了Motorola想做而沒有實現的事。2008年8月,Google聯合眾多廠商發布了Android 1.0作業系統,從而開始了自己在移動網際網路領域的精彩演繹。由於其開源、開放特性,Android迅速得到眾多終端廠商的歡迎和套用,權威市場研究機構IDC預計,到2013年,Android將成為全球僅次於Symbian 的第二大智慧型手機作業系統。
由於Android在開源、技術等各方面的優勢,Android受到了業界巨頭如Lenovo、Dell、SamSung、LG、HTC、Sony Ericsson、Qualcomm、Marvell、Nvidia等的青睞。甚至山寨主們也情意款款。2011年必將成為Android歷史上不可忘卻的一年。
當然Android並非一款專用於移動終端的軟體平台,還適用於平板電腦、機頂盒、高畫質電視等其他的嵌入式產品。尤其是平板電腦,在2010年的後半年,Android平台電腦開始發力,而伴隨著2011年專為平台電腦而研發的Android 3.0平台的推出,Android平板電腦已經迎來了一個爆發的時刻。特別值得一提的是,在CES 2011上,王者歸來的Motorola推出的XOOM平板和國內巨頭Lenovo推出的LePad均給業界留下來深刻的影響,如何化解傳統移動終端在辦公、輸入等方面的不足,推動移動終端向著真正的移動計算發展。Motorola和Lenovo從不同角度進行了卓有成效的探索。
考慮到Android平台的龐大精深,除了平台框架以外,在套用層面大致可分為傳統套用如通話、多媒體套用如音樂播放器、網路套用如瀏覽器等,非一本小書所能包含,在本書中,筆者將只側重於其中的多媒體內容,試圖從底層到套用,逐步為大家揭開其神秘的面紗。
“道可道非常道,名可名非常名”,行業的長久變化規律殊難預料,20年前,當基於模擬技術的行動電話流行時,人們絕對無法想像,今天的移動終端領域會如此豐富多彩,承載了如此眾多的生活功能。
但在較短的一個時期內,我們仍然有機會憑著對行業的較好理解來把握預期,在技術的約束中,放飛自己的思想,在新的產業變革來臨之際抓住機遇,在屬於自己的舞台上展現英姿,讓生命之花開的更加璀璨。
適用對象
從事嵌入式軟體開發的、渴望了解新生事物的初、中級軟體工程師和在校本科生、研究生。
預備知識
JAVA SE、Ubuntu Linux等的基本知識和對嵌入式軟體的興趣和熱情。
本書的組織
本書主要分為3部分。第一部分為Android的基礎知識,包括第1~3章,介紹了移動網際網路和Android的發展狀況,以及Android開發方面的基礎知識,同時對於多媒體開發涉及的多核通信進行了簡要的介紹;第二部分為多媒體框架部分,包括第4~8章,針對Android採用的opencore多媒體框架和OpenMAX引擎做了較詳細的介紹,並針對音頻、視頻、圖像的編/解碼和原生服務分別進行了詳細的闡述,同時針對Android的渲染機制和硬體加速等進行了較深入的剖析;第三部分為多媒體套用部分,包括第9~11章,針對常用的多媒體接口進行解說和實例分析。
本書的寫作在內容主體上遵循自下而上的過程,從多核通信、多媒體引擎、原生服務到多媒體套用依次展開。讀者可以根據自己的習慣,確定自己閱讀的順序。
致謝
苗忠良要感謝的話:
首先,非常感謝我的爺爺、爸爸、媽媽,是他們的辛勤培養造就了我今天的成就,沒有他們,就沒有我今天的一切,衷心的祝福他們永遠快樂、健康長壽!特別感謝我的姐姐、姐夫和妹妹、妹夫,作為家中的獨子,在照顧長輩方面我出力不多,是他們的付出,讓我能夠放心在外拼搏;另外還要感謝我的幾個可愛的外甥、外甥女們,謝謝你們帶給我的快樂!
其次,感謝我的夫人諶雙巧女士在本書寫作期間給予我的大力支持,寫作是件需要巨大精力投入的事情,能夠容忍我投入大部分的業餘時間來完成本書的寫作而不抱怨我無法抽出時間陪她,讓我十分感動,本書的出版包含著她的一份極大的功勞。我的岳父岳母都是很開明的人,十分感謝他們對我生活、寫作和工作上的關心和支持。
兩位作者共同要感謝的話:
首先,需要感謝的是在開源領域持續奮鬥的人們,九層之台,起於壘土,沒有他們的辛勤努力,本書也就失去可以撰寫的基礎。另外,筆者在撰寫本書過程中,參考了網上一些朋友的見解,在此一併表示感謝!
其次,要感謝的是電子工業出版社的編輯和策劃們,尤其是責任編輯胡辛征先生,正是胡辛征先生的不斷鼓勵和指導,才有了本書的最終問世,在本書撰寫過程中,胡辛征先生提出了不少真知灼見。很高興能和電子工業出版社的朋友們一起推動本書的出版。
吾生亦有涯,而知亦無涯,在學術的道路上充滿棘荊,需要不斷探索,筆者願與諸君一道去努力追求!
筆者
2011年02月於張江
無為齋
目 錄
第1章 Android概述 1
1.1 移動網際網路 2
1.1.1 “4C”融合 3
1.1.2 物聯網 4
1.2 發展概況 4
1.2.1 OHA聯盟 5
1.2.2 Android現狀 6
1.2.3 網路資源 7
1.3 開發環境 8
1.3.1 基於SDK的開發環境 8
1.3.2 基於原始碼的開發環境 12
1.4 體系架構 12
1.4.1 核心服務 13
1.4.2 原生服務 15
1.4.3 原生庫 17
1.4.4 運行時組件 18
1.4.5 硬體抽象層 19
1.4.6 Linux核心 19
第2章 Android基礎 26
2.1 Hello World 27
2.2 套用框架 33
2.2.1 套用組件 33
2.2.2 Activity和Tasks 55
2.2.3 進程和執行緒 55
2.2.4 組件生命周期 56
2.3 啟動過程 58
2.3.1 init.rc初始化腳本 59
2.3.2 服務管理器 65
2.3.3 Dalvik虛擬機 67
2.3.4 實時進程 71
2.4 進程間通信 77
2.4.1 ONC RPC遠程調用 78
2.4.2 ibinder通信機制 79
2.5 互動過程 80
2.5.1 Java JNI原生接口 81
2.5.2 直接調用 81
2.5.3 原生服務調用 82
2.5.4 原生守護進程調用 82
2.6 性能最佳化 83
2.6.1 資源讀取 83
2.6.2 DEX檔案和APK載入 84
2.6.3 虛擬機和平台實現 86
第3章 多核通信 88
3.1 共享記憶體 89
3.1.1 同步與互斥 89
3.1.2 SMD數據通信 90
3.1.3 SMSM狀態通信 96
3.2 過程調用 98
3.2.1 RPC路由器 99
3.2.2 RPC管道 102
第4章 多媒體框架 106
4.1 框架概述 107
4.2 OpenMAX接口規範 107
4.2.1 OpenMAX AL套用層 108
4.2.2 OpenMAX IL集成層 108
4.2.3 OpenMAX DL開發層 113
4.3 OpenCORE框架 113
4.3.1 內容策略管理 114
4.3.2 多媒體引擎 123
4.3.3 檔案解析和組合 130
4.3.4 編解碼器 133
4.3.5 OSCL底層移植 139
4.3.6 A/V同步 143
4.4 Stagefright框架 145
4.5 元數據 147
4.5.1 色彩模式 147
4.5.2 脈衝調製 148
第5章 圖像框架 149
5.1 Camera拍照框架 150
5.1.1 Camera原生服務 150
5.1.2 Camera的HAL接口 156
5.1.3 Camera參數的設定 160
5.2 重要數據結構 162
第6章 音頻框架 164
6.1 音頻管理框架 165
6.1.1 Audio Flinger 166
6.1.2 Audio Policy Service 177
6.2 音頻編解碼過程 180
6.2.1 AMR的編碼過程 181
6.2.2 AMR的解碼過程 188
6.2.3 MP3的解碼過程 193
第7章 視頻框架 197
7.1 Camera錄像框架 198
7.2 媒體播放服務 202
7.3 視頻的編解碼過程 205
7.3.1 視頻的編碼過程 206
7.3.2 視頻的解碼過程 209
第8章 渲染機制 213
8.1 Surface Flinger管理器 214
8.1.1 Layer的四種模式 215
8.1.2 Surface渲染管理 220
8.2 skia渲染 223
8.2.1 Skia圖形渲染 224
8.2.2 Skia圖像渲染 226
8.2.3 Skia UI控制項 234
8.3 OpenGL ES渲染 235
8.4 硬體加速 238
8.4.1 overlay 239
8.4.2 幀緩衝 240
8.4.3 MDP 242
第9章 圖像套用 243
9.1 基本接口 244
9.2 圖像的處理 247
9.3 動畫的處理 254
第10章 音頻套用 262
10.1 基本接口 263
10.2 Audio Manager 264
10.3 音頻記錄的處理 266
10.4 音頻播放的處理 267
10.5 語音識別 277
10.6 SIP服務 281
第11章 視頻套用 286
11.1 視頻記錄 287
11.2 視頻播放 290
跋 295
後記 298
參考文獻 304