首先感謝各位兄弟姐妹們的耐心等待。本書預計在3月中旬上市發售。從今天開始,我將在部落格中連載此書的一些內容。注意,此處連載的是未經出版社編輯的原始稿件,所以樣子會有些非專業。
前 言
本書主要內容及特色
本書是筆者“深入理解Android”系列的第三本書,也是該系列專題卷的第二本書[①]。本書將關注Android平台中非常重要並且專業背景知識很濃厚的Wi-Fi、NFC和GPS等模組。相比筆者早前所撰寫的卷I、卷II,本書和它們的區別在於:
- 卷I和卷II的內容幾乎沒有涉及到什麼專業知識。讀者只要認真研讀代碼,提高代碼閱讀能力之後就可以輕鬆掌握它們。
- 而本書所講解的Wi-Fi、NFC以及GPS模組的背後都有著非常多的專業知識,例如與Wi-Fi相關的802.11協議、Wi-Fi Alliance定義的Wi-Fi Simple Configuration和Wi-Fi P2P協議、NFC Forum定義的一整套與NFC相關的協議、與GPS相關的衛星導航原理、AGPS和OMA-SUPL協議等等等等。顯然,如果不瞭解這些專業知識,讀者將不可能真正掌握它們在Android平台中的代碼實現。
考慮到這些專業知識的重要性,本書在講解Android平台中Wi-Fi、NFC和GPS模組的實現之前,都將先行重點介紹與代碼相關的專業知識。當然,這些專業知識內容如此豐富,筆者在一本書中無法全部涵蓋它們。為了方便讀者進一步深入學習,本書每章的最後都會列舉出筆者在撰寫它們時所閱讀的參考文獻。
以下是本書的內容概述:
- 第一章介紹本書的內容組成、工具使用以及參考源碼的下載方法。
- 第二章介紹Netd和與之相關的背景知識。
- 第三章介紹Wi-Fi基礎知識。Wi-Fi是本章的重點,而且也是當下最熱門的技術,所以本書用一整章來介紹它的基礎知識。
- 第四章介紹wpa_supplicant,它是Wi-Fi領域中最核心的軟體實現。
- 第五章介紹WifiService,它是Android平台中特有的Wi-Fi服務模組。
- 第六章和第七章介紹Wi-Fi Alliance(Wi-Fi聯盟)推出的兩項重要技術,Wi-Fi Simple Configuration和Wi-Fi P2P以及它們在Android平台中的代碼實現。
- 第八章介紹NFC背景知識以及NFC在Android平台中的代碼實現。NFC也是一門曆史比較悠久的技術了,希望它能隨著Android的普及而走向福士。
- 第九章介紹GPS原理及Android平台中的位置管理服務架構。
本書通過理論和代碼相結合的方式進行講解,旨在引領讀者一步步瞭解Wi-Fi、NFC和GPS模組的工作原理。總之,筆者希望讀者在閱讀完本書後能有以下收穫:
- 初步掌握Wi-Fi、NFC和GPS的專業知識。
- 根據其實現代碼,進一步加深對這些專業知識的理解。
讀者對象
適合閱讀本書的讀者包括:
- Android系統開發工程師:系統開發工程師常常需要深入理解系統的運轉過程,而本書所涉及的內容正是他們在工作和學習中最想瞭解的。那些對具體模組感興趣的讀者也可單刀直入,閱讀相關章節。
- Wi-Fi、NFC或GPS的BSP開發工程師:BSP開發工程師更需要對Android平台中這些模組的工作原理及背景知識有著深入的理解。雖然本書沒有介紹這些模組在Linux Kernel層的實現,但瞭解它們在使用者空間的工作流程也將極大協助BSP開發工程師拓展自己的知識面。
- 對Wi-Fi、NFC和GPS感興趣的在校高年級本科生、研究生和其他讀者:掌握理論的基礎上,如何在實際代碼中來實現或使用它們也許是眾多學子很少接觸的領域。所以,這本理論與代碼實現深度結合的書籍一定可在這一塊助您一臂之力。
如何閱讀本書
本書是一本專業知識和代碼實現相結合的書籍,所以讀者在閱讀時:
- 首先閱讀專業知識。如果您對它們比較瞭解的話,可以直接跳轉到代碼實現。
- 然後是Android平台中相關模組的代碼實現。這些代碼實現往往基於一定的專業知識。所以讀者在閱讀代碼時務必和前述的專業知識相結合。
- 每章最後都列出了筆者在撰寫它們時所參考的資料。這些資料較多,讀者可根據它們開展進一步的研究工作。
另外,和卷1以及卷II類似的是:每章開頭都把本章涉及的源碼路徑全部列出,而在具體分析源碼時,則只列出該源碼的檔案名稱及所分析的函數或相關資料結構名。例如:
[-->AndroidRuntime.cpp::函數或資料結構名]
//這裡是源碼分析和一些注釋
最後,本書在描述類之間的關係及函數調用流程上,使用了UML的靜態類圖及順序圖表。UML是一個強大的工具,但它的建模規範過於繁瑣,為更簡單清晰地描述事情的本質,本書並未完全遵循UML的建模規範。這裡舉二例,1和圖2所示.
圖1 UML樣本圖之一
在圖1中:
- 外部類內部的方框用於表示內部類。另外,外部類A.內部類B也用於表示內部類。
- 介面和普通類用同一種框圖表示。
圖2所示為本書描述資料結構時使用的UML圖:
圖2 UML樣本圖之二
圖2所示為本書描述資料結構及成員時使用的UML圖例。
特別注意:本書所使用的UML圖都比較簡單,讀者不必花費大量時間專門學習UML。另外,出於方便考慮,本書所繪製的UML圖沒有嚴格遵守UML規範。這一點敬請讀者諒解。
本書涉及的Android源碼及一些開發工具的為:http://115.com/lb/5lbdugrdt4r。關於它們的使用詳情,請讀者閱讀第1章1.3節。
勘誤和支援
由於作者的水平有限,加之編寫時間倉促,書中難免會出現一些錯誤或不準確的地方,懇請讀者不吝批評指正。若有問題,可通過郵箱或在部落格上留言與筆者共同商討。筆者的連絡方式是:
- 郵箱fanping.deng@gmail.com
- 部落格blog.csdn.net/innost和http://my.oschina.net/innost/blog
致謝
本書即將付梓!首先要感謝楊福川編輯的大力支援。另外,要感謝本書審稿編輯白宇嚴謹負責的工作。
另外,筆者需要特別感謝所就職的Tieto公司。這是筆者第一次供職於一家外資企業。Tieto開放的企業文化、Android團隊高效的工作效率,團隊成員之間默契的工作配合程度以及領導無私和有力的支援著實讓我感到幸運和自豪。在Tieto就職的一年中,我們Android團隊不僅成功贏得了客戶的信任,更是得到了Tieto公司總部和位於其他國家分公司同事們的一致認可。同時,團隊成員還積極分享,並在《程式員》雜誌上發表了六篇高品質的文章。
在此,筆者藉助本書對以下Tieto的領導和同事表示衷心的感謝。他們是北京分公司的Leo、hongbin、James、yantao、meiyang、dujiang、changgeng、caimin、wenjing、huaizhi、huirong、xinzhi、huimin、yuzheng、Liuxuan、Emily、Diego、jinghua、Jenny等,成都分公司的tianxiang、chengguo等,波蘭分公司的Marcin、Marciej、Filip Matusiak等、捷克分公司的Vaclav、Bronislav、Petrous Jan等、芬蘭分公司的Mikel Echegoyen。
當然,本書能得以快速出版,還需要感謝兩位功力深厚並熱心參與技術審稿的專家。他們是全志(Allwinner)公司Wireless Team負責人吳勁良以及高通(Qualcomm)中國資深研發經理楊洋。二位專家在各自領域所體現出來的專業素養和技術水平之高時刻提醒筆者應牢記“路漫漫其修遠兮,吾將上下而求索”。另外,高通中國資深研發經理毛曉冬也對本書成功編寫提供了不小的協助。在此一併感謝他們。
最後,一如既往地感謝家人和妻子。並且,筆者尤其希望明年上天能恩賜一個健康可愛的寶寶。這樣,我將擁有更加無窮的動力來回饋那些花費寶貴時間和精力關注本書的讀者以及所有在人生和職業道路上曾給予我指導的諸位師長。
鄧凡平
2013年11月於Tieto北京分公司
[①]本系列專題卷第一本書是由楊青平撰寫的《深入理解Android:Telephony原理剖析與最佳實務》。