Sensor HAL
從 Data API、Control API、SensorManager 與 SensorService 出發,分析 Sensor HAL 的設計、資料流與 Android 5.0 的子系統重構。
從 Sensor HAL、Audio HAL、Camera HAL,到 Multimedia、Graphics 與 Framework 軟體工程,建立 Android 子系統分析能力與行動裝置產品開發實力。
本課程是 AF101 的延續,將繼續介紹重要的 Android 框架子系統。若 AF101 的重點在於 HAL、Binder、Native Service 與 View System 的整體架構觀,那麼 AF102 則進一步深入產品開發現場最常遇到的幾個核心子系統,包含 Sensor、Audio、Camera、Multimedia 與 Graphics。
這門課不是零碎地介紹功能,而是從軟體工程的角度切入,分析各子系統的架構、設計與原理。對於希望成為 Android Framework 專家的工程師來說,理解這些子系統如何與 HAL、Service、Native Code 及 Framework 連接,是進一步提升研發能力的重要訓練。
本課程整理數個 Android 開發產品的實務主題,包含 Sensor HAL、Audio HAL、Camera HAL、Android 多媒體框架、Stagefright,以及 Android Framework 軟體工程等主題。
AF101 建立的是 Android HAL 與 Framework 的整體架構觀;AF102 則把這條主線往下推進,進入 Android 產品開發現場所必須面對的子系統。AF102 是 AF101 的延續,將繼續介紹重要的 Android 框架子系統,並且對每個子系統的架構、設計與原理,做更詳細的說明。
因此,這門課不是停留在理論架構,而是整理數個 Android 開發產品的實務主題,從 Sensor HAL、Audio HAL、Camera HAL,到 Android Multimedia、Stagefright、Graphics 與 Framework 軟體工程,一步一步帶學員建立更完整的系統分析能力。
本課程同時保留 Jollen 一貫的教學方式:不只說明怎麼做,更分析為什麼要這樣設計。對於有意成為 Android Framework 專家的工程師來說,AF102 是將 Android 架構能力進一步推向子系統與產品實作的重要一課。
從 Data API、Control API、SensorManager 與 SensorService 出發,分析 Sensor HAL 的設計、資料流與 Android 5.0 的子系統重構。
分析 Audio HAL、AudioService、AudioFlinger、ALSA Drivers、MediaPlayer 與 MediaRecorder 的架構與設計。
理解 Camera HAL、CameraService、V4L2、Video Streaming 與 Binder Shared Memory,建立 Camera 子系統的實作觀念。
從 MediaPlayerService、OpenCore、OpenMAX、PVPlayer 到 Stagefright 與 AwesomePlayer,理解多媒體框架的演進與設計。
分析 View & Graphics 系統、Composition、SurfaceFlinger、gralloc、copybit、GPU 與硬體加速的實作脈絡。
從 SOLID、IoC、FSM、Refactoring、Design Patterns 與 OOAD 切入,理解 Android Framework 的軟體工程基礎。
AF102 是從軟體工程的角度切入,對每個 Android 子系統的架構、設計與原理,都做詳細介紹。這個說法很重要,因為它說明本課的核心,不是把 Sensor、Audio、Camera 與 Multimedia 拆開逐一講完,而是透過這些子系統建立一套可延伸的分析方法。
因此,學習重點不只是 HAL 如何移植、Native Code 如何串接、Service 如何呼叫;更重要的是理解資料流、類別設計、模組責任、Refactoring 與新設計為什麼出現。
最後一天再進一步進入 Graphics Subsystem 與 Framework 軟體工程分析,讓子系統學習不只停留在實作,而是回到 Framework 架構師應具備的軟體工程視角。
對 Moko365 來說,AF102 的價值不只來自課綱本身,也來自它是從企業內訓現場長期淬練而成的 Android 子系統課程。原始頁面指出,本課程在正式推出公開課之前,已累積超過 5 年內訓經驗;其後於 2013 年推出公開課,並在 2014 年 12 月 09 日完成第四次改版,將內容更新至 Android 5.0,並針對幾個新的設計進行分析。
本課程源自多門企業內訓內容整合而成,正式推出公開課前,已累積超過 5 年的內訓經驗,並整合現有 5 門課程的核心主題。
AF102 正式推出公開課,仕橙版第 01 期於 2013 年 05 月 18 日在台北結訓,將 Sensor、Audio、Camera、Multimedia 與 Framework 軟體工程整理為完整主線。
課程於 2014 年 12 月 09 日進行第四次改版,內容更新至 Android 5.0,並針對新的子系統設計與重構進行分析。
仕橙版第 06 期於 2017 年 07 月 23 日結訓,代表這門課已從長期內訓主題,發展成成熟的公開課與企業內訓課程。
這門課程的歷史,說明 AF102 並不是單純新增的主題整理,而是從 Android 產品開發與內訓現場長期萃取出來的子系統實戰課。
標準版保留 3 天完整主線;企業版則可濃縮為 2 天,或依產品型態客製化調整。
企業內訓可依產品型態與團隊背景,調整 Sensor / Audio / Camera / Multimedia / Graphics 的授課比例。
AF102 很適合依產品需求重新分配比重。保留子系統主線,再依團隊最常面對的問題決定深度與比例。
加強 Audio HAL、MediaPlayerService、OpenCore、Stagefright、AudioFlinger 與 Codec 架構,適合多媒體播放器、錄音、語音與音訊產品團隊。
加強 Camera HAL、CameraService、V4L2、Binder Shared Memory、資料交換與串流路徑,適合相機、影像與視覺產品團隊。
加強 Sensor HAL、Data API / Control API、Polling、同步機制與資料傳遞,適合感測器、IoT 與裝置資料整合團隊。
加強 Graphics、Framework 軟體工程、SOLID、FSM、OOAD、Refactoring 與主子系統設計,適合資深工程師、架構師與 Team Lead。
AF102 是 AF101 的延續課。AF101 先建立 Android HAL、Binder、Android Service、HIDL 與 Framework 主幹架構;AF102 則從子系統角度深入 Sensor、Audio、Camera、Multimedia 與 Graphics,適合已具備 Android HAL / Framework 基礎,想往產品實作與子系統分析再進一步的工程師。
若團隊尚未完整理解 HAL、Binder IPC、Manager API、Native Service、HAL Server 與 Sensor HAL 的主線,建議先修 AF101,再進入 AF102,學習效果會更完整。
AF102 不是重講 AF101,而是把 HAL 與 Framework 的主幹架構,延伸到行動裝置最常見的子系統設計與實作主題,適合多媒體、相機、感測器、顯示與 Platform 團隊。
Jollen 在 Embedded Linux 與 Linux Device Driver 有超過 20 年的研發與企業內訓經驗,在 Android Framework 軟體架構方面,也有 15 年的授課經驗,並長期在科技業擔任 Linux & Android 技術顧問。
此外,Jollen 曾於 Linux 基金會舉辦的 Open Source Summit 全球開發者社群大會上,多次擔任講者發表演說;自 2017 年起,也於歐洲與加拿大發表有關區塊鏈與去中心化 IoT 架構的論文,並獲 ACM SIGBED Review 刊登。Jollen 於 2016 年創辦 Flowchain 基金會,開發原創區塊鏈作業系統技術,並獲多項相關國際專利。
AF102 的特色,不只是把多個 Android 子系統整理在一起,而是由長期從事 Linux、Android 與系統軟體架構工作的講師主講,能夠將 Sensor、Audio、Camera、Multimedia、Graphics 與 Framework 軟體工程,整理成一條有邏輯、可分析、可落地的學習主線。
若您的團隊已具備 Android HAL / Framework 基礎,並希望進一步深入 Sensor、Audio、Camera、Multimedia、Graphics 或 Framework 軟體工程,AF102 可作為 2 天或 3 天的企業內訓版本,依產品型態調整授課重點。