
Android應用開發框架解析與軟硬整合培訓
Android的軟硬整合觀點及獲利模式
1.1、 Android產業信息策略分析 Android技術、產品與市場 Android開源、開放與相容的意義和途徑 Android手機、平板和電視產品的技術趨勢與市場策略 軟硬整合觀點與應用(AP)開發的常見迷思 Android帶給硬件同質化,硬件廠必須自行開發AP,以創造差異化 內容或網絡業者好推出自己的設備(如亞馬遜電子書、手機) AP力求跨平臺,應該獨立于硬件或幕后服務 為求跨平臺,AP應該全部使用Java語言開發 打造自己應用商城(App Market)才能主導AP開發者 AP開發者只能實踐業務流程,不能主導商業的金流
1.2、 Android產業觀點及獲利模式 如何從產業(不是產品)觀點看Android平臺 Android平臺如何主導商業金流 硬件廠商如何調教Android平臺 電信、網絡服務和內容業者如何善用Android平臺 軟件(AP)開發者如何成為Android平臺上的主導者 Android的整體架構介紹
1.3、 Android的平臺的服務 、 常用的服務 簡介(0verview) Android各項服務的啟動 Windows Manager Activity Manager Package Manager 其它服務介紹 Android框架四大基本組件: 通信基礎:Intent -Intent-based Programming -范例:使用Intent啟動Activity Activity -使用Intent啟動Activity -Activity的life-cycle -Activity間的互相傳遞數據 -建立多Activity的應用程序 -Android基本UI布局及樣式(Pattern) Service -使用Intent啟動Service -何謂遠距(remote)的Service? -綁定(bind)遠距Service -建立Service應用程序,以播放背景MP3歌曲 BroadcastReceiver -何謂BroadcastReceiver? -以BroadcastReceiver接收S短信 -建立BroadcastReceiver應用程序,以啟動Service播放MP3歌曲 ContentProvider -何謂ContentProvider? -ContentProvier與SQLite數據庫 -使用ContentProvider進行數據的增、刪、改、查 Android的進程觀念和IPC通信機制 進程(Process)觀念 IBinder接口 呼叫IBinder接口的transact()函數 Binder類的意義和用法 實作Binder類onTransact()函數 Android的線程模式介紹 Android的主線程(Main Thread) 如何誕生Java層子線程 Java層主、子線程的通訊模式 Android的機制 Android/Linux的UID觀念 Android的Permissions機制 Android的UI框架介紹 主線程與ANR(Android Not Responding)對話框 Activity與View 控件體系的事件(信息)傳遞機制 View 控件體系的擴充與組件定制 SurfaceView控件幕后的多線程機制 SurfaceView結合動畫的應用
1.4、 熟悉Android開發環境 介紹Android Java層應用開發環境、器、及如何建立程序 Android的開發工作 使用Android SDK和器 Eclipse、ADT、DDMS和ADB等 親手開發支Android應用程序
2 Android的HAL-based驅動開發
2.1、 Android/Linux驅動開發技術及經驗 Android與Linux內核驅動的比較 Linux內核和驅動程序基本概念 User-space驅動與Kernel-space驅動 Android中設備驅動使用 User-space驅動的Pros和Cons
2.2、 Android HAL框架開發 HAL(Hardware Abstraction Layer)的意義 設計HAL Stub 程序 理解runtime與HAL Stub HAL Stub調用Kernel Driver的方法 Java與C/C++整合開發技術
2.3、 JNI Native進階開發:雕龍妙技 控制點的抉擇 控制點的規劃 控制點在Java層:復習Java呼叫Native C函數 控制點在C/C++:Native C如何呼叫Java函數 控制點在C/C++:Native C函數如何誕生Java對象 JNI Native C的執行緒模式 Android VM的執行緒模式介紹 JNI Native C程序的執行緒模式 JNI Native程序的執行緒設計
2.4 、核心服務框架的關鍵機制:Binder Kernel 認識Android核心服務 以多媒體Mediaplayer為例介紹C++層服務 核心服務:包括Android Service和 Native Service 核心服務的幕后機制:Binder Kernel 核心服務框架內的通訊機制 IPC跨進程(Process)通訊機制 如何綁定(Bind)C++層服務
2.5、 撰寫你的個Android核心服務 觀摩天字號核心服務:(ServiceManager) 撰寫C++類實現你的核心服務 創建該C++類的物件,藉由存入Binder Kernel里 JNI函數透過來綁定該核心服務 Java框架透過JNI而呼叫核心服務 核心服務透過HAL銜接到Linux或底層驅動程序
3 Android 框架解析與應用界面設計
3.1、 認識Android的UI框架 認識UI線程及線程 View類別體系的常用控件 布局、菜單、對話框 GroupView與Layout ListView與活用Adapter UI Style初步與活用 UI 布景(Theme)設計 以XML定義UI Layout設計
3.2 、UI呈現與多媒體框架解析 UI界面與繪圖應用 Android 的2D繪圖基礎:使用Skia 活用Android的View控件及其畫布(Canvas) 使用Android的Drawable圖像資源 Drawable圖像的透明度 Android的3D繪圖基礎:使用0penGL ES 介紹Android的SurfaceView控件 范例:讓圖像在SurfaceView里旋轉 SQlite數據與多媒體應用范例 存取SQlite數據庫 規劃音樂檔案格式(WAV) 啟動Audio 服務進行錄制音樂,并存入SQlite數據庫
3.3、 觀摩Android應用框架的設計 MediaPlayer框架范例解析 Java層框架基類及相關類別 JNI界面 核心服務 SurfaceView框架范例解析 一般View與SurfaceView的區別 SurfaceView的執行緒模式 以0penGL_ES說明SurfaceView的JNI接口設計 SurfaceFlinger在框架里的角色 SurfaceFlinger的任務 SurfaceView如何透過JNI呼叫SurfaceFlinger核心服務 SurfaceFlinger核心服務如何整合多個SurfaceView的動畫 軟硬整合 + 云服務:使用Android & HTML5
3.4、 Android + GAE云服務應用開發 以Google AppEngine為例,實現端云相連 取得云服務:以Google的AppEgine為例 Google的AppEgine的Servlet程序 將Image圖文件存入云平臺 撰寫Android應用程序調用 Servlet程序 Servlet程序將圖文件存入云的DB里
3.5 、Android + HTML5 + Android智能TV + 家庭物聯網 實現智能家庭 以智能TV為中心,建立家庭云(Family Cloud) 將 i-Jetty安裝到智能TV 撰寫家庭云網頁:將HTML(or HTML5)代碼寫入智能TV里 從手機訪問家庭云主頁:例如,控制IP攝像頭等
3.6 結語:軟硬整合與Android技術 軟硬整合+設計 海峽兩岸的<軟硬整合之路>如何走呢? 三星、S0NY、微軟都邁向軟硬整合 必備條件:開放平臺 圓滿條件:精簡設計 軟硬整合流程和實踐