加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
 
Android4.X開發實務-初次見面,冰淇淋三明治
文‧圖/何孟翰 2011/10/27 下午 04:27:16

挾帶著高解析度的HD SAMOLED的營幕,並且有1.2G的雙核心顯示器,在設計上和上一代的Nexus S一樣是弧形的設計。但是最重要的是,它搭載的這個作業系統替這個強勁的硬體帶來更多有趣的功能。因此,身為軟體開發者的我們,在Android4.0發表時,藉著本篇來討論一下這次的作業系統更新到底帶來什麼令人驚喜的功能,並且會在後續文章中再和各位讀者分享開發的實務。

然而,筆著最近在一些研討會與教學的場合,常常會碰到讀者/學員對於現在的Android市場上主流的Android裝置版本感到混亂,一下子是Android 2系列的手機,一下子是Android 3系列的平板,似乎沒有出來多久現在馬上又是Android 4,且看來未來又是Android 4之後的天下,因此在進入Android 4的功能之前,先讓我們很快的回顧一下Android作業系統的演變。

以現在目前市面上還常看到手機來說,你可以從Android 2開始追蹤起。最早Android的系統是一個以手機為主的作業系統,也就是說除了簡單的通訊之外,事實上整個作業系統是以輕薄短小的方式在設計。雖然那時就有些廠商將Android的2系統由於平板電腦的興起與iPad的熱賣而直接將它植移到一些七吋左右的平板上,但是Google那時有指出Android 2並不是適合在平板上使用的作業系統。因此過了一陣子你看到Android出了3系列,但是原先給2系列的手機裝置上的產品依舊並行。因此,你會看到Android的版本發展大概是朝一個雙線進行如圖1。



▲ 圖1 雙線進行的Andrid系統發展



如同圖1, 手機/小平板在主要的系統更新2.1之後,出了許多的功能性更新,例如目前佔到市佔率約有45%的Android 2.2,也就是Froyo,是Android之後的第一個功能性更新,主要新增的功能是在一些權限的控制,與將應用程式安裝於SD卡的支援與開始導入一些雲端的備份與回存的服務與相關的處理。這個系列也是截至截稿日前目前最主流的Android裝置。然而在之後的2.3系列,在一些小改版的2.3.3與2.3.4之後,在手機上也加入了NFC(Near Field Communication)與 USB外接硬體的支援,讓這個Android的裝置的用途可以更多元。

然而在同一時間,Android也出了專門針對大尺寸的平板專用的作業系統。此時你可以發現大部份的裝置都採用了Nvidia的 Tegra方案。因此除了支援了硬體的2D/3D加速之外,還有更大的營幕,更高解析度WXGA寬營幕的支援,並且在各種使用者介面上也有針對大尺寸與流暢度所作的改變。例如在這一個Android3系列中我們所探討的Fragment, Action Bar,拖拉事件與複製與貼上等等。

雖然說Google當初針對平板電腦設計3.0的OS的用意是讓更大的營幕得到更好的支援,但是你可以想像事實上WXGA,也就是1280*800和現在最新的Galaxy Nexus,也就是Nexus Prime的解析度也已經達到了1280*720,所以說其實大解析度與更多元件的需求已經不再是大尺寸面板的平板電腦的專利,隨著營幕的解析度愈作愈高,其實在小營幕中也會需要Android 3系列的這些元件與設計。因此Google出了Android 4.0 ice cream sandwich,就是要將這兩個平行的OS再度拉回家一個產品線。

Android 4.0與相關的改變

在討論新增的功能與舊功能的整合之前,讓我們先來看看Android 4.0在開發介面上帶來的差異,再看看這些差異針對開發者來說有哪些值得留意的議題。

Android SDK的更新
隨著這一次Android SDK 4的更新,Android SDK Tools本身也更新到了14版,這一版的外觀也開始變得不大一樣如圖2。



▲ 圖2 Android SDK與Manager的更新



在這個更新的介面,你可以看到Android SDK Manager現在是以安裝工具的類別為主,將已安裝和未安裝的元件依序條列,所以你可以依照這個介面隨時查看是否有新的元件尚未安裝或者是有提供了更新版。此時或許你會懷疑之前的Android AVD是不是已經從這個介面被拿掉,事實上你可以從工具列的Manage AVD...的選單中呼叫出它如圖3。



▲ 圖 3 獨立的AVD選單畫面



這裡的AVD畫面和之前的功能幾乎相同,所以你可以使用這個介面來新增,啟動與刪除一個Android的模擬器。

更新的ADT外掛模組

如果你使用Eclipse開發並且更新了Android SDK,那你就必須要連同ADT的模組一起更新。在Eclipse底下你可以把ADT當作是一般的Plugin作更新。更新完成之後首先你會看到如圖4的工具列。



▲ 圖4 更新後的ADT工具列



事實上這也是因應著前面的小節我們所說明的,因為AVD和SDK Manager被分開來,所以你會看到兩個圖示也跟著分開,左則有一個向下符號的就是SDK Manager幫助你更新Android元件,而右邊的一個手機中裝有一個機器人的就是模擬器AVD管理員。

除此之外你還可以發現有一些小細節變得不一樣。其中最讓筆者印象深刻的是Logcat這個Eclipse底下View的更新。首先你可以發現Filter的介面變得不一樣,你可以在晝面的左側依序增加自己的Filter如圖5。



▲ 圖 5 更新的AVD Filter介面



同時對於Log的等級,之前是用五個不同的層級的圓形按鈕,現在改成了一個下拉式選單如圖6。


▲ 圖6 更新過的Log Filter機制



同時,當然最重要的是更新過的Android模擬器。之前有使用過Android 3系列的讀者一定會覺得啟動的時間比起Android 2系列來得久,事實上如果是Android 4你會發現雖然也是手機系列的模擬器,但是啟動的時間依然比起原本的二系列來得長。經過一下子的等待之後,你會看到一個稍微不一樣的開機畫面如圖7。不同於以往手機的橫式滑開解鎖,Android4.0這次用了類似於平板的圓圈式解鎖功能,你可以在拉動鎖外面的這個圓圈,它會出現左右兩個圖案,一個是解鎖進入主畫面,另一個是按下去會進入照相機的功能。



▲ 圖7 Android SDK預設的開機畫面



選擇解鎖之後會看到一個親切的主畫面如圖8。你可以發現整體的設計和圖示都變得更精緻,同樣的在桌面上你會看到有照相機,講電話,聯絡人,簡訊和上網的瀏覽器等等的選項。同時如果你試著使用一些內建的軟體,你可以發現整體的設計也有著一些小細節的更改,讓整個Android的質感能夠更加提升。



▲ 圖8 Android 4.0預設的登入桌畫面



此時你也可以點擊進入應用程式列表如圖9,此時你會看到這個介面變得有些不一樣,在主應用程式中變得可以分隔不同的標籤。並且如果你對Android 3系列有所開發,你應該會有一個感覺就是這個如圖9的介面就像是使用Action Bar作成的標籤一樣,可以依照不同的標籤屬性載入不同的Activity。同時你也可以試著點擊一些預設的應用程式,觀察它們跟原本應用程式的改變。





▲ 圖9 使用不同的標籤屬性來顯示應用程式或者是Widget



既然看到了Widget的這個標籤,按下去之後你可以看到如圖10的畫面。你可以發現這些Widget就是Android之前的桌面小工具/小精靈,你可以把它們想像是一種Broadcast Receiver,也就是廣播接收器,它們可以聆聽一些系統或者使用者發出來的廣播,並且依照一些既定的策略作出畫面的更新,讓使用者能夠在不進入應用程式之下就一目了然的看到想要更新的資訊。和之前的手機系列比較,你可以發現這個介面比較像是平板的精靈介面,你可以看到每一個元件大致的縮圖,並且可以看到它們所佔的空間。例如一個數位時鐘是2x2的,而一個目錄夾是1x1的,而書籤精靈是3x2。如同一般人在展示的android平板電腦時在桌面看到的一些網頁縮圖如圖10。



▲ 圖10 在應用程式中顯現Widget的元件



當然除了這些功能之外,你在將來實際的裝置上還會看到如臉部辨識解鎖(由於前鏡頭的關係 ),並月使用NFC而可以作到兩支手機近距離的交換應用程式,聯絡人,音樂和影像等等。同時你也可以看到Android從這一個版本開始也多了一些硬體網路與連線方式的更新,例如它也支援了基於藍牙的健康裝置設定協定HDP(Bluetooth Health Device Profile),所以你可以使用android手機和這些健康保健裝置作一些運動紀錄的追蹤與應用。同時它也支援了Wifi Direct,也就是說你可以讓兩支手機在不透過一個無線基地台的情形底下直接連線。也就是說如果你和朋友在一個沒有無線基地台的環境,兩台android裝置就可以運用這個模式連線一起執行應用程式,例如玩兩人連線遊戲,或者進行其它基於無線網路的傳輸。

手機與平板的再度整合
有句話叫天下事分久必合,合久必分。這個道理在android的系統發展下也可以得到一些些認証。在之前分成兩個手機與平板系列的作業系統與SDK在Android4之後也會再整合在一起。之前的Android3中的一些視覺元件,如我們在之前的文章中討論過的Fragment,Loader,ActionBar等等在Android4中也可以同樣的搭載在手機的作業系統中變成標準的元件,另外像我們所提到一些規格的支援,例如HTTP的即時串流規格,外接的USB和其它輸入裝置都是現在的標準,因此對開發者的我們來說,我們可以大量的使用新的工具設計這些一致的視覺元件於各式各樣的Android裝置上,不論它是平板還是手機。

關於通訊
由於社群網路的興趣,相信有智慧型手機的人一定會將 Facebook視為一個當然且必要的應用,而這種社群的功能在Android4.0中也得到更新的支援。在過去的Android程式發展中,聯絡人可以使用資料提供者(content provider)在應用程式中取得相關的資料,現在這個協同為了社群網路的使用作了更多的API讓開發人員應用,讓其它的應用程式在使用者允許下(也就是允許適當的權限),來取得聯絡人,狀態的更新與照片的內容。
基本上不限於原先Content Provider中對於聯絡人預設的欄位,更新的 API甚至可以允許應用程式增加自己定義的欄位來對這些聯絡人作一些更特制化的動作。因此使用這個API可以讓開發者與聯絡人有更彈性的互動,並且展開更多的社交網路與聯絡人的來源。


關於行事曆相關
在Android 4.0,行事曆也被加至資料提供者中讓應用程式可以有一致的介面去存取了。所以開發者可以很容易的在應用程式中加入行事歷相關的功能。因此只要取得使用者適當的權限,應用程式可以輕易的在事件的資料庫中加入一筆新的會議,參加者,何時要提醒手機使用者,與提供一些備忘錄。因此應用程式可以自行運用這些共用資料,來作適當的表現以讓使用者有最好的視覺效果。
同時基於Content Provider的特性,你可以發現應用程式可以輕易的進行行事曆相關內容的新增,檢視,編輯與刪除。而在你的應用程式中可以包裝好一個intent,這樣子calendar的應用程式就可以接收到這個intent而作出適當的回應。

使用Android的短距離通訊
基於Android的NFC功能,新增了一個 Beam的功能可以讓使用者互相交應應用程式的資料。因此當使用者將兩支有相同NFC功能的裝置作接觸時,在固定的短距離中,系統可以建立NFC的連線,並且交換想要共享的資料。
而對開發者的我們來說,NFC的溝通可以看作是一種交的短距資料交換方式,舉例來說,藉著這樣的一個機制,使用者可以互相敲擊手機來交換聯絡人(如同換名片),起動多人遊戲(確認身份 ),或者開始一個雙向的通話等等。

就算這個應用程式並沒有設定特定的NFC Beam機制,Android已經有了預設的行為進行這個應用程式的資料交換。也就是會將這個應用程式在Android Market上的資料傳送到對方的手機上,以便對方進行購買或下載的動作。

底層與硬體的更新
除了這些使用者比較看得到的新功能,事實上Android對於一些底層和硬體的支援在這一版也有著長足的支援。例如在相機硬體機能上的新功能,如連續對焦,與在截取影像時進行營幕的對焦等等。在這一個新的版本中,應用程式可以在錄影中取得完全解析度的營幕截圖,應用程式可以取得畫面上某個部位的相素資料,進行如白平衡等等的資料更新。同時對於照片也可以進行一些簡單的亮度,銳利度,飽和度和色溫等等的處理。
同時所有的Android 4.0裝置,如同Android3系列一樣,都被要求具有硬體加速的功能,特別是在Android4.0中的裝置都必須要有硬體加速的功能,因此開發者可以在維持最佳的效能底下依然兼顧到視覺的效果。

網路流量的監控

雖然說3G和Wifi的熱點在台灣的建置是愈來愈普及,但是使用者常常還是會想要知道自己的網路流量以便了解是否品質還有進一步提升的空間。在Android 4.0也針對了這一部份作出了解決方案。就算你還沒有實際的裝置,在模擬器底下你可以看到在setting的Wireless&Network下可以看到Data Usage如圖11。




▲ 圖11 檢視網路的流量



除了能夠看到目前的使用量之外,你甚至可以禁止一些應用程式背景的網路傳輸。所以系統開發者的我們就需要設法有效率的使用這些網路傳輸,並且檢視網路的狀態,這些內容我們都會在之後的文章中和讀者再作進一步的討論。


結語
在本系列文章的前面數回,我們介紹過了在當時Android 3.0系列專屬的API,現在這些元件在Android4.0中已經變成標準的元件。既然如此,其實你已經可以在自己的專案中儘量考慮使用這些元件(如果它們是有助益的話)。在Android 4.0中不用說,在Android 3.0的平板系列也是原生的支援,而Android 2系列中也可以靠著相容的package套件來達成同樣的效果。如果有需要的讀者請自行參考。而本系列文章也會針對新功能與需注意的事項和讀者在之後的章節進行一些互動。