作者:張仁峰 / 臺灣大學工程科學及海洋工程研究所研究生
前言
隨著開放式系統的興起,Android 作業系統已逐漸變成主流,全世界已經擁有超過 40%的使用者。透過本文章希望可以跟大家分享如何在短時間內開發一個Android 應用程式。
本文將分成以下5大部份做介紹:
- Android 簡介
- 開發環境
- 開發工具之介紹
- Activity 介紹
- 程式開發
- Phonegap
- JQueryMobile
Android 簡介
Android是一種以Linux為基礎的開放原始碼作業系統,主要使用於便攜裝置。Google在2008年發表了Android的第一個版本。目前市面上的Android已開發出許多版本,這些版本分別用了不同的甜點名字做為代表。然而,在日常生活中,很多人聽到這些甜點的名字卻不知道這些名字代表什麽。在Figure 2,有相對應的Codename,平臺version,與API version。 我們也不難發現,每個版本名稱的第一個字排序下來,恰好跟字典中字母的順序相同,並以此作為代表。例如:Beta代表B, Cupcake 代表 C,依此類推。
目前市面上的Android版本以Android 2.2分佈最多,因此,接下來的開發範例都會以2.2的版本為主。
開發環境
開發Android的應用程式主要需要以下四個開發工具。
1. JDK (Java Development Kit)
所有的Android 應用程式都是用Java寫,而 JDK是每個開發Java程式的必要工具。可以到: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下載最新的版本。Figure 4為下載畫面:(選取圖中紅色框框選取的套件)下載完後,就可以安裝到您的電腦。
2. Android SDK
請按照您的電腦作業系統到:http://developer.android.com/sdk/index.html 下載最新的Android開發工具並安裝到您電腦 (Figure 5)。這是開發Android最核心的工具。
Tips:在安裝Android SDK,也許您會碰到 Java SDK not found 的問題(Figure 6)。不過不用擔心,不是您的問題,是Android SDK至今仍未解決的一個小bug。在Windows 7 與 Windows XP都會碰到這個問題。解決方法其實很簡單,只要按 上一步 [ Back ] 然後再按下一步 [Next] 就可以了。
3. Eclipse
是一個輔助程式開發人員開發軟體的應用軟體。這個軟體可以到 http://www.eclipse.org/downloads/ 下載。這個軟體不需要灌,直接解壓縮到你電腦就可以開始使用。
4. Android ADT
是一個開發Android 的Eclipse 的套件,所以這個軟體要在Eclipse上安裝。
請在 Eclipse的Help → Install New Software → Add, 並填入
Name : Android
Location : https://dl-ssl.google.com/android/eclipse/
下一步便會顯示可用的工具。請將 "所有的選項" 打勾 (Figure 8)。
安裝完後,Eclipse必須重新啟動。接著,我們必須把已經安裝好的Android SDK跟Eclipse做連接。在 Eclipse的 Window → Preferences → Android → SDK location → 您安裝Android SDK的地方
Android 開發工具
Android SDK提供很棒的功能,這些功能可以讓開發者更方便的開發Android 應用程式。
• Android emulator:
若您沒有Android手機,Android SDK 有提供一個產生Android虛擬機的功能。這個虛擬機可以模擬一般手機的基本功能,例如:打電話,寄簡訊,安裝應用程式,GPS,等等。可依以下步驟產生Android虛擬機:
請在Eclipse → → Virtual devices → New →
Name : 虛擬機的名字
Target : 虛擬機使用的平臺版本。
SD Card : 虛擬機的記憶卡容量。
Snapshot : 用來儲存虛擬機關機前的最後狀態。讓下一次開機的時候,可以 讓虛擬機更快的啟動,並恢復到上一次最後關機的狀態。
Built-in : 虛擬機的螢幕大小。建議使用HVGA的大小。若選用太大的螢幕(例如:WVGA 800)會超過一般筆記型電腦螢幕的高度(768)。越大的螢幕相對而言,也會需要更多的資源。
Tips:
在第一次產生虛擬機的時候,也許會碰到Error 如 :
Files\Android\android-sdk-windows\tools/emulator-arm.exe.
Hint: use '@foo' to launch a virtual device named 'foo'.
Please use -help for more information.
請將Eclipse上的SDK Location 由
C:\Program Files\Android\android-sdk
改為
C:\PROGRA~1\Android\android-sdk
(Figure 10)
於畫面左上角可看見 5554:myAndroid2.2 的字樣 ,其中5554是這個虛擬機的電話號碼。您可透過產生另外一個虛擬機,並打到5554這個號碼,來模擬撥/接電話的功能。
另外,Eclipse也有提供一個虛擬機控制的功能。
請在Eclipse → Window → Show View → Other → Android → Emulator Control
透過這個Emulator Control 可以模擬撥打電話、簡訊傳送的功能,以及GPS的設定。
• 專案開發
產生一個新的Android專案。
Eclipse → File → New → Android Project
Figure 12 說明:
Project name : 專案名稱。這個名稱不會顯示在你的app裏面。
Target name : 應用程式的API版本。
Application name : 應用程式的名稱。
Package name : 程式碼的class name。
Create Activity :應用程式裏面的程式碼進入點。
Min SDK Version : 安裝這個應用程式所需的Android最低需求。
注意:在這個範例中是8,所以在8以下的API版本無法安裝這個應用程式。
Figure 13為Android產生出來的專案。在程式當中有一個Class Name叫做 HelloworldActivity,他是由Activity 繼承出來的(紅色框框中)。Activity是每個應用程式的進入點,就如同C/C++的main,程式第一次執行都會從這裡開始。一個Activity有分成很多狀態例如:onCreate,onStart, onResume,onPause,等等。在下一章節會更深入的介紹Activity。這個產生出來的專案是可執行且也有畫面的,只要在您的專案上,按下滑鼠右鍵,run as → Android application,Eclipse就可以自動啟動Android虛擬機並把這個應用程式燒進去。
Activity介紹
這個狀態流程圖是用來描述應用程式在執行過程中所經過的狀態。
onCreate :是一個Activity開始啟動的狀態。在這個這裡,Android會幫你處理與準備應用程式所用的的資源,例如 :圖案,畫面,等等。
onStart :這個狀態代表所有的資源都已經準備好了。Activity到了這個狀態,使用者還看不到畫面。
onResume :所有的資源與UI已經顯示處理,使用者可以開始控制這個應用程式。
onPause :是應用程式已經被暫停。被暫停的原因有兩個可能性:
第一,使用者開始啟動別的Activity,因此離開這個應用程式。
第二,有別的Activity突然啟動。其中最常見的狀況就是,當有電話來時,原本的應用程式會被蓋掉。
onDestroy :代表你的Activity要被停止了。
onPause跟onStop的狀態相似,唯一的差別在於處於onPause的狀態時,使用者仍可以看得到畫面;而在onStop的狀態時,使用者已經完全看不到畫面了。
當處於onPause或onStop的狀態時,若memory不足,process很有可能會被Android強迫停止。使用者若要再回到這個應用程式,必須要重新開始跑(onCreate)。
一個好的應用程式會由程式處理activity的做法來決定。譬如說:一個遊戲應用程式,在onPause的狀態時,程式必須要把玩家最後的遊戲狀態儲存起來,避免程式被迫停止的時候,玩家失去他之前所玩的紀錄。亦或者當有使用到GPS功能的應用程式時,程式在onPause的狀態就把GPS的功能停止,因為GPS的功能非常耗費電力。
以下是可以加到Activity的程式片段:
程式開發
到了這個章節,也許您會覺得Android Api的版本這麼多(1.5 , 1.6 , …),對Java又不熟悉,怎麼可能在兩個小時內開發完成一個應用程式呢?再加上設計一個Android 應用程式的UI很複雜,必須懂Android UI的每個物件,是否真的有可能完成這個艱難的任務?就算已經成功的開發Android版本的應用程式,一換到iOS上面又要重新開始學,有沒有方法能夠讓一個程式碼在任何平臺都可以執行? 答案:有!PhoneGap。
爲了增加開發的速度,接下來將會為大家介紹PhoneGap。PhoneGap會透過JavaScript 抓取一些 Android 提供的Native API。爲什麽一定要JavaScript呢?因為JavaScript在任何平臺上執行都能有相同的結果。透過PhoneGap的API,我們就可以使用Native API的功能,並且讓一份JavaScript的程式,在任何平臺上都可以執行。
我們可以利用HTML當做我們的UI,然後利用PhoneGap去抓取手機的一些資訊。這樣我們就可以把設計UI的時間省下來,而且PhoneGap的API 非常簡單,就跟一般的JavaScript程式一樣。
• PhoneGap環境設定。
建立三個目錄在您的Eclipse專案裏面。
/libs
/assets/www
/res/xml
• 把PhoneGap的檔案放到上步驟建立的目錄。
請到 http://www.phonegap.com/download/ 下載。
phonegap.jar 放到 /libs
phonegap.js 放到 /assets/www
plugins.xml 放到 /res/xml。
• 把寫好的範例 index.html放到assets/www index.html 程式片段。
• 把原本的 “extends Activity“
改成”extends DroidGap”。
把 setContentView() 改成super.loadURL(“file///android_asset/www/index.html”);
再加上一行 import com.phonegap.*;(Figure 14)
• 把以下的程式碼放到AndroidManifest.xml (Figure 15)
• 並將 android:configChanges="orientation|keyboardHidden 放到 activity 的標籤裏面
完整的phonegap範例程式結果 : http://www.youtube.com/watch?v=fbQLKzboui8
在開發過程,也許設計出來的HTML UI也許不適合在手機上顯示。因此我們可以利用JQuerymobile去設計我們應用程式的UI。JQuerymobile是一個免費軟體,專門設計UI 的JavaScript library。只要透過他們已經訂好的格式,您的HTML便可擁有和手機裡面相似的畫面。他不但和手機裡面相似的畫面,在每頁跳頁之間也會有一般手機的動畫效果。而且JQuerymobile 也有針對觸控的畫面設計做最佳化。 可由此網址:http://jquerymobile.com/demos/1.0b2/參考範例。
結論
透過 PhoneGap 加上 JQuerymobile 我們不需要瞭解Android API怎麼寫,更不需要瞭解Android UI是怎麼設計的。只透過HTML + JavaScript,我們的程式都可以跟 Android 的 native app 具有同樣的效果。並且可以在很短的時間內,開發出可以跨平臺的應用程式。
參考文件
[1] http://en.wikipedia.org/wiki/Mobile_operating_system
[2] http://developer.android.com/resources/dashboard/platform-versions.html