Introduction on Smartphone Platform Chapter 1 Introduction on Smartphone Platform
What is Android?
What is Android? 傳統以來,手機一直被視為用來打電話的,與電腦分屬於電信及網際網路兩個不同世界。 而提供語音的電信服務在網際網路尚未興起前,一直是一寡佔且封閉的產業,早期的手機也只提供通話服務。 因此除打電話過程中需與電信業者基地台間的控制訊號需遵循標準協定外,手機本身大多是封閉的平台,所有跟手機相關的服務都需由電信業者提供,使用者很難在上面開發新的應用服務。
What is Android? 隨著手機與網際網路結合,上網普及化之後,使用者對手機的功能有截然不同的需求。 透過網際網路,各種新的服務與應用應運而生,使用者也希望手機平台能像電腦一樣,讓使用者能發揮設計創意,自主地開發服務。
What is Android? 因此智慧型手機隨之上市,於是微軟公司以其在電腦終端作業系統霸主的地位,推出智慧型手機專用之WinCE及Window Mobile作業平台。 由於微軟公司的作業系統並不開放原始程式碼,因此除有版權問題外,也因無法深入作業系統核心而限縮了應用軟體發展的空間。
What is Android? 有鑑於此,以開放程式碼Linux作業系統為基礎發展Android手機平台的構想應運而生。Android字面上的意義是指科技小說裏面的機器人,隱含有新奇、能接受指示,且具有智慧的意思。 它是Google在2007年鼓吹它為手機系統平台,初期由Google開發,後由開放手機聯盟(Open Handset Alliance)接手後續發展推廣。
What is Android? 由於它開放式架構的特性,可以很容易地進行系統擴充。Android平台具有以下特點: 系統的開放性 應用程式的對等性 跨應用程式的整合性: 開發環境的效率性: 系統的開放性:Android強調開放式架構,除了有開放程式碼以外,也可以讓應用程式呼叫使用系統內部及一些通訊控制程式,例如,由應用程式啟動打電話、送簡訊、操作照相機功能等。另外,由於是採開放式,軟體開發人員可以分享其設計的軟體,因此平台功能也可以持續擴充。 應用程式的對等性:在Android平台上,不論是系統本身既有之應用程式,或開發者自行開發之應用程式(Third party applications),從作業系統角度來看均為對等,不會有差別。因此,Android的應用程式開發者可以自行設計一應用程式,取代系統既有之應用程式。例如,使用者可以自己寫一撥號盤的介面程式取代系統提供的電話鍵盤。 跨應用程式的整合性:為提供更寬廣之應用,Android打破應用程式間彼此之界限,讓使用者可以利用多個既有之應用程式,並將他們所產出之資料加以彙整,設計出跨應用程式之整合應用。例如,可以將網頁與從手機上個人行事曆取到之資料,加以統合,設計出更新穎之應用服務。 開發環境的效率性:Android提供非常豐富的函式庫及工具,讓使用者可以很容易地加以應用。除了一般作業系統該提供之功能外,Android也提供許多配合手機特性及通訊相關的函式及工具,讓程式開發者可以很容易的運用到其應用程式中。例如,程式設計者可以很容易的取用GPS收到的位置資訊,也可以利用系統所提供的Peer-to-peer服務,讓兩隻手機可以透過通訊介面直接溝通。
Overview on Framework of Android Platform
Overview on Framework of Android Platform Android使用堆層(Stack)做為軟體平台的建構方式。 堆疊主要分為四層,分別為作業系統核心層、系統函式庫層、應用架構層、及應用程式層,如下頁圖所示。 作業系統核心層以Linux核心工作為基礎,提供作業系統基本功能及一些硬體驅動程式。
Overview on Framework of Android Platform
Overview on Framework of Android Platform 要注意到的一點是,目前Android的Linux核心與常用的GNU/Linux並不完全相同,GNU/Linux有的東西在Android Linux核心中並不一定有。 為提供在手機環境使用,Android的Linux核心特別加強了程式間通訊(Inter Process Communication, IPC)及電源管理(Power Management)的功能。
Overview on Framework of Android Platform 作業系統核心底層之上是函式庫及Android 執行環境(Android Runtime),函式庫有許多開放原始碼的有用函式,例如,OpenGL、libc (bionic)、WebKit等等。 而Android Runtime主要包括核心函式庫(Core Libraries)及Android專有之虛擬機器Dalvik (Dalvik Virtual Machine, DVM)。 核心函式庫包含了許多Java常用的函式,Android應用程式係以程序(Process)呈現,可以呼叫上述函式。 Android是以物件導向概念設計的,應用程式以Java做為語言開發工具,可是Android並不使用常見的Java虛擬機器(Java Virtual Machine, JVM),而是使用Dalvik虛擬機器。為了配合在輕薄短小的手機上使用,DVM在設計上考慮到降低記憶體的使用,並可以同時執行好幾個應用程式,以提高系統效率。
Overview on Framework of Android Platform 應用架構層主要是提供Android應用程式的API,包括位置管理、資源管理、電話管理、提示管理等一些軟體套件,應用架構層再透過JNI去呼叫下層函式庫。 若有新的函式加到函式庫裏,則應用架構層就需要加以擴充。透過應用架構層的規範,可以對軟體函式的增加做較好的管理。
Overview on Framework of Android Platform 有了上述三層的支援,系統已將硬體元件抽象化(Hardware Abstraction),並以層次的架構提供各種有用且方便取用的函式庫,再經由其DVM建構的跨平台Java開發環境,使用者即可在應用程式層設計Android平台上的各種好玩的應用服務。
Introduction on Android Market
Android Market 平台介紹 Android是一開放平台,任何人都可以在此平台上發揮創意,設計應用服務,而且可以與別人分享。除了分享之外,如果認為所開發的軟體有市場性,也可以線上以收費方式讓他人下載。 為提供便利的分享與銷售環境,Android Market平台提供此一交流管道。就類似蘋果iPhone及iPod的App Store一樣,提供軟體分享。
Introduction on Android Market 為提供便利的分享與銷售環境,Android Market平台提供此一交流管道。就類似蘋果iPhone及iPod的App Store一樣,提供軟體分享。
Introduction on Android Market 為提供便利的分享與銷售環境,Android Market平台提供此一交流管道。就類似蘋果iPhone及iPod的App Store一樣,提供軟體分享。
Introduction on Android Market 為提供便利的分享與銷售環境,Android Market平台提供此一交流管道。就類似蘋果iPhone及iPod的App Store一樣,提供軟體分享。 該網頁網址為http://www.android.com/market/。網頁提供免費(http://www.android.com/market/free.html) 及付費(http://www.android.com/market/paid.html)兩個不同網頁,分別如下頁圖所示。
Introduction on Android Market
Introduction on Android Market
Introduction on Android Market
Introduction on Android Market 除了蘋果的Apple Store及Android Market之外,微軟的Windows Mobile手機平台也推出具類似功能的Windows Marketplace,讓軟體程式開發者可以有分享及銷售的管道。 而這種發展趨勢,將提供個人工作室及SOHO族創業的另類的商業模式。 Windows Marketplace(網址: http://marketplace.windowsphone.com/Default.aspx)
Comparison of Existing Mobile Platforms
Comparison of Existing Mobile Platforms 手機的功能從傳統的打電話為主,逐步增加影音與相機功能,到具無線網路上網,再到現今的開放使用者可以自行設計應用服務並分享自己作品,甚至可透過Apple Store、Android Market、及Windows Marketplace等交易平台散佈及銷售自己設計的軟體。這短短五、六年的變化不可謂不大。
Comparison of Existing Mobile Platforms Eevolution of mobile platforms is listed below: 手機平台演進 主要功能 目標使用者 基本手機 語音收發話 僅將手機當為電話使用 整合影音功能手機 除基本手機功能外,增加MP3播放器、及數位相機等影音功能 喜歡影音服務及隨機攝影之使用者 網路手機 除整合影音手機之功能外,還提供無線WiFi及藍牙Bluetooth通訊功能 喜歡隨時上網,並經常需送收電子郵件之使用者 開放式手機 除上述網路手機功能外,還開放手機軟體開發環境,提供使用者自行設計應用服務,及應用服務軟體之散播通路 喜歡嘗試新的網路應用服務,或熟悉軟體設計,對手機應用具創意之使用者 由於手機已不再只是講電話而已,各種與網際網路相關的應用服務也大量地在手機平台上蓬勃發展;甚至,由於開放式手機平台的興起,手機上應用服務也不再只由傳統電信業者提供,使用者也可以很輕易的自行研發並透過手機平台業者所建立之管道分享或行銷。 此一發展已成為不可逆之趨勢,在手機服務新的商業模式下,培養開放平台手機軟體開發能力,將是晉身此一全新軟體市場不可或缺之基本門檻。 在此商業模式下,應用軟體開發者需先註冊並繳交費用後,方能在此軟體分享與銷售平台上傳開發好之應用軟體,在觀念上是手機平台業者聯合使用者從目前行動電話電信業者手中的網路內容的商機搶奪過來。
Comparison of Existing Mobile Platforms 本教材除針對Android平台之軟體設計進行詳細解說之外,也在最後兩章分別說明Window Mobile 6.5及iPhone的軟體開發環境與簡單範例,供讀者做比較。 除此之外,在本章最後也對其他包括Palm的webOSdev、Qualcomm的BREW、Nokia的Symbian、及BlackBerry OS等手機平台做精簡的介紹。
Palm WebOS dev Platform
Palm WebOS dev Platform 隨著手機平台走向開放,Palm在2009年7月正式宣佈將其webOS開放給使用者,並一併將開發所需之軟體工具與如何上傳所設計的軟體等環境完整建立在其portal網站http://developer.palm.com/上。 在該網站上,使用者可下載Palm的Mojo軟體開發工具(Software Development Kit and Tools),參考網站上豐富的技術文件,從第一個簡單的Hello World程式逐步開始學習。
Palm WebOS dev Platform Palm的webOS是以HTML及Javascript做為應用程式開發的基礎,應用程式的兩個主要元件是scenes及stage。 基本上stage代表一個應用卡(applications card),相當於是一個瀏覽器上的視窗或tab,而scene則是視為不同的網頁,每一scene再透過Javascript來設計其動作與呈現方式。
Palm WebOS dev Platform 除此之外,Palm也隨時透過Blog(http://pdnblog.palm.com/)發佈其webOSdev的一些最新發展情形,供使用者參考,如下頁圖所示。
Palm WebOS dev Platform Palm webOSdev的Blog
Qualcomm BREW Platform
Qualcomm BREW 平台 Qualcomm公司是一家專門研究開發通訊產品的廠商,一直以來對於嵌入式系統之研發非常熱衷,其網站http://brew.qualcomm.com/brew/en/上也有相當豐富的開發資源供應用,如下頁圖所示。
Qualcomm BREW Platform
Qualcomm BREW Platform 近年來,除了既有手機晶片及相關專利授權外,也積極投入手機平台研發。 BREW初期是定位在Client端之平台,稱為BREW Client,而配合最近興起的手機平台開放熱潮,Qualcomm將其平台擴充為BREW MP (Mobile Platform),如下頁圖所示。
Qualcomm BREW Platform BREW MP在擴充後之平台主要有四層: 作業系統服務層(OS Services),包括硬體及記憶體的抽象化(Abstraction)處理。 平台服務層(Platform Services),提供數據機與多媒體服務及系統API。 應用環境層(Application Environment),提供讓使用者方便軟體開發的視窗管理及Flash等資源。 最上層是提供使用者可以用C/C++及Java開發手機服務的應用層(Application)。 BREW MP主要以微軟的Visual Studio做為軟體開發工具,除原本SDK既有之軟體提供的一些dll及介面函式外,還增加包括移植驗證套件(Porting Validation Suite, PVS)及模擬器建置工具(Simulator Construction Kit, SCK)。 BREW MP平台
Nokia Symbian Platform
Nokia Symbian Platform 其版本v9.0開始,即將其原有EKA2的即時作業系統核心加以擴充演進加強包括新的通訊介面、圖型架構、與即時性,因應B3G時代高網路傳輸頻寬之需求,以提供包括音視訊串流,及手機廣播電視服務。 目前的Symbian版本是2008年年底出來的v9.4,而v9.5也即將上市
Nokia Symbian Platform 在其http://developer.symbian.com/main/index.jsp網頁上提供包括技術說明文件及Sample code等有用資訊,如圖所示。 Symbian的發展平台可以在Windows XP及2000上,安裝其軟體開發所需之SDK,並支援Java及OPL等程式語言,但其作業系統核心及所提供的API主要是以C++為主,因此,程式設計者仍需具備C++的程式設計經驗。 Symbian使用其自訂的Symbian C++,但其基本架構及語法與標準C++差不多。 Symbian平台網頁
BlackBerry OS Platform
BlackBerry OS Platform 黑莓機(BlackBerry)主要由加拿大RIM公司所發展(據說也曾給台灣宏達電代工),其主要的強項是在便捷的電子郵件功能,另外在內建GPS及地圖應用軟體與影音服務也頗為人稱道,因此廣受政商界的喜愛。 BlackBerry平台提供頗為豐富的使用者介面(UI),讓使用者可以很容易地取用,設計多變化的顯示介面。
BlackBerry OS Platform 軌跡輪(TrackWheel),如7100及8700等系列。 軌跡球(TrackBall),如8800及Pearl 8100等系列。 軌跡板(TrackPad),如Bold 9700及Curve 8500等系列。 觸控螢幕(Touch Screen),如Storm 9500系列等。
BlackBerry OS Platform 在開發環境的規劃方面,BlackBerry也依應用的不同而有不同的開發環境,主要可分為以Java為基礎的應用開發環境(Java Application Development)及以網頁為基礎的應用開發環境(Web Development)
BlackBerry OS Platform 而配合企業網路所需與管理相關應用程式開發方面,則提供了企業應用開發環境(Enterprise Application Development)。BlackBerry 技術支援相關網頁如下頁圖所示(http://na.blackberry.com/eng/support/)。
BlackBerry OS Platform
Google Chrome Operating System
Google Chrome Operating System 近年來,由於雲端計算(Cloud Computing)架構的興起,未來許多電腦、行動裝置、及手機等終端設備的應用服務將有可能放置在由許多高效能伺服器組成的雲端架構中,終端設備將儘量簡化,所需要之各種應用服務都從雲端接取。
Google Chrome Operating System 雲端計算架構的最重要推手是Google,因此Google以開放程式碼概念對於作業系統提出另一思考模式。 Google所提出之Chrome作業系統是一以Web為基礎的作業系統,所有的運作均架構在Web介面上,而且除Chrome作業系統外,所需之軟體服務都是透過瀏覽器介面向雲端取得。
Google Chrome Operating System 這種架構有如下幾項優點: 由於作業系統的極簡化,因此,終端設備的運作將更為快速。 而且由於所有應用軟體都由雲端提供,因此只要雲端伺服器做好安全把關,則一些包括電腦病毒在內的安全威脅,都有可能獲得舒解。這種新的架構將對軟體市場造成結構性的轉變,類似像Apple Store或Android Market的商業模式將更盛行。 當然,Chrome的運作效能跟網路是否暢通及雲端伺服器的負荷量百分之百相關,而這也是雲端計算最需克服的問題。 目前的Chrome作業系統跑起來的介面一如Google網頁一樣清爽;而透過其瀏覽器介面,可以找到Chrome提供的應用軟體,,如下頁圖所示。Chrome作業系統的相關資訊可參考以下網站: http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html
Google Chrome Operating System Chrome OS Operating Interface
Google Chrome Operating System Using Chrome Browsing Cloud Computing Application Software