顯示具有 Android 標籤的文章。 顯示所有文章
顯示具有 Android 標籤的文章。 顯示所有文章

2013年9月5日

Android App 網路程式開發教學第一講:Volley Library for Android 之設定教學

Android App 網路程式開發教學第一講:Volley Library for Android 之設定教學


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


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


我們編寫的 Android SDK 教學課程講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 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 App 網路連線程式設計範例 (第一講)》教學講義的開始。


前言


【孫傳雄研究室 撰文】據 Gartner 於 2013 年 8 月 14 日所發表的統計數據所示,Android 作業系統在 2013 年第二季全球智慧型手機消費市場佔有率 ( Market Share ) 已從 2013 年第一季的 74.4% 持續成長至 79.0 %,亦即相較上季而言,此季之市佔率增長將近 4.6 % 。若再相較於去年 2012 年第二季它的市佔率 64.2 % 而言,這一年間之市佔率已增長將近 14.8 % ( 資料來源:Gartner, Inc. ) 。

 

另外,Google Android 部門主管 Sundar Pichai 於今年 ( 2013 年) 9 月 4 日在其 Google+ 帳戶表示:『we've now passed 1 Billion Android device activations.』(註:亦即,全球目前有超過十億台的 Android 行動裝置被啟動。)。此一數據若再相較於 Google 官方在 2013 年 5 月中旬舉行之 Google I/O 2013 大會中所公佈的九億台全球 Android 行動裝置啟動數量之統計資料,則搭載 Android 作業系統的行動裝置在這四個月中已增加了將近一億台的啟動數量。

  

綜觀上述這些統計數據,或許意味著 Android 作業系統越來越有機會持續坐穩全球智慧型手機消費市場的龍頭角色。

 

同時,上述這些統計數據似乎也意味著 Android 作業系統經過全球眾多 Android 生態圈成員在這幾年來的努力下,它已逐漸於全球智慧型手機市場中奠定了一個較穩固的市佔率基礎,此一累積之基礎或許可讓 Android 手機應用程式開發者在良好氛圍環境下發揮所長、構築夢想。

 

如同我們先前的文章所述:『當行動世界中的網路基礎建設、手機硬體、作業系統以及各類雲端服務等機制陸續成熟後,則真正能整合這些機制並能達成行動運算之最終目標者或許就是手機應用程式。』

 

所以,Android 生態圈的發展除了有更新穎的作業系統版本、更讓人喜愛的手機外觀、更高性價比的手機硬體設備之外,或許更重要的是要能在更多不同的領域當中,有更多具創意與開發技術能力的人們願意投入 Android 手機應用程式開發領域之中,以發展出更多元應用的 Android 手機應用程式,去造福更多的 Android 智慧型手機使用者。 

 

另外,對於 Android 相關硬體研發產業而言,如何能夠在自身既有的硬體研發之優勢上,適度融合 Android 手機應用程式之軟體開發技術,逐漸轉型為 Android 智慧型手機軟硬體整合服務產業,此或許是未來發展的一項機會與潛力也說不一定。 

 

當然,此一願景的蘊釀條件或許在於有更好且更低進入障礙的 Android 手機應用程式開發環境。

 

其中,如何讓 Android 手機應用程式開發者可以更容易地開發出具網路連線程式功能的 Android 手機應用程式,進而使得更多的 Android 手機應用程式能與網際網路/雲端服務相連接,或許是一個值得 Android 生態圈成員需要更剹力發展與思考的方向。

 

所以,Android 在 Google I/O 2013 開發者大會當中,除了推出目前仍為早期預覽版本的 Android Studio 開發工具之外,更向全球的 Android 手機應用程式開發者推荐了一個由 Google 工程師所開發的 Android 第三方函式庫 (Third Party Library):Volley (以下稱為 Volley HTTP Library )。

 


Volley HTTP Library 介紹


 

Volley HTTP Library 是什麼呢?

 

依據 Volley HTTP Library 主要負責研發者 Ficus Kirkpatrick 所述:『Volley, a library me and a few of my teammates developed that makes it really easy to build super-fast networked applications for Android.』(中譯:Volley 為一個 Android 第三方函式庫,是由 Ficus 與幾位團隊成員共同研發。它能讓 Android 手機應用程式開發者簡易地開發出更快速的 Android 手機應用程式之網路連線程式功能。 )  

 

在此所謂的網路連線 (Networked) 程式功能係指透過 HTTP ( HyperText Transfer Protocol, 超文件傳輸協定 ) 進行網路連線工作之應用程式功能。

 

通常而言,Android 手機應用程式開發者可以透過 Volley Library 進行純文字資料、JSON 格式編碼資料 ( JavaScript Object Notation ) 或圖片等檔案格式的單向或雙向資料連線傳輸工作。 

 

若簡單地以主從式網路連線架構 ( Client-Server Model ) 來看,具網路連線程式功能的 Android 手機應用程式即為在 HTTP 網路連線過程當中的 HTTP 客戶端( HTTP Client ) ,而與它的連線對象即為處於遠端 HTTP 伺服器(又稱 Web 伺服器)。

 

更進一步地說,若您的 Android 手機應用程式是使用原生的使用者介面、且需要上傳或者下載來自您儲存於遠端 HTTP 伺服器(又稱 Web 伺服器)之資料時,則您多半需要將您的 Android 手機應用程式實作出網路連線程式的功能。

 

由於,Android 手機應用程式開發者需要懂得綜合運用 Android SDK 所提供的 HTTP 客戶端網路連線 (比如 HttpURLConnection ) 、非同步任務處理 (比如 AsyncTask ) 等 API ,才能進行這類功能的程式開發工作。

 

因此,對於自修 Android 手機應用程式開發的初學者而言,或許並不容易自行理解這些 API 的相關實作運用。

 

亦因如此, Volley HTTP Library 的問世或許就如同 Google I/O 2013 開發者大會所形容的標題般:『Volley: Easy, Fast Networking for Android』(中譯:Volley -為 Android 提供簡單、快速的網路程式開發技術),它似乎能讓更多的 Android 手機應用程式開發者更簡單地開發出具備網路連線程式功能的 Android 手機應用程式。

 

深入言之,Volley HTTP Library 已預先將開發網路連線程式功能所必要的程式碼,集合撰寫成一個適用於 Android 手機應用程式開發專案之第三方函式庫。

 

相較於原先的開發流程而言,Android 手機應用程式開發者可以直接透過 Volley HTTP Library 所提供的相關 API 並用更少的程式碼,便能進行 Android 手機應用程式的網路連線程式之開發工作。

 

由於,Volley HTTP Library 剛推出不久,華文世界讀者可能對 Volley HTTP Library 尚不熟悉,因此,我們希望藉由《最新 Android App 網路連線程式設計範例》此系列的網路教學中文講義,讓台灣、香港、澳門以及中國大陸等華文世界的讀者朋友們能夠更進一步地認識 Volley HTTP Library 的技術應用。

 

在此,我們要請您注意的是: Volley HTTP Library 目前並非為 Android SDK 的一部份,它為獨立於 Android SDK 之外的第三方函式庫。而它的授權條款目前為 Apache License, Version 2.0 ,在使用 Volley HTTP Library 之前請詳閱並遵守該類授權條款之相關說明。(註:Volley HTTP Library 雖不是 Android SDK 的一部份,但它是在 AOSP(Android Open Source Project ) 的一個專案。)

 

還有,據 Google I/O 2013 開發者大會 當時所舉行的 《Volley: Easy, Fast Networking for Android》 會談所示,Volley HTTP Library 有一個網路論壇,若您在使用 Volley HTTP Library 時有發生任何問題時,您或許可以至該網路論壇當中尋求解決方法。

 

其次,Volley HTTP Library 比較適合來自您儲存於遠端 HTTP 伺服器(又稱 Web 伺服器)之圖片、純文字資料或 JSON 編碼格式資料之網路連線處理。

 

在此所述之純文字資料,其可包括非 JSON 編碼格式資料之純文字資料,比如 HTML 或 XML 編碼格式資料。

 

然而,因為 Volley HTTP Library 目前僅提供 JSON 編碼格式資料的剖析方法,所以,若非 JSON 編碼格式資料的話,則 Android 手機應用程式開發者需要另外找尋其它方法進行資料剖析或使用者介面呈現之工作。

 

至於,若您需要撰寫更為客製化之網路連線程式功能或者需要進行大型檔案資料的網路連線傳輸動作時,則您或許仍需要另行深入理解原先 Android 手機應用程式的網路連線程式功能之開發流程。

 

此外,因為 Volley HTTP Library 並非是 Android SDK 的一部份,所以,Android 手機應用程式開發者若要使用 Volley Library 所提供的 API ,則開發者需要另行在其 Android 手機應用程式開發專案之中下載安裝 Volley HTTP Library 的相關檔案。

 

亦因如此,本研究室在《最新 Android App 網路連線程式設計範例》此系列的網路教學講義之第一講中,特別專文說明如何在 ADT ( Android Development Tools ) 之內下載與安裝 Volley HTTP Library 、以及如何在 Android 手機應用程式開發專案與已安裝完成的 Volley HTTP Library 進行繫結。

 

在此要提醒各位的是:此系列的網路教學講義採用撰文當下最新版本的 ADT ( Android Development Tools ) r22 進行圖文教學,其操作步驟可能會與撰文當下仍為早期預覽版本的 Android Studio 0.2.x 不同。

 

若您尚未下載安裝 ADT ( Android Development Tools ) ,則您或許可以先詳閱本研究室先前所撰寫的網路教學講義。

 


變更 ADT 的文字檔案編碼設定值


 

另外,由於,我們為了避免您在 ADT ( Android Development Tools ) 中下載與安裝 Volley HTTP Library 之後,可能會發生文字編碼之問題,因此,我們在以下先說明如何將 ADT ( Android Development Tools ) 的文字檔案編碼從系統預設的 “ MS950 “ 更改為 “ UTF-8 “。

 

首先,請您先開啟您的 ADT ( Android Development Tools ) ,並點選其 ”Window ” 下拉式功能表裡頭的 ” Preferences ” 選項 ( 如下圖箭頭1、2處所示 ) 。

 

Android SDK 網路程式設計教學

 

當出現 ” Preferences ” 對話視窗時,請您點選該對話視窗左側之 ” Workspace ” 頁籤 ( 如下圖箭頭1處所示 ) ,此時對話視窗的右側會出現 “ Workspace “ 畫面,請下拉選擇 “ Text file encoding “欄位之 “ Other: “ 下拉式選單中的 “ UTF-8 ” 項目 ( 如下圖箭頭2處所示 ) 。

 

最後,請按下 “OK” 按鈕,以完成上述設定動作 ( 如下圖箭頭3處所示 ) 。

 

Android SDK 網路程式設計教學

 


從 Git 服務匯入 Volley HTTP Library 專案之原始碼檔案


 

接下來,我們將開始向大家說明如何在 ADT ( Android Development Tools ) 之內下載與安裝 Volley HTTP Library 、以及如何在 Android 手機應用程式開發專案與已安裝完成的 Volley Library 進行繫結。

 

由於,Volley HTTP Library 專案之原始碼檔案是放置於使用 Git 版本控制工具的 android.googlesource.com 網站之中 ,因此,您需要運用 ADT 所提供的 “ Project from Git ” 功能進行 Volley HTTP Library 之下載動作。

 

因此,請您回到 ADT ( Android Development Tools ) 的主畫面後,點選 ” File ” 下拉式功能表裡頭的 ” Import ” 選項 ( 如下圖箭頭1、2處所示 ) 。

 

Android SDK 網路程式設計教學

 

在出現 ” Import ” 對話視窗時,請您點選 ” Git ” 選項 ( 如下圖箭頭1處所示 ) 之下的 ” Projects from Git ” 子選項 ( 如下圖箭頭2處所示 ) ,並按下 ” Next > ” 按鈕 ( 如下圖箭頭3處所示 ) 。

 

Android SDK 網路程式設計教學

 

隨後出現 ” Import Projects from Git ”之 ” Select Repository Source ” 對話視窗時,請您點選 ” URI ” 選項 ( 如下圖箭頭1處所示 ) ,並按下 ” Next > ” 按鈕 ( 如下圖箭頭2處所示 ) 。

 

Android SDK 網路程式設計教學

 

在您看到 ” Import Projects from Git ”之 ” Source Git Repository ” 對話視窗出現時,請您在 ” URI ” 欄位中輸入  https://android.googlesource.com/platform/frameworks/volley/ ( 如下圖箭頭1處所示 ) ,並按下 ” Next > ” 按鈕 ( 如下圖箭頭2處所示 ) 。

 

Android SDK 網路程式設計教學

 

當出現 ” Import Projects from Git ”之 ” Branch Selection ” 對話視窗時,請您直接按下 ” Next > ” 按鈕 ( 如下圖箭頭1處所示 ) 。

 

Android SDK 網路程式設計教學

 

然後,當出現 ” Import Projects from Git ”之 ” Local Destination ” 對話視窗時,若您不需任何設定值變更之動作時,則請您保留預設值並直接按下 ” Next > ” 按鈕 ( 如下圖箭頭1處所示 ) 。

 

Android SDK 網路程式設計教學

 

接著,當您看到 ” Import Projects from Git ”之 ” Import Projects ” 對話視窗時,若您不需任何設定值變更之動作時,則請您保留預設值並直接按下 ” Finish ” 按鈕 ( 如下圖箭頭1處所示 ) 。

 

Android SDK 網路程式設計教學

 


將 Volley HTTP Library 專案設定為 Library 形式


 

此時, Volley HTTP Library 會以專案 (Project) 的形式下載匯入您的 ADT ( Android Development Tools ) 之中。

 

由於,我們還需要將 Volley HTTP Library 從原先的專案 (Project) 之形式,轉變為可供您所建立之 Android 手機應用程式開發專案使用的 Android 第三方函式庫 (Third Party Library)。

 

因此,當 Volley HTTP Library 之專案下載匯入您的 ADT ( Android Development Tools ) 之後,請您點選在 “ Package Explorer “ 中的 “ Volley “ 專案名稱,並且請您按下滑鼠右鍵 ( 如下圖箭頭1處所示 ) 。

 

此時,畫面會出現彈出式視窗,請您點選該彈出式視窗的 “ Properties “ 選項 ( 如下圖箭頭2處所示 ) 。

 

Android SDK 網路程式設計教學

 

隨後會出現 ” Properties for Volley ” 對話視窗,請您點選對話視窗左側之 ” Android ” 頁籤 ,當對話視窗右側出現 “ Android “ 之畫面時,請勾選 “ Library “ 欄位之 “ Is Library “  項目 ( 如下圖箭頭1處所示 ) ,並直接按下 ” OK ” 按鈕 ( 如下圖箭頭2處所示 ) 。

 

Android SDK 網路程式設計教學

 

當您完成上述之步驟後,此 Volley HTTP Library 才會從原先的專案 (Project) 之形式,轉變為可供您所建立之 Android 手機應用程式開發專案使用的 Android 第三方函式庫 (Third Party Library)。

 


建立 Android 手機應用程式開發專案


 

由於,為了練習使用 Volley HTTP Library ,您需要建立一個全新的 Android 手機應用程式開發專案,並且您還需要將此全新的 Android 手機應用程式開發專案與上述已轉換為可供運用的 Volley HTTP Library 繫結 。

 

因此,請您在 ADT ( Android Development Tools ) 中點選 ” File ” 下拉式功能表裡頭的 ” New ” 選項之 ” Other ” 子選項 ( 如下圖箭頭1、2、3處所示 ) 。

 

Android SDK 網路程式設計教學

 

在出現 ” New ” 對話視窗時,請您點選 ” Android ” 選項 ( 如下圖箭頭1處所示 ) 之下的 ” Android Application Project ” 子選項 ( 如下圖箭頭2處所示 ) ,並按下 ” Next > ” 按鈕 ( 如下圖箭頭3處所示 ) 。

 

Android SDK 網路程式設計教學

 

接下來您會看見 ” New Android Application – Creates a new Android Application  ” 對話視窗。其包括以下六個欄位 ( 如下圖箭頭1、2處所示 ) :

 


  • Application Name:

    ” Application Name ” 欄位係指此 Android 手機應用程式的對外使用名稱,它是做為顯示於 Android 智慧型手機/平板電腦螢幕中,讓使用者能看得到的名稱。在此可以自由使用中文字命名、也可以有空格或其他符號,但仍以簡而有力為佳。

    在我們這個網路教學範例中,此 Android 手機應用程式開發專案的 ” Application Name ” 欄位設為 MyHttpApp。


  • Project Name:

    ” Project Name ” 欄位係指此 Android 手機應用程式開發專案的檔案資料夾名稱,它會當作此 Android 手機應用程式開發專案建立後的檔案資料夾名稱。此名稱可使用半形大小寫英文字母、數字命名。

    在我們這個網路教學範例中,此 Android 手機應用程式開發專案的 ” Project Name ” 欄位設為 MyHttpApp。

  • Package Name:

    ” Package Name “ 欄位係指此 Android 手機應用程式開發專案的 Java 套件名稱,它是做為 Java 套件命名空間 ( Package Namespace ) 之用,其規則與 Java 程式語言採取的方式相同。

      •您的原始程式碼將會放置在以此套件命名空間規則所產生的檔案目錄之中。
      •在此您只能使用半形小寫英文字母命名,並且至少要以兩個英文單字組成,每個英文單字之間以 . 做為間隔。
      •您或許可以用右列規則命名:com.組織單位英文名稱.專案英文名稱。
      •此名稱必須具備獨特性,不可與其它人重複。

在我們這個網路教學範例中,此 Android 手機應用程式開發專案的 ” Package Name ” 欄位設為 tw.gururu.myhttpapp。


    • Minimum Required SDK:

      ” Minimum Required SDK “ 欄位係指此 Android 手機應用程式開發專案最低可支援的 Framework API 版本。

      ADT ( Android Development Tools ) 建議此值最好要能涵蓋於全球總使用率約百分之九十五的多個Android 作業系統版本 ( 即 Framework API 版本 ) ,因此 ADT ( Android Development Tools ) 目前預設該值為 “ API 8: Android 2.2 ( Froyo ) “ ,因為 Android 2.2 之上的多個 Android 作業系統版本之全球總使用率現今已超過百分之九十五。

      更深入地說,我們建議您所開發的 Android 手機應用程式開發專案不能只著眼相容於當下最新的 Android 作業系統版本而已,而是要能同時相容於目前全球使用率約百分之九十五的多個 Android 作業系統版本。

    • Target SDK:

      ” Target SDK “ 欄位係指此 Android 手機應用程式開發專案 ( Android Application Project ) 在被測試時,最高使用之目標 Framework API 版本。

      我們建議您可以設成“ API 18: Android 4.3 ( Jelly Bean ) “ 或者  “ API 17: Android 4.2 ( Jelly Bean ) “。

    • Compile With:

      ” Compile With “ 欄位係指此 Android 手機應用程式開發專案 ( Android Application Project ) 在被編譯時,所要使用之 Framework API 版本。

      一般而言,此值通常會設定為當下最新的 Framework API 版本,以供 Android 手機應用程式開發者可使用到最新的 Framework API 之功能,但開發者仍需注意新功能的相容性問題。

      ADT ( Android Development Tools ) 目前已預設該值為 “ API 18: Android 4.3 ( Jelly Bean ) “ 。

    • Theme:

      ” Theme “ 欄位係指此 Android 手機應用程式開發專案之使用者界面所要採用的預設佈景主題基準。

      ADT ( Android Development Tools ) 已預設該值為 “ Holo Light with Dark Action Bar “ ,關於 Holo 佈景主題的詳細介紹,歡迎您點閱我們先前所寫的文章。


    當您完成輸入上述各項目之後,請按下 ” Next > ” 按鈕 ( 如下圖箭頭3處所示 ) 。

     

    Android SDK 網路程式設計教學

     

    當您按下 ” Next > ” 按鈕後,畫面中會出現 ” New Android Application – Configure Project ” 對話視窗,其已預設勾選以下三個欄位 ( 如下圖箭頭1處及我們的文字介紹所示 ) 。

     


    • Create custom launcher icon:

      啟動圖示 ( Launcher Icon ) 係指此 Android 手機應用程式顯示在使用者的 Android 作業系統之桌面 ( Home Screen ) 的啟動捷徑圖示,其通常是做為提供使用者啟動此 Android 手機應用程式的標誌圖樣之用。

      我們建議您在建立 Android 手機應用程式開發專案之前,可以自行先設計專屬此 Android 手機應用程式之啟動圖示 ( Launcher Icon ) ,並將其儲存成 PNG 格式的圖檔。

      當您勾選了 ” Create custom launcher icon ” 欄位之後,您將可以為專屬您的 Android 手機應用程式之啟動圖示 ( Launcher Icon ) 進行 ADT ( Android Development Tools ) 所制定的標準格式化動作。

    • Create Activity:

      Activity 是建構 Android 手機應用程式的四大應用程式組件之一,它的目的是做為掌控使用者介面由生到滅的生命週期過程,以及與使用者介面相關的互動事件之用。

      普遍來說,每一個 Activity 會對應一個 Layout 之 XML 檔案。顧名思義,若您的 Android 手機應用程式需要在螢幕之中顯示一頁畫面時,則就需要建立一個繼承 Activity 類別之 Java 原始碼檔案 ( 以下簡稱 Activity 檔案 ) 及一個 Layout 之 XML 檔案 。

      通常而言,只要您的 Android 手機應用程式具有畫面且並非隱藏於 Android 作業系統後端默默執行的程式,那麼該 Android 手機應用程式開發專案就需要至少擁有一個主要的 Activity 檔案及一個與其對應 Layout 之 XML 檔案。

      若您還無法理解此架構,您可以將這個主要的 Layout 之 XML 檔案初步想像成網站中的首頁角色 ( 如 index.html ) ,而該主要的 Activity 檔案則像是管控該首頁角色的程式碼 ( 如 PHP 或 JSP ) 。

      我們將此類似網頁中首頁角色的頁面稱為 Android 手機應用程式之主畫面。

      因此,當您勾選 “ Create Activity ” 欄位之後,您將可以為您的 Android 手機應用程式建立一個主畫面以及管控該主畫面的 Activity 檔案。

    • Create Project in Workspace:

      當您勾選 ” Create Project in Workspace ” 欄位之後,則您的這個 Android 手機應用程式開發專案將儲存於預設的 Workspace 工作目錄之檔案資料夾路徑中,該工作目錄的檔案資料夾路徑通常為 C:/users/您的Windows帳號名稱/workspace/ 。

      若您不勾選 ” Create Project in Workspace ” 欄位的話,則您可將該 Android 手機應用程式開發專案指定另存於其它檔案資料夾之中。


    最後,若您無額外的設定需求時,則請您保留以下系統預設勾選之欄位,並請按下”Next >”按鈕 ( 如下圖箭頭1處指向方框處、箭頭2處所示 ) 。

     

    Android SDK 網路程式設計教學

     

    隨後會出現 “ Configure Launcher Icon ” 對話視窗。

     

    啟動圖示 ( Launcher Icon ) 係指此 Android 手機應用程式顯示在使用者的 Android 作業系統之桌面 ( Home Screen ) 的啟動捷徑圖示,其通常是做為提供使用者啟動此 Android 手機應用程式的標誌圖樣之用。

     

    Android 官方為了讓 Android 手機應用程式開發者皆能夠在其 Android 手機應用程式開發專案中建構 Android 標準格式化的啟動圖示 ( Launcher Icon ) ,因此 Android 官方在近期版本的 ADT ( Android Development Tools ) 之中,已加上了此 “ Configure Launcher Icon ” 設定啟動圖示標準格式化功能 ( 如下圖箭頭1處指向方框處 ) ,相關設定項目介紹如下所述 :

     


    • Foreground:

      ” Foreground “ 欄位係指啟動圖示 ( Launcher Icon ) 的前景,亦即該啟動圖示 ( Launcher Icon ) 的主元素。其分為三種,一種為 “ Image ” ( 點陣圖片 ) 、 “ Clipart “ ( 向量圖片 )、 “ Text “ ( 文字 ) 。

      若您是準備正式開發該 Android 手機應用程式的話,則我們建議您選取 “ Image “ 項目 。亦即在建立 Android 手機應用程式開發專案之前,自行先設計該主元素 ,並將其儲存成 PNG 格式的點陣圖檔。

      另外,我們也建議您或許可以先去除該圖之背景,使背景能夠呈現完全透明化之效果,再行存檔。

      然後,按下 “ Foreground “ 欄位的 “ Image “ 項目,並在其 “ Image File “ 子項目中指定該圖檔之檔案路徑,以便將該圖檔匯入並進行 Android 之啟動圖示 ( Launcher Icon ) 的標準格式化動作。

    • Foreground Scaling:

      ” Foreground Scaling “ 欄位係指啟動圖示 ( Launcher Icon ) 的主元素在過大時之縮放方式,其分為兩種,一種為 “ Crop “ ( 裁剪 ) 、另一種為 “ Center “ ( 置中 ) 。亦即,若您的啟動圖示 ( Launcher Icon ) 的主元素若大於 Android 啟動圖示 ( Launcher Icon ) 所規定之範圍時,將要採取的縮放方式。

    • Shape:

      ” Shape “ 欄位係指啟動圖示 ( Launcher Icon ) 本身的外形,其分為三種,其一為 “ None “ ( 無 ) 、其二為 “ Square “ ( 方形 ) 、其三為 “ Circle “ ( 圓形 ) 。

      若您要保持啟動圖示 ( Launcher Icon ) 的主元素之原狀而不加任何外形時,請選擇 “ None “ 項目。

      另外,如果您要將啟動圖示 ( Launcher Icon ) 的主元素外圍加上方形立體背景或圓形立體背景者,則請依您的開發需求選擇 “ Square “ ( 方形 ) 或者 “ Circle “ ( 圓形 ) 。

    • Background Color:

      ” Background Color “ 欄位係指啟動圖示的方形立體背景或圓形立體背景之顏色。

      若您在 “ Foreground “ 欄位中選擇的是 “ Clipart “ 項目或者 “ Text “ 項目的話,則該對話視窗中還會出現 “ Foreground Color “ 欄位,該欄位係指啟動圖示的主元素之顏色,亦即您所選取之向量圖片或文字的顏色。

      但是,若您選取的是 “ Image “ 項目的話,則不會出現 “ Foreground Color “ 欄位。

    • Preview:

      當您完全上述各項欄位之設定工作後,您將可直接在 “ Preview “ 欄位中預覽該啟動圖示 ( Launcher Icon ) 在不同解析度 ( DPI ) 之螢幕環境的模樣。



    確定後,請按下”Next >”按鈕 ( 如下圖箭頭2處所示 ) 。

     

    Android SDK 網路程式設計教學

     

    由於,我們剛才已勾選 “ Create Activity ” 欄位,因此,隨後在此會出現 “ Create Activity ” 對話視窗,並且該對話視窗中已預先勾選 “ Create Activity ” 欄位。亦即,您將可以為您的 Android 手機應用程式開發專案建立一個主畫面以及管控該主畫面的 Activity 檔案。


    其分為三種,其一為 “ Blank Activity ” ( 空白主畫面的 Activity ) 、其二為 ” Fullscreen Activity ” ( 附有可隱藏系統 UI 的全螢幕主畫面之 Activity ) 、其三為 ” Master/Detail Flow ” ( 具主從分割式主畫面的 Activity,僅支援 API 11: Android 3.0 ( HoneyComb ) 以上版本 ) 。

    在我們這個網路教學範例中,此 Android 手機應用程式開發專案的 ” Create Activity ” 欄位請設為 “ Blank Activity ” 項目,並請按下 ” Next > ” 按鈕 ( 如下圖箭頭2、3處所示 ) 。

     

    Android SDK 網路程式設計教學

     

    當您選擇 “ Blank Activity “ 項目並按下 ” Next > ” 按鈕後,畫面中會出現 “ Blank Activity ” 對話視窗,其包括以下三個欄位 ( 如下圖箭頭1處指向方框處所示 ) :

     


    • Activity Name:

      “ Activity Name “ 欄位係指在此 Android 手機應用程式開發專案做為管控主畫面的 Activity 檔案之名稱。目前新式的命名規則為 MainActivity 。

      若就實作的角度言之,在 Android 手機應用程式開發專案中的每一個 Activity 應用程式組件,其實就是一個繼承 Activity 類別的 Java 類別 ( Class ) 檔案。因此, “ MainActivity “ 即為此 Java 類別檔案之名稱。

      另外,若您不希望將管控主畫面的 Activity 檔案之名稱取名為 “ MainActivity “ 時,則可重新命名。

      但該名稱仍需依循 Java 類別命名規則行之。亦即僅能為半形英文或數字命名,不過開頭不能為數字。

      還有,它可由多個英文單字組合而成,每個單字的首位字母需大寫,其餘字母小寫。

      同時,我們建議每一個 Activity 名稱的最後一個單字應為 Activity ,以供您於開發階段作為識別之用,比如 “ MainActivity “ 。

    • Layout Name:

      ” Layout Name “ 欄位係指上述 Activity 檔案所對應的那個主畫面的 Layout 之 XML 檔案名稱。

      該名稱之命名規則為全部僅能半型小寫英文字母或數字命名,但是,它可由多個英文單字組合而成,兩英文單字間必須加上半型下底線符號 _ 。

      一般而言,其名稱會以與其對應的 Activity 檔案名稱之倒置命名。比如 “ MainActivity “ 所對應的 Layout 之 XML 檔案名稱則多半為 “ activity_main “ 。

    • Navigation Type:

      ” Navigation Type “ 欄位係指 Android 應用程式的多頁面導覽方式。

      其分為四種,其一為 “ None “ ( 無 ) 、其二為 “ Fixed Tabs + Swipe “ ( 固定式頁籤 + 水平滑動頁面 ) 、其三為 “ Scrollable Tabs + Swipe “ ( 可同步水平滑動式頁籤與頁面 ) 、其四為 Dropdown ( 下拉式清單 ) 。

      雖然,除了 “ None “ 項目之外,ADT ( Android Development Tools ) 為 Android 手機應用程式開發者提供了上述這三種的多頁面導覽方式,以提高多頁面的 Android 手機應用程式之操作便利性。

      可是,由於上述這三種的多頁面導覽方式皆僅支援 API 11: Android 3.0 ( HoneyComb ) 以上版本,因此,若您的Android 手機應用程式開發專案 ( Android Application Project ) 設定 “ Minimum Required SDK “ 欄位為 “ API 8: Android 2.2 ( Froyo ) “ 時,則您在此僅能選取 “ None ” 。

      另外,若您的 Android 手機應用程式開發專案 ( Android Application Project ) 僅會有一個頁面時,則也建議您選取 “ None ” 。

    當您確定上述所有 Android 手機應用程式開發專案 ( Android Application Project ) 的設定項目後,請按下 ” Finish ” 按鈕 ( 如下圖箭頭2處所示 ) 。

     

    Android SDK 網路程式設計教學

     


    將 Volley HTTP Library 與 Android 手機應用程式開發專案繫結


     

    由於,當您已建立完成此 Android 手機應用程式開發專案 (我們命名為 MyHttpApp ) 後,將 Volley HTTP Library 與您所建立完成的 Android 手機應用程式開發專案繫結。

     

    因此,請您點選在 “ Package Explorer “ 中的 “ MyHttpApp “ 專案名稱,並且請您按下滑鼠右鍵 ( 如下圖箭頭1處所示 ) 。

     

    此時,畫面會出現彈出式視窗,請您點選該彈出式視窗的 “ Properties “ 選項 ( 如下圖箭頭2處所示 ) 。

     

    Android SDK 網路程式設計教學

     

    隨後出現 ” Properties for MyHttpApp ” 對話視窗時,請您點選對話視窗左側之 ” Android ” 頁籤 ,當對話視窗右側出現 “ Android “ 頁籤之畫面時,請按下 “ Library “ 欄位之 “ Add... “ 按鈕 ( 如下圖箭頭1處所示 ) 。

     

    Android SDK 網路程式設計教學

     

    隨後出現 ” Project Selection ” 對話視窗時,請您點選 ” Volley ” 選項 ( 如下圖箭頭1處所示 ) ,並按下 ” Next > ” 按鈕 ( 如下圖箭頭2處所示 ) 。

     

    Android SDK 網路程式設計教學

     

    隨後回到 ” Properties for MyHttpApp ” 對話視窗時,請您直接按下 “ Library “ 欄位之 “ OK “ 按鈕 ( 如下圖箭頭1處所示 ) 。

     

    Android SDK 網路程式設計教學

     

    請您回到 ADT ( Android Development Tools )  主畫面,請您點開在 “ Package Explorer “ 中的 “ MyHttpApp “ 專案,並接著點開在它之下的“ Android Dependencies “ 子目錄。

     

    您會發現該子目錄下多了一個名為 volley.jar 的檔案,此代表您已經成功地在 Android 手機應用程式專案中與先前已下載安裝的 Volley HTTP Library 完成繫結。

     

    接著,您才可以使用 Volley HTTP Library 進行 Android 手機應用程式的網路連線功能之開發。

     

    Android SDK 網路程式設計教學

     

    此篇網路教學講義就在此結束,感謝您的閱讀!

     

    未來,敬請您等候此系列網路講義的下一篇文章之發表:最新 Android App 網路連線程式設計範例 (第二講)。

     

    此篇講義的主要參考文獻來源:Android Developers 官網

     

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

     

    我們編寫的 Android SDK 教學課程講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 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 App 網路連線程式設計範例 (第一講) - Volley HTTP Library 入門教學 第一版本完成日:2013年09月05日

    本講義之內文、排版等著作權或其他智慧財產權歸屬 孫傳雄 與 孫傳雄研究室 所有,非經書面同意禁止任何形式之翻印、全文轉貼或者授課使用行為。但例外允許在網際網路上引用此講義之網址連結。
    本講義之內文所提及或者引用的公司名稱、產品名稱以及所引用的文字、商標、Youtube短片、產品相片或者網站頁面,均為其所屬公司所擁有,特以聲明。


    版權所有 翻印必究


    2011年5月26日

    [Android 教學] 淺談 Android Open Accessory

    Android Open Accessory | ADK


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


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


    Android 3.1 平板電腦作業系統以及它的開發工具套件 Android 3.1 SDK 終於在美國時間 2011年5月10日 至 2011年5月11日 舉行的 Google I/O 2011 大會正式發表。(註: Android 2.3.4 智慧型手機作業系統也在同時間一併推出。)

    Android 3.1 平板電腦作業系統是 Google 繼美國時間 2011年2月22日 首次推出 Android 3.0 平板電腦作業系統之後的更新版本。

    對於 Android 應用程式開發者而言,除了欣喜 Android 再一次新的變革之外,我們相信大家也期待在這一次的改版之中,能看見更多未來的發展機會與展望。

    因此,我們希望透過此篇 Android 教學講義之編寫,讓身為 Android 應用程式開發者的讀者朋友們,能夠更進一步地暸解此回 Android 3.1 平板電腦作業系統的改版對於開發者之影響。以下為本篇 Android 教學講義的六項主軸:


    • Android 教學: Android 3.1 的新開發功能

    • Android 教學: USB ( Universal Serial Bus )

    • Android 教學: Accessory Mode 與 Host Mode

    • Android 教學: Android Open Accessory Development Kit ( ADK )  的硬體初始溝通程序

    • Android 教學: ADK 開發板 ( Android Open Accessory Compatible Development Boards )

    • Android 教學: Android Open Accessory Development Kit ( ADK ) 的已知限制


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

    本講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 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.1 的新開發功能


    【孫傳雄研究室 編著】綜觀此次 Android 3.1 平板電腦作業系統的新功能,主要包括:新增讓使用者可自行調整視窗大小的桌面小工具介面元件  ( Home Screen Widgets ) 、支援新形態的媒體傳輸協定 ( Media Transfer Protocol , MTP ) 、支援以串流音訊為主的即時傳輸協定 ( Real-time Transport Protocol , RTP ) 以及更廣泛地支援滑鼠、搖桿與遊戲手柄 ( Mice , Joysticks , and Gamepads ) 等 USB 外部週邊設備等部份。

    不過,我們認為此次 Android 3.1 平板電腦作業系統的改版,對於電子產業與資訊軟體產業的讀者朋友而言,最值得關注的要點不在平板電腦本身,而是在於 Android 開放性週邊設備開發套件 ( Android Open Accessory Development Kit , ADK ) 的一併推出。(註: Android Open Accessory Development Kit ( ADK ) 內含 Android Open Accessory APIs )

    更進一步地說,我們認為 Android Open Accessory Development Kit ( ADK ) 的推出是 Android 3.1 平板電腦作業系統、甚至是 2.3.4 智慧型手機作業系統之中最重要的變革。(註: Android 3.1 平板電腦作業系統已內建 Android Open Accessory Development Kit ( ADK ) 的 Android Open Accessory APIs ,同時 Android 2.3.4 智慧型手機作業系統可以透過 Google APIs 附加函式庫 ( the Google APIs add-on library ) 的方式運作。)

    原因無他,主要是 Android Open Accessory Development Kit ( ADK ) 讓相容於它的 USB 週邊設備能夠透過 USB 外接式傳輸介面的方式,主動地與 Android 2.3.4 智慧型手機或者 Android 3.1 平板電腦啟動連接,並進行 USB 連接傳輸工作。

    此舉大幅地增加了 Android 智慧型手機或平板電腦與 USB 週邊設備之間的互動關係。

    像是 Google I/O 2011 大會的場內人員,他們便利用搭載著 Android 3.1 平板電腦作業系統的 Motorola Xoom 平板電腦,在一個大型的實體迷宮之中操控一顆 5000 磅的滾球(影片來源: IntoMobile on YouTube 影音頻道)。





    另外,據 Android Developers 官方部落格所示,也有人利用搭載著 Android 3.1 平板電腦作業系統的平板電腦,去操控一隻小型 Android 機器人玩具的雙手與身軀,並且讓機器人跳著迪士可舞蹈、它的眼睛還可閃爍著 LED 的亮光。(影片來源:chrisjrelliott 的 Youtube 影音頻道 )





    當然,這些 USB 週邊設備不會只是上述的迷宮滾球或者小型 Android 機器人玩具而已,在未來也可能包括更多內建機器人控制器 ( Robotics Controllers ) 的電子機器人或機器手臂、數位音樂播放設備 ( Musical Equipment ) 、健身運動器材 ( Exercise Equipment ) 、甚至自動販賣機 ( Kiosks ) 等…。

    這些 USB 週邊設備的未來發展潛力,仍有待於電子產業與資訊軟體產業的人們,實際去進行相關軟硬體的開發工作來實現。

    更進一步地說, Android 智慧型手機與平板電腦應用程式開發者在過去多半只能涉足於智慧型手機或平板電腦螢幕當中虛擬的軟體世界。

    然而,透過 Android Open Accessory Development Kit ( ADK ) 可以讓 Android 應用程式開發者用更簡易的方式,踏出螢幕的藩籬,實際運用高階程式語言去操控人們實際可觸的 USB 週邊設備。

    當開發者可以使用 Android SDK 相關的高階程式語言取代艱澀難懂的組合語言去控制 USB 週邊設備時,可能促使更多資訊軟體產業的開發者與電子產業業者合作,共同投入此一領域的產品開發工作。

    反過來說,由於 Android 允許 USB 週邊設備製造業者,在不用簽訂特定授權協議 ( Special Licensing ) 或支付授權金 ( Fees ) 的狀況下,便能夠自行生產能夠連接 Android 3.1 平板電腦或者 Android 2.3.4 智慧型手機的 USB 週邊設備。(資料來源: Android Developers 官方部落格)

    因此,對於這些業者而言,他們有可能在此基礎之上,結合龐大的 Android 生態圈,為自家的電子產品創造出更多元化且有創意的功能與產品線。

    所以,我們願意相信,此一舉措對於未來的電子產品發展有可能產生漸進式的深遠影響,同時也可能有間接地促進電子產業、通訊產業與資訊軟體產業在未來進行更緊密的匯流與結合。

    另一方面,由於過往大部份的 Android 智慧型手機礙於只能扮演 USB 設備端 ( USB Device ) 角色之故,導致使用者不易擴充它們的 USB 週邊設備。

    因此, Android 此舉或許也是希望 USB 週邊設備反過來成為 USB 主機端 ( USB Host ) 角色,再透過 Android Open Accessory Development Kit ( ADK ) 的協助,讓 USB 週邊設備仍然可以與不具備 USB 主機端 ( USB Host ) 角色的 Android 智慧型手機互動溝通,亦即轉個彎達成 Android 智慧型手機能夠擴充 USB 週邊設備的目的。(註:本篇講義下方會對 USB 主機端 ( USB Host )與 USB 設備端 ( USB Device ) 的概念架構進行說明。)

    所以,無論您是身為電子產業當中的一份子、或者您早已是 Android 手機或平板電腦應用程式的軟體開發者,皆有必要深入去探究 Android Open Accessory Development Kit ( ADK ) 的細節與發展。(註: Android 3.1 平板電腦作業系統已內建 Android Open Accessory Development Kit ( ADK ) 的 Android Open Accessory APIs,同時 Android 2.3.4 智慧型手機作業系統可以透過 Google APIs 附加函式庫 ( the Google APIs add-on library ) 的方式運作。)

    Android 教學: USB ( Universal Serial Bus )


    不過,當您要深入探究 Android Open Accessory Development Kit ( ADK ) 時 ,我們認為您應先理解 USB 的概念架構。

    因此,我們在以下的內容中,會透過 USB 的概念架構來談 Android Open Accessory Development Kit ( ADK ) 。

    我們在此要特別強調地是:由於,本講義的以下說明除了指涉於搭載 Android 3.1 平板電腦作業系統的平板電腦之外,也有部份與搭載 Android 2.3.4 智慧型手機作業系統的智慧型手機有關。

    因此,除非內容專指 Android 3.1 平板電腦或 Android 2.3.4 智慧型手機的部份外,不然.我們一律以 《 Android 裝置》統一稱呼搭載 Android 3.1 平板電腦作業系統的平板電腦以及搭載 Android 2.3.4 智慧型手機作業系統的智慧型手機。

    至於那些配合《 Android 裝置》並以 USB 做為連接方式的外部週邊設備,我們則一律以《 USB 週邊設備》稱呼。

    什麼是 USB 呢?

    USB ( Universal Serial Bus ) 中文稱為《通用串列匯流排》,它是普遍被用來做為電腦主機與週邊設備之間的外接式傳輸介面。

    由於, USB 支援熱插拔和隨插即用功能,而且還有成本低、速度快等優點,因此,目前它已逐漸成為許多電腦主機與週邊設備之間所通用的外接式傳輸介面。

    標準的 USB 通訊架構是以非對稱(即一對多)的 USB 主機端 ( USB Host ) <-> USB 設備端 ( USB Device ) 之主從架構方式運作,它的訊號交換方式為雙向的資料傳輸。

    更進一步地說,一個 USB 主機端的硬體可以內建多個 USB 插座 ( USB female sockets ) ,以供多個 USB 設備端的硬體透過 USB 線路插頭 ( USB plugs ) 同時雙向連接傳輸。

    所以,像是您的個人電腦之中,有可能內建了兩個以上的 USB 插座,以供您連接印表機、滑鼠、簡報筆、隨身碟或者網路攝影機等多種 USB 週邊設備。

    在此狀況之下,您的個人電腦多半是處於 USB 主機端 ( USB Host ) ,而印表機、滑鼠、簡報筆、隨身碟或者網路攝影機則處於 USB 設備端 ( USB Device ) 。

    更深入地說,處於 USB 主機端 ( USB Host ) 的硬體主控了整個 USB 資料傳輸的過程,以及提供 USB 資料傳輸時的電力供給。

    而,那些處於 USB 設備端 ( USB Device ) 的硬體則非 USB 資訊傳輸過程的主控者,它們只能遵從 USB 主機端 ( USB Host ) 硬體的發號司令,並且進行雙向資料傳輸以發揮各自所肩負的特定功能 ( Functions ) 。

    所以,當您的個人電腦沒有要求 USB 印表機進行列印的動作時,則 USB 印表機在正常情況之下,它是無法主動去啟動個人電腦的列印工作。

    那麼, Android 呢?

    當然,眾多的《 Android 裝置》也都已內建 USB 或者 micro-USB (尺寸較小的 USB 插座與插頭標準) 的外接式傳輸介面。

    像是 Acer ICONIA Tab A500 平板電腦便在機身上內建一個 USB 2.0 外接式傳輸介面插座。(影片來源: Acer 的 Youtube 影音頻道)





    又像是 ASUS Eee Pad Transformer 平板電腦則是在它的專屬基座之中配備兩個的 USB 2.0 外接式傳輸介面插座。(影片來源: ASUSTeK Computer 的 Youtube 影音頻道)





    不過,在各類 《 Android 裝置》之中,除了那些搭載著 Android 3.0 平板電腦作業系統的平板電腦外,大多數的 Android 智慧型手機所提供的 USB 外接式傳輸介面,通常只被用來做為 Android 智慧型手機與個人電腦之間同步資料傳輸之用,而非做為擴充週邊設備用途。

    亦即,此時的《 Android 裝置》多處於 USB 設備端 ( USB Device ),而非 USB 主機端 ( USB Host ) 。

    所以,在 Android 2.3.4 智慧型手機作業系統之前的 Android 智慧型手機,它們並不容易擴充 USB 週邊設備。

    另一方面,縱然那些搭載著 Android 3.0 平板電腦作業系統的平板電腦,它們比起 Android 智慧型手機來說,多了可以成為 USB 主機端 ( USB Host ) 硬體的優點,亦即它們可以擴充相關的《 USB 週邊設備》。

    但是,那些搭載著 Android 3.0 平板電腦作業系統的平板電腦仍無法廣泛地相容於許多現有的《 USB 週邊設備》。(註: Android 3.1 平板電腦作業系統所內建的 USB Host APIs 便是要解決此一相容性問題。 )

    同時,那些搭載著 Android 3.0 平板電腦作業系統的平板電腦與現有的許多 Android 智慧型手機一樣,仍無法讓處於 USB 主機端 ( USB Host ) 的《 USB 週邊設備》主動啟動資料傳輸工作。(註:據新聞指出,目前 Acer 、 Asus 與 Motorola 等品牌的 Android 3.0 平板電腦,可能於現在或者未來升級新版的 Android 3.1 平板電腦作業系統。)

    因此,如何改善 《 Android 裝置》的 USB 外接式傳輸介面之效用,成為 Android 3.1 平板電腦作業系統此次改版的重心。

    Android 教學: Accessory Mode 與 Host Mode


    Android 3.1 平板電腦作業系統對於 USB 外接式傳輸介面之相關程式開發的支援,可以用兩個面向去體察。


    • 其一, 設備模式 ( Accessory Mode ) :讓處於 USB 設備端 ( USB Device ) 的《 Android 裝置》硬體,可以連接那些特別做為 USB 主機端 ( USB Host ) 角色的《 USB 週邊設備》,此時《 USB 週邊設備》才能主動啟動資料傳輸工作並提供電力供給。請注意,它們兩方的資料傳輸是雙向互通的。

      此模式就像上述之例: Google I/O 2011 大會的場內人員,他們便利用搭載著 Android 3.1 平板電腦作業系統的 Motorola Xoom 平板電腦,在一個大型的實體迷宮之中操控一顆 5000 磅的滾球。

    • 其二, 主機模式 ( Host Mode ):讓處於 USB 主機端 ( USB host ) 的《 Android 裝置》,可以更廣泛地連接那些原本就做為 USB 設備端 ( USB Device )  角色的《 USB 週邊設備》,此時 《 Android 裝置》才能主動啟動資料傳輸工作並提供電力供給。請注意,它們兩方的資料傳輸仍是雙向互通的。


    上述兩模式的概念圖,如下所示(此概念圖為本講義修改重繪自 Android Developers 官網):


    image


    由於,上述的主機模式 ( Host Mode ) 與 Android Open Accessory Development Kit ( ADK ) 的 Android Open Accessory APIs 無關,而與 Android USB Host APIs  有關。

    因此,我們在凝聚討論焦點的考量之下,在本篇講義中僅會討論與 Android Open Accessory Development Kit ( ADK ) 的 Android Open Accessory APIs 有關的設備模式 ( Accessory Mode ) 的內容範疇。至於,主機模式 ( Host Mode ) 則待日後有機會再另闢講義說明。

    Android 教學: Android Open Accessory Development Kit ( ADK )  的硬體初始溝通程序


    講到此,您可能會問:『如何成為相容於 Android Open Accessory Development Kit ( ADK ) 的《 USB 週邊設備》?』

    匯整 Android Developers 官網內容所示:『您的《 USB 週邊設備》需要遵守 Android Open Accessory Development Kit ( ADK ) 的 Android 週邊設備協定 ( Android Accessory Protocol ) 、並為上述的設備模式 ( Accessory Mode,即 USB 週邊設備可為 USB 主機端 ( USB Host ) 角色 ) 且能提供 500mA / 5V 的電力供給。』

    當然,您還需要利用 Android SDK 與 ADK 去撰寫一套能夠安裝在 《 Android 裝置》並配合您的《 USB 週邊設備》之 Android 應用程式。

    關於此部份的細節說明,您可以參考 Android Developers 官網上的文件資料。

    至於,《 USB 週邊設備》如何開始與《 Android 裝置》進行硬體的初始溝通呢?

    以下,我們節錄翻譯 Android developers 官方部落格所發表一篇”A Bright Idea: Android Open Accessories”技術文章之部份內容如下:


    • USB 線路之連接確認:當《 USB 週邊設備》與 《 Android 裝置》之間的 USB 線路連接與裝置偵測無誤後,彼此才會開始進行溝通動作。

    • 識別代碼之產生:在此過程中,《 Android 裝置》會先依製造商與設備型號等資料,去產生一個屬於自己的新 VID/PID 識別代碼。

    • 設備模式 ( Accessory Mode ) 之支援確認:然後,《 USB 週邊設備》則需發送一個控制交易訊息 ( Control Transaction ) 給《 Android 裝置》,詢問它是否支援設備模式 ( Accessory Mode ) 。

    • 應用程式之相容確認:一旦《 Android 裝置》向《 USB 週邊設備》確認支援設備模式  ( Accessory Mode ) 時,《 USB 週邊設備》會透過控制交易訊息傳送一連串的字串給《 Android 裝置》。這些字串是提供《 Android 裝置》去確認它的系統中是否有相容於該《 USB 週邊設備》的應用程式。

    • 下載安裝相容應用程式:假若,它沒有找到合適的應用程式時,該訊息也會提供一個 URL 網址,以供《 Android 裝置》的用戶至網路下載安裝相容於該《 USB 週邊設備》的應用程式。(註:該 URL 網址可以是該應用程式在 Android Market 之中的下載網址)

    • 設備模式 ( Accessory Mode ) 開始運作:這個步驟完成後,《 USB 週邊設備》會再傳送一個控制交易訊息給《 Android 裝置》,以告知《 Android 裝置》可以進入設備模式 ( Accessory Mode ) 。


    在此要強調的是,當《 Android 裝置》與《 USB 週邊設備》之間完成上述低階層次的硬體初始溝通後,則相容於該《 USB 週邊設備》且已安裝於《 Android 裝置》的應用程式會接手雙向資料傳輸的工作,以達成《 Android 裝置》在此 USB 連接的功能使命。

    Android 教學: ADK 開發板 ( Android Open Accessory Compatible Development Boards )


    當然,您在此類應用程式的研發或學習階段,可能沒有那麼龐大的人力與物力去自行生產製造《 USB 週邊設備》。

    所以,ADK 也跟 ARM 嵌入式系統開發般,具備有提供研發與學習之用的 ADK 開發板 ( Android Open Accessory Compatible Development Boards ) 。

    這種 ADK 開發板是專為學習者或者開發者所生產製造的電路板,學習者或開發者可以透過 ADK  開發板來嘗試自行組裝與開發所想要的軟硬體功能。

    總體觀之,ADK 開發板主要是具備一張具備 USB 微控制器的電路板 ( A USB Micro-controller Board, 又稱 ADK 控制板 ) ,此電路板需遵守 Android Open Accessory Development Kit ( ADK ) 文件之中所規範之 Android 週邊設備協定 ( Android Accessory Protocol ) 。

    另一方面,在此 ADK 控制板 ( ADK Board ) 之上還可以再搭配相容於 ADK 控制板 ( ADK Board ) 的 ADK 擴充板 ( ADK Shield ) ,以擴充其輸出入功能模組。

    上述 ADK 控制板 ( ADK Board ) 與 ADK 擴充板 ( ADK Shield ) 兩者亦可合稱為 ADK 開發板。(註:相關的硬體開發與規範細節,您需參閱 Android Open Accessory Development Kit (ADK) 裡頭的硬體設計檔案文件。)

    正常來說,ADK 控制板 ( ADK Board ) 就像是個人電腦上的主機板,而 ADK 擴充板 ( ADK Shield ) 則像是主機板上的音效卡、影像卡等電路板般,它們主要是負責擴充 ADK 控制板 ( ADK Board ) 的輸出入功能。

    倘若,您先前鑽研過 Arduino 開發原始碼之電子產品雛型開發平台 ( Open Source Electronics Prototyping Platform ) ,一定對於 Android Open Accessory Development Kit ( ADK ) 感到似曾相識!

    沒錯, Android Open Accessory Development Kit ( ADK ) 實際上是建構於 Arduino 開發原始碼之電子產品雛型開發平台 ( Open Source Electronics Prototyping Platform ) 。

    因此,專屬於 Android Open Accessory Development Kit ( ADK ) 的電路板架構,其實是基於 Arduino Mega2560 USB 微控制器板(又稱 Arduino Mega 2560 控制板)的硬體技術架構而來。

    但是,因為 Arduino Mega2560 USB 微控制器板(又稱 Arduino Mega 2560 控制板) 本身只支援 USB 設備端 ( USB Device ) 角色 ,而非 USB 主機端 ( USB Host ) 角色 。因此, Android 在硬體技術架構上又結合了可支援 USB 主機端 ( USB Host ) 角色的 Circuits@Home 之 USB 主機端擴充板 ( USB Host Shield ) 。

    我們綜合 Android Developers 官網與官方部落格所示,其實目前國外已有五家業者提供相容於 ADK 的開發板 ( Android Open Accessory Compatible Development Boards ) 的販售或預售。

    這五套 ADK 開發板分別為:RT Corp 的 RT-ADK&RT-ADS、 MicrochipTechnology 的 PIC24F Accessory Development Starter Kit for Andriod 、 Seeedstudio 的 Seeeduino ADK Main Board 、 Modern Device 的 Freeduino USB Host Board 以及 DIY Drones 的 PhoneDrone Board for Android 。

    如果,您經過我們上述的介紹,仍不清楚 ADK 開發板 ( Android Open Accessory Compatible Development Boards ) 為何物?

    MicrochipTechnology 的 PIC24F Accessory Development Starter Kit for Andriod 有提供一則 ADK 教學板的操作教學短片,有興趣的讀者朋友可以參考看看。(影片來源: MicrochipTechnology 的 Youtube 影音頻道)





    Android 教學: Android Open Accessory Development Kit ( ADK ) 的已知限制


    不過,我們剛才有提到:


    由於,過往大部份的 Android 智慧型手機礙於只能扮演 USB 設備端 ( USB Device ) 角色之故,導致使用者不易擴充它們的 USB 週邊設備。

    因此,Android 此舉或許也是希望 USB 週邊設備反過來成為 USB 主機端 ( USB Host ) 角色,再透過 Android Open Accessory Development Kit ( ADK ) 的協助,讓 USB 週邊設備仍然可以與不具備 USB 主機端 ( USB Host ) 角色的  Android 智慧型手機互動溝通,亦即轉個彎達成 Android 智慧型手機能夠擴充 USB 週邊設備的目的。


    雖然,透過 Android Open Accessory Development Kit ( ADK ) 可以達到上述之目的。然而,如何讓 USB 週邊設備既可以成為 USB 主機端 ( USB Host ) 角色,又可以不必肩負提供電力之 USB 主機端 ( USB Host ) 責任。則是未來 Android 需要努力解決之處。(資料來源: Android Developers 官方部落格)

    至於,如何開發配合《開放式電子設備》的 Android 應用程式?此部份,我們待日後有機會再另闢教學講義深入說明。



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



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

    本講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 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 Developers 官網、Android Developers 官方部落格


    著作權聲明



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

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


    版權所有 翻印必究



    2011年5月8日

    [Android 手機研發] 紙手機 PaperPhone

    Android 研究:PaperPhone 紙手機


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


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


     

    【孫傳雄研究室 撰文】紙手機 ( PaperPhone ) 是加拿大皇后大學 ( Queen's University ) 的人類媒體研究室 ( Human Media Lab ) 團隊所主導的一項新型態智慧型手機雛型的研究計畫。

     

    雖然,紙手機 ( PaperPhone ) 有 紙張 ( Paper ) 的字眼出現。

     

    但是,它其實並非真的是使用紙張做為智慧型手機硬體的素材,而是意指利用像紙張一樣薄的塑膠薄膜材料 ( Thin Film ) 搭配電子墨水 ( E-Ink ) 做為顯示螢幕介面的智慧型手機。

     

    紙手機 ( PaperPhone ) 研究計畫的主持人Roel Vertegaal 博士指出:『使用紙手機 ( PaperPhone ) 得以實現無紙化辦公室的夢想。您可以將任何事物透過數位化的格式儲存於此,並且它可以像紙張一樣被堆成一疊或者被扔在辦公桌的一個角落。』(原文: the paperless office is here. everything can be stored digitally and you can place these computers on top of each other just like a stack of paper, or throw them around the desk. 資料譯自:Human Media Lab )

     

    假若,我們就該研究計畫所釋出的紙手機 ( PaperPhone ) 智慧型手機雛型影片來看,它目前所使用的是 Android 智慧型手機作業系統以及3.7吋軟性電泳式 ( flexible electrophoretic ) 之顯示螢幕。

     

    值得一提的是:紙手機 ( PaperPhone ) 並沒有現今 Android 智慧型手機常用的多點式觸控面板,而是改在塑膠薄膜( Thin Film )之中內置感應器 ( Sensor ) 。

     

    所以,手機用戶是採取用手輕折紙手機 ( PaperPhone ) 的方式,進行功能的操作。同時,它也可以像個人電腦的觸控手寫板一樣,使用筆式操作。(註:如下面的 Youtube 影片所示,資料來源:Youtube )

     

     

    紙手機 ( PaperPhone ) 的研究團隊除了加拿大皇后大學 ( Queen's University ) 的人類媒體研究室 ( Human Media Lab ) 團隊之外,同時也包括了美國亞利桑那州立大學 ( Arizona State University ) 的激勵行為環境研究團隊 ( Motivational Environments Research Group ) 。

     

    另一方面,該研究計畫已把研究成果發表於2011年5月7日至2011年5月12日在加拿大溫哥華 ( Vancouver ) 所舉行的 ACM CHI 2011 ( Conference on Human Factors in Computing Systems ) 學術研討會之中。

     

    對於紙手機 ( PaperPhone ) 研究計畫有興趣的讀者朋友們,可以點選此處閱讀他們在 ACM CHI 2011 所發表的研討會學術論文內容。(資料來源: Human Media Lab )

     

    此篇文章的主要參考文獻來源: 加拿大皇后大學 ( Queen's University ) 的人類媒體研究室 ( Human Media Lab ) 官方網站

     


    假若,您對於 Android 手機與平板電腦應用程式開發有興趣,歡迎閱讀我們在網路上發表的 Android 手機與平板電腦應用程式開發教學系列講義。

    本講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 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 手機程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),謝謝!


     


    著作權聲明


     

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

     



    2011年4月28日

    [Android 教學] Android 2.2 智慧型手機基本操作教學影片 from Verizon Wireless

    Android 手機教學影片 from Verizon Wireless


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


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


    我們編寫的 Android SDK 教學課程講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 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 Market 上網下載許多免費或付費的手機應用程式。

     

    不過,應該有不少的 Android 智慧型手機用戶僅是單純地想使用 Android 智慧型手機當中所內建的一些常用軟體,來輔助日常的生活作業所需。

    尤其是,對於剛購買 Android 智慧型手機又不善於操作資訊產品的新手用戶來說,光是要使用這些 Android 智慧型手機當中所內建的常用軟體,就是一個蠻棘手的問題了!

     

    因此,美國的 Verizon Wireless 電信公司為了教導他們的顧客,如何使用他們剛推出不久的 HTC ThunderBolt 之 Android 智慧型手機。

     

    近日,他們拍攝了一系列相當淺顯易懂的 Android 智慧型手機教學影片,並且上傳分享至 Youtube 網路影音網站之中,供大家觀賞與學習。

     

    雖然,HTC ThunderBolt 之 Android 智慧型手機並未在台灣上市,然而,搭載 Android 2.2 智慧型手機作業系統以及 HTC Sense 2.0 操作介面的它,跟其它國內常見的 HTC 之 Android 智慧型手機在操作步驟上並沒有很大的差異。

     

    因此,身為 Android 智慧型手機新手用戶的您,仍可以透過美國 Verizon Wireless 電信公司所提供的這一系列 Android 智慧型手機教學影片,更進一步地學習 Android 智慧型手機的操作細節。

     

    以下便是美國 Verizon Wireless 電信公司在 Youtube 網路影音網站之中所分享的一系列 Android 智慧型手機教學影片。(資料來源:Youtube,此為英語版本。)

     

    Android 手機教學影片:插入手機門號 SIM 卡教學

     

     

     

     

    Android 手機教學影片:使用 Mobile Hotspot 教學

     

     

     

     

    Android 手機教學影片:建立手機聯絡人清單教學

     

     

     

     

    Android 手機教學影片:在手機上收發電子郵件信箱教學

     

     

     

     

    Android 手機教學影片:使用手機版的Facebook跟好友互動教學

     

     

     

     

    Android 手機教學影片:手機相片分享與特效製作教學

     

     

     

     

    Android 手機教學影片:手機上網教學

     

     

     

     

    Android 手機教學影片:手機版的 Google map 地圖使用教學

     

     

     

     

    Android 手機教學影片:基本的手機瀏覽操作教學

     

     

     

     


    假若,您對於 Android 手機與平板電腦應用程式開發有興趣,歡迎閱讀我們在網路上發表的 Android 手機與平板電腦應用程式開發教學系列講義。

    本講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 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 手機程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),謝謝!


     


    著作權聲明


     

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

     



    [Android 教學] Android 的 處理程序 ( Process )

    Android 教學


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


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


     

    【孫傳雄研究室 編著】當您閱讀完我們在台灣時間 2011年3月22日所發表的 Android 教學講義第八講上篇之後,是否對於 Android 的應用程式組件 ( Application Components ) 與意圖元件 ( Intent ) 有更進一步地暸解呢?

     

    假若,您尚未閱讀過我們的 Android 教學課程講義,為求您在 Android 學習上的完整性,煩請您先閱讀完第一講至第八講上篇之後,再來閱讀第八講中篇 (1) 的講義:

     

    本講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 3.0 平板電腦應用程式開發:第二講、Android 教學講義第八講上篇、Android 教學講義第八講中篇(1)、Android 4.0 SDK 開發功能介紹與下載網址、 Android 4.0 SDK 下載安裝完整教學、 Android 4.0 模擬器安裝設定教學課程講義、Android 4.0 的 Holo theme 佈景主題介紹與設定教學課程講義

     

    我們將在此篇 Android 教學講義第八講中篇 (1) 之中,介紹以下七項主題:

     

    • Android 教學:關於 Android 的應用程式組件 ( Application Components ) 的補充

    • Android 教學:處理程序 ( Process ) 與執行緒 ( Thread )

    • Android 教學:空白處理程序 ( Empty Process )

    • Android 教學:背景處理程序 ( Background Process )

    • Android 教學:Service 處理程序 ( Service process )

    • Android 教學:可視處理程序 ( Visible Process )

    • Android 教學:前景處理程序 ( Foreground process )

     

    Android 教學:關於 Android 的應用程式組件 ( Application Components ) 的補充

     

    當您閱讀至本篇講義前,可能先會有個疑問:『運用 Android 應用程式組件的好處在哪兒呢?』

     

    我們歸納成以下兩點說明:

     

     

    • 其一,它省卻了 Android 手機應用程式開發者撰寫這些基礎程式碼的時間與精力。

     

    • 其二,它建立了 Android 手機應用程式開發的標準規範,讓開發者能夠依循此標準規範進行程式開發的編寫設計工作。

     

     

    倘若您是資訊相關學域背景的讀者朋友應該知道,此觀念即為軟體工程學當中常講的組件式軟體工程 ( Component-Based Software Engineering, CBSE )。

     

    更進一步地說,由於,這五大應用程式組件已被 Android 封裝成各自不同的 Java 類別 ( Class ),因此, Android 手機應用程式開發者可以在程式碼當中直接繼承它們的屬性與方法,依循 Andorid 官方的規則,進而快速地建構出他們所想要的 Android 手機應用程式之根基。

     

    比如,本講義的 ” Converter 應用程式 ” 教學範例便是繼承了該五大應用程式組件當中的 Activity 應用程式組件(如下圖箭頭處所示)。

     

    Android 教學 

     

    在此要請您特別注意地是,這五大應用程式組件不需要同時並存。您可以依應用程式開發需求來相互搭配運用。

     

    另外,我們也要強調地是,即使您在 Android 手機應用程式繼承了這五大應用程式組件,也不代表您的 Android 手機應用程式開發就此大功告成。

     

    它只是一個 Android 制定好的基礎規範,您仍必需在此規範之下,鑽鑿出屬於您自己的 Android 手機應用程式。

     

    說到這兒,熟悉Java程式語言的您或許會問:『這五大應用程式組件都只是功能面的區分而已,憑什麼能取代傳統 Java 應用程式碼的單一啟始點 main() 方法呢?』

     

    Android 教學:處理程序 ( Process ) 與執行緒 ( Thread )

     

    回答此問題,我們必需先從 Android 作業系統的處理程序 ( Process ) 談起。(註: Process 也常被翻譯成行程或者進程)

     

    什麼是處理程序呢?

     

    假若,您的個人電腦是使用 Microsoft Windows 系列之作業系統的話,應該都知道它有一個名為” Windows 工作管理員”的工具程式。

     

    講到此,您可能會先問我們:『 Windows 工作管理員是管理什麼工作呢?跟處理程序 ( Process ) 又有何關係呢?』

     

    其實,Windows 工作管理員跟處理程序大有關係!

     

    由於,在 Windows 作業系統當中正在執行的應用程式即稱之為工作 ( Task ) 。因此, Windows 工作管理員的目的即在管理Windows作業系統當中所有正在執行的應用程式。

     

    所以,您會在 ” Windows 工作管理員” 當中看見您各項應用程式正在執行的工作狀態。並且,您也可以在此工具程式中啟動與結束某個應用程式的執行工作。(如下圖所示)

     

    Android 教學 

     

    更重要地是,您還可以看到在您的 Windows 作業系統當中的處理程序。以及它們所佔用的 CPU 使用率與實體記憶體空間等資訊欄位。(如下圖所示)

     

    這些處理程序所代表的意義,便是所有正在執行的應用程式(即工作)實際在電腦系統硬體之中佔用的實體單元。

     

    另外,這些實體單元即為處理程序所佔用的 CPU 使用時間 ( CPU Time ) 以及主記憶體的內部儲存空間等系統資源。

     

    更進一步地說,每一個 Windowos 應用程式至少包括了一個以上的處理程序。並且每一個處理程序之下通常會再細分出多個執行緒 ( Thread ) 。

     

    雖然,這些執行緒分別肩負了處理程序所指派調度的分支任務。不過,它並不像每個處理程序一樣擁有各自的系統資源,而是共同分享它們所屬處理程序之中的系統資源。

     

    Android 教學 

     

    相對於 Windows 作業系統的應用程式來說, Android 手機作業系統的應用程式在執行時,同樣以工作管理的概念來運行。(如下圖所示)

     

     Android 教學

     

    每一個 Android 手機應用程式不只可以擁有單一個處理程序,它更可以擁有多個處理程序。

     

    同時,不同的 Android 手機應用程式之間,還可以共同分享多個處理程序。

     

    由於, Android 為了有更好的使用者體驗 ( User Experience ) ,所以,只要在系統資源充裕的狀況下,它可以讓手機用戶不用關閉應用程式,便能夠在不同的應用程式之間輕鬆地進行切換的動作。

     

    更進一步地說,當手機用戶離開 ( Leave ) 一個應用程式切換至新的應用程式時,即使它已完全沒有進行任何的執行動作 ( Running ) ,它的處理程序仍可以保持在 Android 的系統後端默默地存在。

     

    此舉讓手機用戶需要原來的應用程式時,能夠很快速地重新回復它。

     

    然而,依上述所言, Android 智慧型手機的 CPU 使用時間 ( CPU Time ) 以及主記憶體的內部儲存空間是有限的。

     

    所以,當系統資源不敷使用時, Android 作業系統會依照處理程序的重要性,來取決那一個處理程序可以優先從系統資源之中消滅殆盡( Kill )。

     

    關於處理程序被 Android 作業系統消滅的優先順序,我們依 Android Developers 官網的說明,由低至高的順位歸納匯整如下所示(資料來源: Android Developers 官網)。

     

     

    Android 教學:空白處理程序 ( Empty Process )

     

     

    • 空白處理程序 ( Empty Process ) :空白處理程序 ( Empty Process ) 意指沒有包含任何有效的應用程式組件之處理程序。


      即然它是空白的,為何還會在 Android 作業系統當中存在呢?


      因為,該處理程序主要是做為應用程式組件的快取 ( Cache ) 角色。


      更進一步地說,當應用程式組件有需求時,可以隨時取用它來執行。因此,該應用程式組件的啟動時間得以有效縮短。此即為快取之作用。


      也因為, Android 作業系統視這類做為快取角色的處理程序之重要性為最低。所以,當系統資源不敷使用時,這種空白處理程序 ( Empty Process ) 為最常被 Android 作業系統優先消滅的處理程序。

     

     

    Android 教學:背景處理程序 ( Background Process )

     

     

    • 背景處理程序 ( Background Process ) :背景處理程序 ( Background Process ) 是指當下無法讓手機用戶看得見使用者介面的 Activity 應用程式組件之處理程序。


      更進一步地說,當某個 Activity 應用程式組件正在執行時,若有另一個新的 Activity 應用程式組件被啟動,並且它的使用者介面完全覆蓋了原本的那個 Activity 應用程式組件之使用者介面後。


      則 Android 作業系統會強置性呼叫 Activity 應用程式組件的 onStop() 方法,以便將該 Activity 應用程式組件之處理程序更動為停止 ( Stop ) 狀態。


      此時,該 Activity 應用程式組件之處理程序並沒有被 Android 作業系統消滅殆盡,它是處於停止的狀態。手機用戶仍可以重新啟動 ( Restart ) 這個 Activity 應用程式組件的處理程序。


      不過,由於手機畫面的焦點已完全是新的 Activity 應用程式組件之使用者介面,使用者當下無法看見原有的使用者介面,因此, Android 作業系統會視這種背景處理程序 ( Background Process ) 的重要性比較低。


      當系統資源不敷使用時,它為次常被 Android 作業系統優先消滅的處理程序。


      另外,當 Android 作業系統當中累積了許多這類背景處理程序 ( Background Process ) 時,它則會採取常用於處理快取記憶體 ( Cache ) 緩衝區的最近最少使用 ( Least Recently Used, LRU ) 演算法,將最近最少使用的背景處理程序 ( Background Process ) 優先消滅。


      Android 作業系統在此使用最近最少使用 ( Least Recently Used, LRU ) 演算法的目的,是要避免手機用戶最近時常用到的那個背景處理程序 ( Background Process ) ,不致於在這一堆背景處理程序 ( Background Process ) 之中,優先被消滅。

     

     

    Android 教學:Service 處理程序 ( Service process )

     

     

    • Service 處理程序 ( Service process ) : Service 處理程序 ( Service process ) 意指正被啟動執行的 Service 應用程式組件所產生之處理程序(即 Service 的 startService() 方法已被呼叫)。


      Service 處理程序跟背景處理程序一樣都是默默地位居 Android 作業系統的後端。亦即它們本身不會有任何使用者介面 ( User Interface , UI ) 出現在手機畫面之前。手機用戶在視覺上也不會察覺它的存在。


      不過,因為 Service 處理程序 ( Service process ) 是由正被啟動執行的 Service 應用程式組件而產生,所以,它仍處於後端持續運轉的階段,並非像背景處理程序 ( Background Process ) 已是停止的狀態。


      亦因如此,它的重要性遠比背景處理程序 ( Background Process ) 還高。


      更進一步地說,雖然,這些 Service 應用程式組件並不具備使用者介面,但是,它們大多肩負了執行時間較長的應用程式功能(註:例如網路資料下載、MP3音樂背景播放等…)。


      因此,當系統資源不敷使用時,它所產生的處理程序會次於背景處理程序,成為被 Android 作業系統考量消滅的第三順位。

     


     

    Android 教學:可視處理程序 ( Visible Process )

     

     

    • 可視處理程序 ( Visible Process ) :上述三種處理程序有一個共通的性質:它們皆處於 Android 作業系統的後端且當下不具備使用者介面之狀態。


      因此,手機用戶在視覺上並不會明顯感受到它們的存在。相對而言, Android 作業系統也視它們為重要性較低的處理程序。


      聰明的您,一定會舉一反三說:『依此論點推之,假若某個處理程序處於 Android 作業系統的前端且當下具備使用者介面之狀態,它的重要性應該比較高。』


      嘿,您答對了!


      不過, Android 作業系統依其重要性再向下細分成可視處理程序 ( Visible Process ) 與前景處理程序 ( Foreground Process ) 兩種處理程序。


      談此之前,我們先給大家看看本研究室的一個教學範例。(註:此教學範例目前只是用來說明可視處理程序 ( Visible Process ) 與前景處理程序 ( Foreground Process ) 兩種處理程序的不同。至於,該範例的實作教學,礙於範幅之故,我們會找機會再跟大家分享。)


      我們在此教學範例之中,設計了一個具有三個 Activity 應用程式組件的 Android 手機應用程式,它分別包括了 Activity1 、 Activity2與 Activity3 等三個 Activity 應用程式組件。


      這三個 Activity 應用程式組件皆分別各自擁有使用者介面。


      Activity1 應用程式組件則為最初啟始的應用程式組件。


      在 Activity1 應用程式組件的使用者介面當中,我們放置了開啟 Activity2 應用程式組件的按鈕 (即 Activity 2 Strat 按鈕) 與開啟 Activity3 應用程式組件的按鈕 (即 Activity3 Start 按鈕)。(如下圖所示)


      Android 教學 


      當手機用戶在 Activity1 應用程式組件的使用者介面之中,按下了開啟 Activity2 應用程式組件的按鈕時,它會直接開啟 Activity2 應用程式組件。


      請注意!此舉並沒有將 Activity1 應用程式組件消滅 ( Destroy ) ,Activity1 應用程式組件當下只是被 Activity2 應用程式組件的使用者介面完全覆蓋而已。(如下圖所示)


      Android 教學 


      另一方面,當手機用戶在 Activity1 應用程式組件的使用者介面之中,按下了開啟 Activity3 應用程式組件的按鈕時,它一樣會直接開啟 Activity3 應用程式組件。


      同樣的是,我們並沒有將 Activity1 應用程式組件消滅 ( Destroy ) 。


      不同的是,由於,我們將 Activity3 應用程式組件的使用者介面已設定成對話視窗 ( Dialog ) 的型態。所以 Activity1 應用程式組件的使用者介面並不會被 Activity3 應用程式組件的使用者介面完全覆蓋,而是部份覆蓋而已。


      雖然, Activity1 應用程式組件的使用者介面並沒有被 Activity3 應用程式組件的使用者介面完全覆蓋,但是手機用戶仍無法在畫面之中操作 Activity1 應用程式組件的使用者介面。因為,手機畫面的焦點已落在 Activity3 應用程式組件的對話視窗介面之上了。(如下圖所示)


      Android 教學 


      我們會舉這個教學範例,主要是為了解釋這些應用程式組件在以下所產生的三種處理程序狀態:


      當 Activity2 應用程式組件的使用者介面完全覆蓋於 Activity1 應用程式組件的使用者介面時, Activity2 應用程式組件所產生的處理程序為前景處理程序 ( Foreground process )。


      至於, Activity1 應用程式組件所產生的處理程序則為背景處理程序 ( Background Process ) 。


      當 Activity3 應用程式組件的使用者介面部份覆蓋於 Activity1 應用程式組件的使用者介面時, Activity3 應用程式組件所產生的處理程序仍為前景處理程序 ( Foreground process )。


      至於, Activity1 應用程式組件所產生的處理程序,此時則為可視處理程序 ( Visible Process ) 。


      在此,我們希望您暸解的是:當某個 Activity 應用程式組件的使用者介面被另一個 Activity 應用程式組件部份覆蓋時,其所產生的處理程序即為可視處理程序 ( Visible Process ) 。


      相對於使用者介面被完全覆蓋的狀態而言, Android 視這類使用者介面被部份覆蓋的處理程序,仍為極重要且需持續存在的處理程序。


      因此,在系統資源不足的狀態之下,它是低於前景處理程序 ( Foreground process )順位,亦即最後倒數第二個被 Android 作業系統消滅的對象。


      另外,當 Service 應用程式組件結合 Activity 應用程式組件時,只要該 Activity 應用程式組件的使用者介面沒有被其它的使用者介面完全覆蓋,則其所產生的處理程序亦屬於可視處理程序 ( Visible Process ) 的範疇。

     

     

    Android 教學:前景處理程序 ( Foreground process )

     

     

    • 前景處理程序 ( Foreground process ) :當系統資源不足的狀態之下, Android 作業系統最後逼不得已才消滅的對象,就是前景處理程序。


      什麼是前景處理程序 ( Foreground process ) 呢?


      簡單地說就是:手機用戶正在畫面當中使用的 Activity 應用程式組件所產生之處理程序。


      因為,它的使用者介面正被手機用戶所使用,所以,它遠比其它的處理程序還重要。


      當然,假若 Service 應用程式組件所結合的那個 Activity 應用程式組件,正好也處於手機用戶正在畫面當中使用的狀態,則其所產生的處理程序亦屬於前景處理程序 ( Foreground process ) 的範疇。


      更進一步地說, Service 應用程式組件在結合 Activity 應用程式組件的狀態之下,其所產生的處理程序其實被視為 Activity 應用程式組件所產生的處理程序。所以, Android 作業系統會視上述的狀況為前景處理程序 ( Foreground process ) 的範疇


      另外,假若 BroadcastReceiver 應用程式組件正在接收系統訊息時,則其所產生的處理程序同樣也屬於前景處理程序 ( Foreground process ) 的範疇。

     

     

    在此要請您特別注意的是,假如有一個重要性較低的處理程序結合於另一個重要性較高的處理程序,則 Android 作業系統會以重要性較高的處理程序之等級,看待於重要性較低的處理程序。亦即重要性較低的處理程序能夠自動升等。

     

    另外,有一點還要提醒比較進階的讀者朋友們,由於, Service 處理程序 ( Service process ) 之重要性,遠高於同樣處於系統後端的背景處理程序 ( Background Process ) 。

     

    因此,如果您的 Android 手機應用程式有執行時間超過五秒之功能,則強烈建議您不要只單純地在 Activity 應用程式組件之中,為主執行緒 ( Main Thread ) 新增另一條新的執行緒去處理這個功能。

     

    因為,如果該 Activity 應用程式組件所產生的處理程序不小心落入背景處理程序 ( Background Process ) 的順位,則其就易於被 Android 作業系統所消滅。

     

    所以,您需要將此條新的執行緒放置到 Service 應用程式組件的方式去運作。以確保 Activity 應用程式組件所產生的處理程序不小心落入背景處理程序 ( Background Process ) 的順位而被 Android 作業系統所消滅時,該工作仍會一直在Service 處理程序 ( Service process ) 之中運行。(註:上述這段屬進階內容,入門學習者可以先略過不看。)

     

    此文未完,待續。

     


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


     

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

     

    本講義目前網路連載發表有:Android手機程式開發教學講義懶人包、Android 教學講義第一講、Android 教學講義第二講、Android 教學講義第三講、Android 教學講義第四講、Android 教學講義第五講、Android 教學講義第六講、Android 教學講義第七講上篇、Android 教學講義第七講下篇、Android 2.3補充教材1、Android 2.3補充教材2、Android 3.0平板電腦完整功能搶先看(From T-Mobile)、Android 3.0 平板電腦應用程式開發:第一講、Android 3.0 SDK 正式版登場、Android 嵌入式系統最新開發應用 - SAAB IQon 車用電腦、Android 2.3 補充教材3、Android 3.0 平板電腦應用程式開發:第二講、Android 教學講義第八講上篇、Android 教學講義第八講中篇(1)、Android 4.0 SDK 開發功能介紹與下載網址、 Android 4.0 SDK 下載安裝完整教學、 Android 4.0 模擬器安裝設定教學課程講義、Android 4.0 的 Holo theme 佈景主題介紹與設定教學課程講義

     

    此篇講義的主要參考文獻來源:Android Developers 官網

     


    著作權聲明


     

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

     

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

     


    版權所有 翻印必究