2010年9月16日

[Android 教學] Android 的商業模式與機會

Android App 開發


新版 Android SDK 下載安裝中文教學課程講義,歡迎延伸點閱!


我們的《Android 手機應用程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),歡迎您的加入,謝謝!


本講義目前網路連載發表有:Android手機程式開發教學講義懶人包Android 教學講義第一講Android 教學講義第二講Android 教學講義第三講Android 教學講義第四講Android 教學講義第五講Android 教學講義第六講Android 教學講義第七講上篇Android 教學講義第七講下篇Android 2.3補充教材1Android 2.3補充教材2Android 3.0平板電腦完整功能搶先看(From T-Mobile)Android 3.0 平板電腦應用程式開發:第一講Android 3.0 SDK 正式版登場Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦Android 2.3 補充教材3Android 3.0 平板電腦應用程式開發:第二講Android 教學講義第八講上篇Android 教學講義第八講中篇(1)Android 4.0 SDK 開發功能介紹與下載網址Android 4.0 SDK 下載安裝完整教學Android 4.0 模擬器安裝設定教學課程講義Android 4.0 的 Holo theme 佈景主題介紹與設定教學課程講義Android 4.2 升級功能簡介Android 4.2 SDK & ADT Bundle 下載安裝教學2013年第1講: Android Application Project 之建立2013年最新 Android Studio 開發工具下載安裝教學最新 Android App 網路連線程式設計範例 (第一講) - Volley HTTP Library 入門教學Android App 與 Android Application Project 是什麼?Android 4.4 KitKat 與 Android 4.4 SDK 開發功能介紹Android SDK 下載安裝中文教學課程講義 ( 2013年11月新版,ADT Bundle )


以下為本篇 Android 教學講義的開始。


此篇課程講義目的,是想讓Android程式開發者暸解Android商業模式為何?本課程講義會從硬體開發角度,看 Android 在嵌入式系統的商業機會。以及從軟體開發角度,看Android手機應用程式開發者如何應用收費下載或者手機應用程式廣告機制來獲取商業利潤。以下四點為此篇講義的主軸:
  • 什麼是 嵌入式系統 ?
  • 什麼是 Android NDK ?
  • 什麼是 Android Market ?
  • 什麼是 Android 手機應用程式廣告?

如果您是初次閱讀本講義教材者,為求學習之完整性,因此煩請您先從本講義之第一講第二講開始閱讀,謝謝!


什麼是嵌入式系統?


【孫傳雄研究室 編著】由於,台灣與中國大陸的資訊產業結構仍以硬體製造業為主。因此,Android在此區域的商業應用當然還是以嵌入式系統硬體之移植為大宗。

不過,不少人聽到嵌入式系統,一定是一頭霧水,不知其為何物。因此,本講義先就嵌入式系統進行以下之說明:

何謂嵌入式系統呢?引述維基百科說明如下:

嵌入式系統(Embedded system),是一種「完全嵌入受控器件內部,為特定應用而設計的專用電腦系統」,根據英國電器工程師協會( U.K. Institution of Electrical Engineer)的定義,嵌入式系統為控制、監視或輔助設備、機器或用於工廠運作的裝置。

與個人電腦這樣的通用電腦系統不同,嵌入式系統通常執行的是帶有特定要求的預先定義的任務。由於嵌入式系統只針對一項特殊的任務,設計人員能夠對它進行最佳化,減小尺寸降低成本。由於嵌入式系統通常進行大量生產。所以單個的成本節約,能夠隨著產量進行成百上千的放大。(資料來源:維基百科)

更簡單地說,舉凡您隨身攜帶的智慧型手機、小孩在家中玩的電玩遊戲機、去銀行領錢使用的自動櫃員機、到捷運或高鐵買車票的自動售票機與閘門感應器、甚至到便利超商影印文件的影印機設定裝置。它們都是嵌入式系統的產品應用。

而這些嵌入式系統大多數和個人電腦一樣,裡頭安裝有作業系統軟體。只不過,它們需要的是精簡化、客製化且效能最佳化的作業系統。所以個人電腦所安裝的作業系統並不適用於嵌入式系統當中。

亦因如此,不少的作業系統業者皆有推出以嵌入式系統需求為主的嵌入式作業系統(Embedded operating system)。這裡頭還區分成個人數位處理器專用、智慧型手機專用、數位媒體播放器專用、工業機器人專用、路由器專用以及通用型的嵌入式作業系統。(資料來源:維基百科)

其中,免費、開放原始碼且適用範圍廣泛的Android,是近來最熱門的嵌入式作業系統之一。

nook_android 

Barnes&Noble連鎖書店的Android平台電子書閱讀器
(網站畫面擷取自
Barnes&Noble官網)


什麼是 Android NDK ?


不過,真正觸發這股將Android大量移植(Porting)至嵌入式系統的主因,並非完全是Android的開放原始碼與免費策略,而是2009年6月25日Android官方釋出了Android原生開發工具包(Android Native Development Kit, NDK)

在還沒有Android NDK之前,嵌入式系統開發者僅能在自家的硬體上,安裝Android官方所提供的作業系統版本。或是透過Android SDK軟體開發工具包的那些API來發展嵌入式系統相關的應用程式。如果,想要再往系統底層創造屬於自己的原生函式庫(Native libraries)的話,除了不容易之外,也不合乎Android先前的規定。

此點對於嵌入式系統業者來說,是一件極為困擾之事。

畢竟,嵌入式系統的形態多元,既便Android可以被安裝在不同的硬體規格之上。但是,倘若開發者無法針對特定的嵌入式系統需求進行Android的客製化動作時,Android在嵌入式系統之中所能發揮的效益絕對會受到影響。

但,有了Android NDK所提供的一系列開發工具之後,一切皆變得有希望了。

因為,使用Android NDK的嵌入式系統開發者能夠順利地穿越應用程式框架以及Dalvik VM所立下的藩籬,自行以C/C++程式語言來發展更底層的原生函式庫。

並且,開發者可以在應用程式當中,透過Java原生介面(Java Native Interface, JNI)合法地呼叫使用這些自行發展的原生函式庫。更重要的是,開發者可以將開發好的原生函數庫及應用程式,一併封裝包裏成.apk應用程式封裝檔案,並佈署於嵌入式系統硬體設備當中。(資料來源:Android Developers 官網)

因此,您最近在市面上應該會看到不少客製化過的Android相關嵌入式系統產品。例如智慧型手機、電子書閱讀器、汽車衛星導航器、數位媒體播放器、以及輕省筆電等…。甚至,包括近日Google所推出的Google TV網路電視平台,也是以客製化過後的Android作業系統做為基礎。

使用Android作業系統的Google TV
(資料來源:
Google TV 官網)


什麼是 Android Market ?


當然,就個人或中小企業來說,並非有那麼大的資金與人力自行發展Android相關嵌入式系統產品。但,仍有可能透過Android手機應用程式的開發,獲取相對的商業收益。

關於此部份,應該從Apple iPhone結合旗下的線上應用程式商店服務App Store後,它所開創的手機應用程式之新商業模式談起。

因為,iPhone讓用戶得以透過手機上網的方式,便能直接免費或者小額付費地下載安裝App Store當中超過20萬種的iPhone應用程式。此種簡易的方式,有效地提昇了手機用戶安裝應用程式的使用門檻,也刺激了手機用戶付費安裝應用程式的意願。

另一方面,對於iPhone應用程式的開發者來說,他們只需支付年費99元美金的iPhone SDK 軟體開發工具包費用(此為標準版方案)給Apple公司,便可運用iPhone SDK軟體開發工具包開發iPhone應用程式並在App Store上架發行。而且,每當使用者付費購買應用程式時,Apple會與該應用程式的軟體開發者三七拆帳,即應用程式開發者可得70%的銷售收入。

此種方式大幅地降低了應用程式開發者銷售應用程式的門檻,因此,國內外有越來越多的個人或者SOHO族加入了iPhoe應用程式的開發行列。(註:若要不公開在App Store上架銷售,採獨立發行應用程式者,則需加入年費299元美金的企業版方案(Enterprise Program))

iPhone的App Store商業模式之成功,似乎讓Google倍感壓力。因此,Google就在2008年10月22日正式推出Android應用程式商店服務Android Market。與iPhone應用程式不同的是,Android的開發工具是完全免費的,因此,若你只是想嘗試開發Android應用程式,也可以直接免費下載安裝Android SDK軟體開發工具包使用。

然而,如果你是要上架至Android Market發行,則需支付帳號註冊費25元美金給Google公司,這個費用不是年費,只需支付一次便可以永久使用該帳號。另外,在銷售付費應用程式的拆帳模式上,Android Market與App Store一樣為三七拆帳,即應用程式開發者可得70%的銷售收入。

不過,目前令人遺憾的是,Google Android Market並尚未開放台灣以及中國大陸地區的手機用戶線上購買Android付費應用程式,亦即此區域的手機用戶在Google Android Market之中只能下載安裝Android免費應用程式(相關付費與免費之區域,請詳見此連結)。

這也是目前Android華文應用程式不多的主因之一,然而,據Taiwan News於2010年7月28日指出:『Google Android Market 最快2010年底前在台灣、香港能夠同步上線。』我們相信開放上線之後,會帶動更多個人、SOHO族以及企業投入Android華文應用程式開發的行列。

另一方面來說,由於Android支援多國語系的應用程式設計,因此,在商業銷售的前提假設之下,開發者所鎖定的目標顧客群與市場應可更加地國際化,而不要僅限定於華文地區的手機用戶。然而,在此特別要提醒讀者的是,應用程式的國際化,除了界面文字的多國語系設計外,更要考量不同國別使用者的需求與使用者行為。

Android Market 官方介紹短片
(資料來源:Androiddevelopers Youtube頻道 
)


什麼是 Android 手機應用程式廣告?


此外,開發者除了透過應用程式付費下載的模式賺取收入之外,亦能在應用程式當中放置廣告做為收入的來源之一。

由於,Google在2010年5月27日併購了重量級行動廣告業者Admob。因此,它目前已成為行動廣告產業的龍頭。據聯合新聞網於2010年5月26日表示:『行動廣告市場的規模預計到2014年時,會飆升到目前的八倍,總額達17.8億美元。Google把AdMob納入旗下後,可望吸引更多廣告商與軟體開發公司擁抱Google與Android作業系統,以便在這個飛躍成長的市場上分一杯羹。』

目前,包括Google既有的AdSense for Mobile Apps或者剛併購的Admob,它們皆支援放置廣告於Android或iPhone應用程式當中。

然而,由於AdSense for Mobile Apps在亞太地區尚未開放。因此,台灣或中國大陸地區的開發者多半是使用Admob所提供的行動廣告服務。

關於廣告收入的部份,Admob採行每次點擊成本 (CPC)與每千次展示成本 (CPM)兩種模式,詳細的計費方式可詳見此連結

android_admob Admob為手機應用程式開發者所提供的廣告服務
(網站畫面擷取自
admob官網)

至於,Apple在2010年併購Quattro Wireless行動廣告業者後(Quattro Wireless被購併後將關閉),所推出的iAd行動廣告服務。因為,目前iAd只支援放置廣告於iPhone應用程式之中,因此,並不適用於
Android手機應用程式的開發者。

第三講完畢!歡迎繼續閱讀第四講”Android 手機程式開發教學課程《免費講義 4》 :如何下載安裝 Android SDK、Eclipse IDE、ADT Plugin for Eclipse以及Sun JDK ?”。

如果您對於Android手機應用程式開發有興趣,歡迎閱讀我們在網路上發表的Android手機應用程式開發教學系列講義。

本講義目前網路連載發表有:Android手機程式開發教學講義懶人包Android 教學講義第一講Android 教學講義第二講Android 教學講義第三講Android 教學講義第四講Android 教學講義第五講Android 教學講義第六講Android 教學講義第七講上篇Android 教學講義第七講下篇Android 2.3補充教材1Android 2.3補充教材2Android 3.0平板電腦完整功能搶先看(From T-Mobile)Android 3.0 平板電腦應用程式開發:第一講Android 3.0 SDK 正式版登場Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦Android 2.3 補充教材3Android 3.0 平板電腦應用程式開發:第二講Android 教學講義第八講上篇Android 教學講義第八講中篇(1)Android 4.0 SDK 開發功能介紹與下載網址Android 4.0 SDK 下載安裝完整教學Android 4.0 模擬器安裝設定教學課程講義Android 4.0 的 Holo theme 佈景主題介紹與設定教學課程講義Android 4.2 升級功能簡介Android 4.2 SDK & ADT Bundle 下載安裝教學2013年第1講: Android Application Project 之建立2013年最新 Android Studio 開發工具下載安裝教學最新 Android App 網路連線程式設計範例 (第一講) - Volley HTTP Library 入門教學Android App 與 Android Application Project 是什麼?Android 4.4 KitKat 與 Android 4.4 SDK 開發功能介紹Android SDK 下載安裝中文教學課程講義 ( 2013年11月新版,ADT Bundle )


喜歡閱讀我們的講義嗎?歡迎加入我們所成立的《Android 手機程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),謝謝!


著作權聲明



Android 手機程式開發教學課程《免費講義 3》 :Android的商業魅力 第一版本完成日:2010年9月1日

本講義之內文、排版等著作權或其他智慧財產權歸屬 孫傳雄 與 孫傳雄研究室 所有,非經書面同意禁止任何形式之翻印、全文轉貼或者授課使用行為。但例外允許在網際網路上引用此講義之網址連結。

本講義之內文所提及或者引用的公司名稱、產品名稱以及所引用的文字、商標、Youtube短片、產品相片或者網站頁面,均為其所屬公司所擁有,特以聲明。

版權所有 翻印必究



2010年9月7日

[Android 教學] Android 的系統架構

Android 系統架構


新版 Android SDK 下載安裝中文教學課程講義,歡迎延伸點閱!


我們的《Android 手機應用程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),歡迎您的加入,謝謝!


本講義目前網路連載發表有:Android手機程式開發教學講義懶人包Android 教學講義第一講Android 教學講義第二講Android 教學講義第三講Android 教學講義第四講Android 教學講義第五講Android 教學講義第六講Android 教學講義第七講上篇Android 教學講義第七講下篇Android 2.3補充教材1Android 2.3補充教材2Android 3.0平板電腦完整功能搶先看(From T-Mobile)Android 3.0 平板電腦應用程式開發:第一講Android 3.0 SDK 正式版登場Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦Android 2.3 補充教材3Android 3.0 平板電腦應用程式開發:第二講Android 教學講義第八講上篇Android 教學講義第八講中篇(1)Android 4.0 SDK 開發功能介紹與下載網址Android 4.0 SDK 下載安裝完整教學Android 4.0 模擬器安裝設定教學課程講義Android 4.0 的 Holo theme 佈景主題介紹與設定教學課程講義Android 4.2 升級功能簡介Android 4.2 SDK & ADT Bundle 下載安裝教學2013年第1講: Android Application Project 之建立2013年最新 Android Studio 開發工具下載安裝教學最新 Android App 網路連線程式設計範例 (第一講) - Volley HTTP Library 入門教學Android App 與 Android Application Project 是什麼?Android 4.4 KitKat 與 Android 4.4 SDK 開發功能介紹Android SDK 下載安裝中文教學課程講義 ( 2013年11月新版,ADT Bundle )


以下為本篇 Android 教學講義的開始。


此篇為 Android 手機程式開發教學課程免費講義的第二講。這篇課程講義主要希望讓 Android 手機程式開發新手能夠暸解 Android 在手機應用程式開發上的一些系統概念與特色。

【孫傳雄研究室 編著】先前,Android Developers官方網頁早已用英文詳列了九項的系統特色。不過,本講義為了讓比較不熟悉 Android 的朋友可以更簡明地暸解這些 Android 的系統概念與特色,因此我們試圖重新用較淺顯易懂的文字描述,將Android的九項系統特色轉換成以下九項問題,做一詳盡之說明。
  • 什麼是 Android 的應用程式框架 (Application framework)?
  • 什麼是 Dalvik 虛擬機器 (Dalvik virtual machine)?
  • 什麼是 Webkit 網頁引擎 (Web browser engine) ?
  • 什麼是 OpenGL ES?
  • 什麼是 SQLite 資料庫?
  • Android 支援那些媒體格式檔案?
  • 什麼是 GSM 手機電話功能 (GSM Telephony)?
  • Android 支援那些感應器(Sensor)?
  • 什麼是 Android SDK?
此外,本講義為求讀者學習的完整性。倘若您尚未閱讀過Android 手機程式開發教學課程免費講義的第一講,煩請您先連結閱讀第一講後,再來閱讀第二講。


什麼是 Android 應用程式框架 (Application framework)?



Android 為了節省開發者撰寫應用程式的時間、加速應用程式開發的速度。所以在應用程式與內部系統環境之間設置了一個讓程式更簡易溝通的界面,它稱之為應用程式框架(Application framework)。

對於應用程式的開發者來說,他得以透過Java程式呼叫應用程式框架所提供的應用程式界面(Application Programming Interface, API),來實作更底層的函式庫(Libraries)功能。

在這個應用程式框架之中,包含了活動管理者(Activity Manager)、視窗管理者(Window Manager)、內容提供者(Content Providers)、外觀元件系統(View System)、程式管理者(Package Manager)、電話功能管理者(Telephony Manager)、資源管理者(Resource Manager)、地理位置管理者(Location Manager)以及訊息管理者(Notification Manager)等服務或者系統。

總體來說,開發者通常只需要理解應用程式與應用程式框架之間的運作關係、以及如何透過Java程式語言實作的方法即可,並不太需要探究更內部的系統環境。

然而,假若是要移植Android至嵌入式系統(例如洗衣機的控制界面)的產品開發者,仍有必要理解Android系統內部的函式庫、Android執行環境與Linux核心的細節。

image

Android的系統架構圖
(本講義修改重繪自
Android Developers官網)


什麼是 Dalvik 虛擬機器 (Dalvik virtual machine)?



早期應用程式的原始程式碼,多半被組譯器或編譯器轉換成執行檔之後,便可以立即在作業系統當中執行。

不過,這種方式常常會受限於作業系統環境的不同,而無法相容執行。

比如副檔名為.exe或.com的應用程式執行檔就只能在Microsoft Windows或者DOS作業系統當中執行。倘若,它要在Mac OS當中執行者,還需要將程式碼重新改寫並變成Mac OS可執行的檔案夾格式 .app,才得以在Mac OS作業系統當中執行。

隨後,Java的誕生為此帶來了觀念上的革新。當應用程式開發者在編寫Java原始程式碼後,會先透過Java程式語言的編譯器(Compiler)編譯成二進位碼形式(bytecode)的.class類別檔。這個類別檔並非是在作業系統當中”直接”執行,而是會在具有Java虛擬機器(Java virtual machine, JVM)的作業系統環境當中被”轉換””執行。

所以,無論是那種款式的作業系統,只要安裝含有Java虛擬機器(Java virtual machine, JVM)的Java平台(Java Platform),就可以執行以Java程式語言所開發的應用程式。

因為,Android也是採行Java程式語言進行應用程式的開發,所以,它在觀念與架構上皆與Java平台相去不遠。

然而,Android並非使用Java虛擬機器(Java virtual machine, JVM),而是自行發展的Dalvik虛擬機器(Dalvik virtual machine, Dalvik VM),所以它的檔案產生過程仍與Java應用程式檔案有所不同。為讓大家更暸解這方面的內容,本講義做以下之說明:

Andorid應用程式開發者在運用Java程式語言編寫完原始程式碼後,其儲存的檔案副檔名為 .java,.java檔案接著會被Java程式語言編譯器(Compiler)編譯成副檔名為 .class的檔案(其為二進位碼形式(bytecode))。

如果是一般的Java應用程式,大概到這一步就可以直接透過Java虛擬機器(Java virtual machine, JVM)在作業系統之中執行。只不過,因為在Android系統之中並不是使用JVM,而是Dalvik虛擬機器(Dalvik virtual machine, Dalvik VM)。所以,副檔名.class的檔案還要再被Android SDK(軟體開發工具包)當中的dx工具再轉換成為Dalvik VM可以執行的檔案(副檔名為 .dex, Dalvik Executable,同為二進位碼形式)。

最後,Android SDK會將所有檔案壓縮包裏成單一的Android封裝檔(副檔名為 .apk,Android application package),以供手機用戶直接下載執行。關於更詳盡Android應用程式檔案產生過說明,您可以延伸閱讀Understanding the Android Build Process一文。 

image 
Android應用程式檔案的產生過程簡圖 

另一方面,當Android手機的使用者下載一個應用程式時,安裝下載的是.apk封裝檔。該應用程式被執行時,Android系統最底層的Linux 核心則會為每一個應用程式產生一個Linux處理程序(Linux Process),並在單一的Dalvik VM當中執行。

特別的是,在Andorid當中的每一個應用程式都會對應”一個”專屬它的Dalvik VM。如此的設計,可以確保每一個應用程式之間都是相互獨立而彼此不影響。若對Dalvik VM的內部運作有興趣者,您可以延伸觀賞Android: Dalvik VM Internals影片。
 


什麼是 Webkit 網頁引擎 (Web browser engine)?



在Andorid當中,如同於個人電腦般也內建網頁瀏覽器(Web Browser)。此瀏覽器的名稱叫做Google Chrome Lite。它與iOS當中內建的Safari網頁瀏覽器一樣是採用Webkit網頁引擎(Web browser engine)。如果您有在個人電腦中使用過它的孿生兄弟Google 瀏覽器(Google Chrome)的話,就可體驗Webkit網頁引擎在載入網頁的良好效能。

看到這裡,您一定會有個疑問:『網頁瀏覽器跟網頁引擎究竟是什麼關係呢?』

簡單地說,如同汽車需要引擎來產生動力一般,網頁瀏覽器裡頭有一個肩負網頁載入、HTML相關程式碼解釋、畫面排版與呈現的重要軟體元件,那個軟體元件就是網頁引擎。

早期的瀏覽器並不太強調它是使用什麼樣的網頁引擎,不過,隨著使用者對於網頁載入效能與呈現美感要求日增,越來越多的瀏覽器業者便開始強調它們所使用的網頁引擎是那一款式。

其中,Webkit是目前最多知名智慧型手機作業系統採用的網頁引擎。這些作業系統包括了Symbian OS、iOS、Android與Palm webOS等…。

對於大多只有3吋左右螢幕的智慧型手機來說,Webkit網頁引擎有一個相當大的優勢,那就是它可以讓正常網頁(非手機版本)如同在個人電腦般,自動調整成頁寬(auto fit page)的方式完整縮小呈現在手機的小螢幕中,如此可以方便使用者立即在手機上看到正常網頁的全觀(如下圖所示),如果要近看某區塊之內容時,只要將該區塊放大即可。這是其它舊式網頁引擎不容易做到的事,但應用Webkit網頁引擎卻可輕易達成。

android模擬器_1

Webkit的網頁自動調整成全頁寬(auto fit page)功能

由於,Android API 已內含Webkit相關的函式庫。因此,開發者得以透過呼叫API的方式將Webkit相關功能整合至應用程式之中。你可能會問:『什麼狀況之下,應用程式需要用到Webkit的相關功能呢?』比如,應用程式需要內嵌顯示網頁內容或者需要執行Java Script客戶端網頁程式碼等狀況時,皆可運用Webkit函式庫來進行整合的動作。


什麼是 OpenGL ES?



Android的圖形處理分成兩個部份,一為2D圖形處理,這部份是採Android自行規範定義的2D圖形處理函式庫(2D graphics library)。二為3D圖形處理,此部份則採行OpenGL ES 3D圖形處理函式庫。

關於2D圖形處理方面,Android應用程式開發者得以透過呼叫API的方式進行2D圖形處理函式庫相關的圖形繪製以及動畫處理。

更簡單地說,比如你想在手機上開發一個類似大頭貼機器的應用程式,亦即當使用者透過手機上的相機拍下照片後,得以在照片上加上一些相框圖案。此時該應用程式就可以使用2D圖形繪製的功能。又比如這個大頭貼機器的應用程式想為照片加點淡出淡入的動畫效果時,則會使用到動畫處理的功能。

至於3D圖形處理方面,Android並非使用自行發展的函式庫,而是採用OpenGL ES 3D圖形處理函式庫。因為,這個函式庫在3D圖形處理上有相當優異的表現,因此,像是SONY PlayStation 3(PS3)電視遊戲主機也是採用OpenGL ES做為它們在3D遊戲的圖形處理函式庫。

另外,由於OpenGL ES是由OpenGL輕量化而來,所以,特別適合硬體規格不如個人電腦高的智慧型手機應用。目前,除了Android之外,還有Symbian OS、BlackBerry OS、Palm webOS、iOS亦採用OpenGL ES做為3D圖形處理的函式庫。

對於Android應用程式開發者來說,能夠運用OpenGL ES 3D圖形處理函式庫來處理相關3D立體圖形相關的應用程式或遊戲開發工作。若有興趣暸解OpenGL ES在Android上的3D表現實況,您可以進一步觀賞Android 3D Live Wallpaper: Particle Storm短片。 

android模擬器_5  

在Android手機上畫面逼真的3D 撞球遊戲
(畫面擷取自
Android Market)


什麼是 SQLite 資料庫?



開發者在開發應用程式的過程之中,難免會有資料儲存的需求,比如需要儲存應用程式的設定資料或者上一次遊戲關卡的資料等…。因此,Android內建了一個名為SQLite的關聯式資料庫引擎(Relational database engine)。

因為,應用程式當中使用了SQLite,所以,手機用戶得以將相關資料儲存在手機的儲存設備當中,而無需再以網路連線的方式存取遠端的資料庫。

如果你有過大型關聯式資料庫的開發經驗(如Microsoft SQL Server或者Oracel Database等…),應該可以很快地適應SQLite的程式編寫。因為它仍延襲SQL-92標準,亦即你可以使用SQL(Structured Query Language,結構化查詢語言)來存取SQLite資料庫當中的資料。

另外,過去大型關聯式資料庫多數採取主從架構(Client–server model)的模式,所以,應用程式與資料庫之間具有主從的結構關係。當應用程式用戶端需要存取資料庫時,必需連線至此資料庫的伺服器當中進行資料的新增、刪除或修改之動作。

然而不同的是,Android應用程式的開發者則採呼叫API的方式來與SQLite作溝通。同時,SQLite當中的資料庫是以單一檔案的方式儲存在手機硬體當中。

由於,SQLite具有檔案小、速度快的優點,所以目前也廣泛用於其它智慧型手機的作業系統,比如iOS、Symbian OS或者BlackBerry OS等…。
 

Android 支援那些媒體格式檔案?



Android支援相當多元的媒體檔案格式,本講義整理節錄自Android Developers官網詳細列表如下:

聲音檔:3GPP (.3gp) 、MPEG-4 (.mp4, .m4a)、MP3 (.mp3)、Type 0 and 1 (.mid, .xmf, .mxmf)、RTTTL/RTX (.rtttl, .rtx)、OTA (.ota)、iMelody (.imy)、Ogg (.ogg)、WAVE (.wav)。

圖像檔:JPEG (.jpg)、GIF (.gif)、PNG (.png)、BMP (.bmp)。

影音檔:3GPP (.3gp)、MPEG-4 (.mp4)。

對於應用程式開發者而言,他可以在應用程式之中整合聲音、圖像或影音的播放與錄製功能,提高應用程式的聲光效果,並且強化其在多媒體視聽娛樂之上的趣味性。

android模擬器_6

用Android手機也能播放與錄製Ustream串流影音
( (畫面擷取自
Android Market) 


什麼是 GSM 手機電話功能 (GSM Telephony)?



2G的行動通訊系統之中,多半區分為GSMCDMA

過去,美國的行動通訊系統大多是採CDMA規格,但像在歐洲或者台灣則以GSM規格為主。

因為,GSM在功能上有些異於CDMA之處(例如傳送手機簡訊的PDU格式),所以,Android為了能廣為各種行動通訊系統所使用,特別在系統上也同時支援GSM手機電話的特殊規格。(註:Android手機不只能支援目前常使用的3G行動通訊系統,也能被2G2.5G3.5G或者4G行動通訊系統所使用。這些規格取決於手機製造業者與電信門號業者)

就總體的手機電話功能(Telephony)來說,Android的應用程式開發者可以發揮創意與巧思,發展與通話、來電顯示、來電鈴聲、來電圖示以及手機簡訊等相關的應用程式。 

android模擬器_3 

Android手機電話功能畫面


Android 支援那些感應器(Sensor)?



Andorid應用程式開發者所能發揮的空間,除了取決於作業系統的版本之外,也指涉了手機硬體上的週邊設備。亦即,開發者能夠應用智慧型手機上的數位相機鏡頭(手機照相機)、衛星定位裝置、電子羅盤(方向感應器)與重力感應器等週邊設備,去創造更多深具創新價值的應用程式。

比如永慶房屋手機宅速配 For Android應用程式,它即應用了Android手機當中的衛星定位裝置與電子羅盤(方向感應器)進行房屋仲介方面的相關功能開發。

關於手機感應器的部份,除了重力感應器、電子羅盤(方向感應器)之外,Android還支援磁場感應器、溫度感應器、光線感應器、壓力感應器、陀螺儀與距離感應器等…。雖然,Andorid支援那麼多種感應器,但並非每台手機都具有這些設備。因此開發者在開發應用程式時,仍應考量感應器的普及程度。就目前來說,市面上的Andorid手機具備重力感應器、電子羅盤(方向感應器)為大宗。 

android模擬器_7 

把Android手機當水平尺來用
(重力感應器的應用,畫面擷取自
Android Market)  


什麼是 Android SDK?



Google為了讓更多開發者參與Android應用程式的開發行列,因此,它開放給大眾免費下載安裝Android 軟體開發工具包(software development kit, SDK)。而且,這個工具包可以安裝在Windows、Linux以及Mac等不同的作業系統環境當中。

Android SDK除了提供了完整的Android API之外,更包括了Android應用程式除錯工具(Android Debug Bridge, ADB)以及Android 手機模擬器(Android Emulator,此為在個人電腦上模擬Android手機的環境)。如此免費與開放是Android之所以在近來深受手機應用程式開發者喜愛的主因之一。

除了Android SDK之外,其它配合它的軟體也是免費性質。這些軟體包括了Eclipse整合開發環境(Integrated Development Environment, IDE)以及Eclipse專用之Android開發工具外掛(ADT Plugin for Eclipse)。再加上原本就免費開放下載的Java開發工具包(Java Development Kit, JDK)

開發者幾乎不用花費到一毛錢,便可以自己建構一個很完整且便利的Android應用程式開發環境,並專心構思與發展屬於自己的應用程式。不過,如果開發者要上傳應用程式到Android Market網站供大家免費下載或收費販售時,則需要再付25美元的帳號註冊費。

android模擬器_2 

Android應用程式的開發環境

至於,Google在近日所推出的 App Inventor 線上開發工具,則為Android應用程式開發者創造出了更方便、更直覺與無程式碼的圖形化開發環境。

我們在試用過App Inventor 後,發現它相當適合Android應用程式的雛型發想階段,開發者可以先運用它來構思一些應用程式的功能。但是,由於它在操作上力求簡單化,由此也可能產生缺乏開發彈性的問題,加上目前它並不支援中文字元,所以開發者若要發展Android應用程式,本講義仍建議大家以上述的開發環境為主,App Inventor 則可做為Android應用程式開發之前的雛型(prototyping)系統設計工具。

最後,Android官方建構了一個專門提供給Android應用程式開發者閱讀的網站-Android Developers,它提供了相當詳盡且時常更新的Android應用程式開發之英文資料。想要自修Android應用程式開發的朋友,本講義非常建議大家常去閱讀這個網站。

第二講完畢!歡迎繼續閱讀第三講”Android 手機程式開發教學課程《免費講義 3》 : Android的商業魅力”。

如果您對於Andorid手機應用程式開發有興趣,歡迎閱讀我們在網路上發表的Android手機應用程式開發教學系列講義。

本講義目前網路連載發表有:Android手機程式開發教學講義懶人包Android 教學講義第一講Android 教學講義第二講Android 教學講義第三講Android 教學講義第四講Android 教學講義第五講Android 教學講義第六講Android 教學講義第七講上篇Android 教學講義第七講下篇Android 2.3補充教材1Android 2.3補充教材2Android 3.0平板電腦完整功能搶先看(From T-Mobile)Android 3.0 平板電腦應用程式開發:第一講Android 3.0 SDK 正式版登場Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦Android 2.3 補充教材3Android 3.0 平板電腦應用程式開發:第二講Android 教學講義第八講上篇Android 教學講義第八講中篇(1)Android 4.0 SDK 開發功能介紹與下載網址Android 4.0 SDK 下載安裝完整教學Android 4.0 模擬器安裝設定教學課程講義Android 4.0 的 Holo theme 佈景主題介紹與設定教學課程講義Android 4.2 升級功能簡介Android 4.2 SDK & ADT Bundle 下載安裝教學2013年第1講: Android Application Project 之建立2013年最新 Android Studio 開發工具下載安裝教學最新 Android App 網路連線程式設計範例 (第一講) - Volley HTTP Library 入門教學Android App 與 Android Application Project 是什麼?Android 4.4 KitKat 與 Android 4.4 SDK 開發功能介紹Android SDK 下載安裝中文教學課程講義 ( 2013年11月新版,ADT Bundle )


喜歡閱讀我們的講義嗎?歡迎加入我們所成立的《Android 手機程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),謝謝!


著作權聲明



Android 手機程式開發教學課程《免費講義 2》 :Android的開發魅力 第一版本完成日:2010年8月31日

本講義之內文、排版等著作權或其他智慧財產權歸屬 孫傳雄 與 孫傳雄研究室 所有,非經書面同意禁止任何形式之翻印、全文轉貼或者授課使用行為。但例外允許在網際網路上引用此講義之網址連結。

本講義之內文所提及或者引用的公司名稱、產品名稱以及所引用的文字、商標、Youtube短片、產品相片或者網站頁面,均為其所屬公司所擁有,特以聲明。

版權所有 翻印必究



2010年9月2日

[Android 教學] Android 智慧型手機是什麼 ?

Android智慧型手機介紹


新版 Android SDK 下載安裝中文教學課程講義,歡迎延伸點閱!


我們的《Android 手機應用程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),歡迎您的加入,謝謝!


本講義目前網路連載發表有:Android手機程式開發教學講義懶人包Android 教學講義第一講Android 教學講義第二講Android 教學講義第三講Android 教學講義第四講Android 教學講義第五講Android 教學講義第六講Android 教學講義第七講上篇Android 教學講義第七講下篇Android 2.3補充教材1Android 2.3補充教材2Android 3.0平板電腦完整功能搶先看(From T-Mobile)Android 3.0 平板電腦應用程式開發:第一講Android 3.0 SDK 正式版登場Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦Android 2.3 補充教材3Android 3.0 平板電腦應用程式開發:第二講Android 教學講義第八講上篇Android 教學講義第八講中篇(1)Android 4.0 SDK 開發功能介紹與下載網址Android 4.0 SDK 下載安裝完整教學Android 4.0 模擬器安裝設定教學課程講義Android 4.0 的 Holo theme 佈景主題介紹與設定教學課程講義Android 4.2 升級功能簡介Android 4.2 SDK & ADT Bundle 下載安裝教學2013年第1講: Android Application Project 之建立2013年最新 Android Studio 開發工具下載安裝教學最新 Android App 網路連線程式設計範例 (第一講) - Volley HTTP Library 入門教學Android App 與 Android Application Project 是什麼?Android 4.4 KitKat 與 Android 4.4 SDK 開發功能介紹Android SDK 下載安裝中文教學課程講義 ( 2013年11月新版,ADT Bundle )


以下為本篇 Android 教學講義的開始。


此篇為Android 手機程式開發教學課程免費講義的第一講。本課程講義主要是讓Android手機程式開發新手初步地暸解:什麼是智慧型手機?以及什麼是Android?


什麼是智慧型手機 ?


【孫傳雄研究室 編著】長久以來,智慧型手機(Smartphone)的發展歷程一直有兩派的講法。

android模擬器_4第一派講法認為,智慧型手機是從傳統手機不斷地演進而來。因為,傳統手機的功能需求越來越增加,因此它逐漸地從撥打電話的功能,擴增成具有類似電腦作業系統般的智慧型手機功能。

這種論點並不意味著傳統手機就沒有作業系統,只是過去傳統手機裡頭的作業系統是封閉性的,除了有些機種可以透過Java Applet程式下載的方式來擴增一些小型遊戲或小型應用程式外,應用程式的擴增與系統的表現皆不若智慧型手機來的強大。

第二派講法認為,智慧型手機是源於個人數位助理器(Personal Digital Assistant, PDA)。因為,早期的筆記型電腦價格昂貴、且在體積與重量上都不便於隨身攜帶,因此許多的商務人士改採掌上型的個人數位助理器來進行出門在外的業務處理需求。

這類具有3吋以上觸控式液晶螢幕、可充電、具軟硬體擴充性與開放性作業系統的掌上型電腦,在過去的歲月中曾經讓很多人們愛不釋手。

然而,隨著筆記型電腦的價格越來越低、體積與重量也不若過往那麼地厚重之下,個人數位助理器的市場隨之萎縮。後來,有些業者為了擴大市場的規模,因此逐漸將個人數位助理器結合手機通訊的功能,而形成目前智慧型手機的市場。

上述兩派講法其實都其產業的源頭,第一派講法來自通訊業、而第二派講法則來自於資訊業。智慧型手機正好是這兩股產業的匯流,它即是一台不折不扣的個人數位助理器、也是一台可以與人聯繫溝通的手機電話。

在此之中的要角,即智慧型手機作業系統莫屬。

因為有它,讓應用程式開發者可以完全不需要暸解手機硬體的內部構造與軔體語言,而透過不同作業系統業者所提供的軟體開發工具包(Software Development Kit, SDK,)以及高階的程式語言(如Java或Objective-C),便能自行發揮創意巧思去設計開發可安裝於智慧型手機之中的應用程式。

目前智慧型手機作業系統包括有Symbian OS、BlackBerry OS、Windows Mobile、Linux、Palm webOS、iOS與Android。其中Symbian OS與BlackBerry OS分別來自於通訊產業當中的巨擘NOKIA與RIM。而Windows Mobile(已改名為Windows Phone)、iOS、Linux與Palm webOS則分別源於資訊產業當中的重量級公司微軟、蘋果、Linux(非營利組織)與Palm。


什麼是 Android ?


Web其中,在此講義要介紹的是網路界巨人Google於2007年11月5日所推出的Android

Android是一套建構在Linux核心(Linux Kernel)之上的智慧型手機作業系統。使用者可以透過 Android 撥打電話、傳送簡訊、收發電子郵件、查看行事曆、上網、玩遊戲、享受影音娛樂、甚至透過應用程式的下載,達成許多意想不到的創新功能。

由於,Android在軟體版本授權上是採用Apache Software License 2.0的開放原始碼方案,因此,在這個版權協議之下,智慧型手機製造商可免費地安裝Android作業系統至其生產製造的硬體之中,有效地降低了軟體的採購成本。截至2010年8月2日為止,Android在市面上免費流通的軟體版本共有1.5、1.6、2.1與2.2。其中目前以2.1版本的使用量為最多。(資料來源:Android Developers官方網頁)

對於智慧型手機製造商來說,透過免費取得作業系統而降低軟體採購成本是一項很大的誘因,所以,截至目前為止共有Acer(宏碁)、Alcatel、ASUS(華碩)、CCI、Dell、Foxconn(富士康)、Garmin、Haier、HTC(宏達電)、Huawei(華為)、Kyocera、Lenovo、LG、Motorola、NEC、Samsung、Sharp、Sony Ericsson、Toshiba與ZTE等二十家智慧型手機製造商以及其它數十家行動通訊公司、半導體公司、軟體公司以及商業公司陸續加入了開放手機聯盟(Open Handset Alliance)並投入生產、銷售或者研發Android作業系統的相關軟硬體產品與服務。

Android 也因為有如此地百花齊放,因此即使Google的智慧型手機Nexus One有點出師不利,但Android卻能在2010年第二季以市佔率17.2%,擊敗Apple iOS(iPhone的作業系統,市佔率14.2%)奪下全球智慧型手機作業系統的老三地位, 排行僅次於市場龍頭老大Nokia Symbian OS(市佔率41.2%)與RIM BlackBerry OS(市佔率18.2%)。(資料來源:Gartner)

更據Digitimes Research分析師兼專案經理林俊吉的預估,2010年Android全年市佔率將達兩成,成為智慧型手機作業系統的第二大平台。(資料來源:經濟日報)

Android 以新秀之姿在短短不到三年的時間就有此成績,不只對於旗下合作的智慧型手機製造商具鼓舞作用,也會促使Android應用程式的開發者,投入更多時間與精力去開發兼具功能性與創新性的應用程式。

再更進一步地說,由於Android在應用程式開發上,採取免費、開放的策略。開發者不僅可以免費地下載安裝Android SDK(Android的軟體開發工具包)進行應用程式的開發。更重要地是,人們可以使用多數程式設計師所熟悉的Java程式語言進行應用程式的編寫。因為這兩個特點,促使為數眾多的Java程式設計師蜂擁至Android應用程式的開發行列。

第一講完畢!歡迎繼續閱讀第二講”Android 手機程式開發教學課程《免費講義 2》 : Android的開發魅力”。

如果您對於Andorid手機應用程式開發有興趣,歡迎閱讀我們在網路上發表的Android手機應用程式開發教學系列講義。

本講義目前網路連載發表有:Android手機程式開發教學講義懶人包Android 教學講義第一講Android 教學講義第二講Android 教學講義第三講Android 教學講義第四講Android 教學講義第五講Android 教學講義第六講Android 教學講義第七講上篇Android 教學講義第七講下篇Android 2.3補充教材1Android 2.3補充教材2Android 3.0平板電腦完整功能搶先看(From T-Mobile)Android 3.0 平板電腦應用程式開發:第一講Android 3.0 SDK 正式版登場Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦Android 2.3 補充教材3Android 3.0 平板電腦應用程式開發:第二講Android 教學講義第八講上篇Android 教學講義第八講中篇(1)Android 4.0 SDK 開發功能介紹與下載網址Android 4.0 SDK 下載安裝完整教學Android 4.0 模擬器安裝設定教學課程講義Android 4.0 的 Holo theme 佈景主題介紹與設定教學課程講義Android 4.2 升級功能簡介Android 4.2 SDK & ADT Bundle 下載安裝教學2013年第1講: Android Application Project 之建立2013年最新 Android Studio 開發工具下載安裝教學最新 Android App 網路連線程式設計範例 (第一講) - Volley HTTP Library 入門教學Android App 與 Android Application Project 是什麼?Android 4.4 KitKat 與 Android 4.4 SDK 開發功能介紹Android SDK 下載安裝中文教學課程講義 ( 2013年11月新版,ADT Bundle )


喜歡閱讀我們的講義嗎?歡迎加入我們所成立的《Android 手機程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),謝謝!



著作權聲明


Android 手機程式開發教學課程《免費講義 1》 :什麼是 Android ? 第一版本完成日:2010年8月30日

本講義之內文、排版等著作權或其他智慧財產權歸屬 孫傳雄 與 孫傳雄研究室 所有,非經書面同意禁止任何形式之翻印、全文轉貼或者授課使用行為。但例外允許在網際網路上引用此講義之網址連結。

本講義之內文所提及或者引用的公司名稱、產品名稱以及所引用的文字、商標、Youtube短片、產品相片或者網站頁面,均為其所屬公司所擁有,特以聲明。
 

版權所有 翻印必究