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

2013年11月13日

Android 教學講義懶人包

Android 開發教學


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

以下列示 [ 孫傳雄研究室 ] 目前已經在網路上發表的 Android 課程講義集各章節網址連結。以茲大家方便連結閱讀。(註:本Android課程講義集目前適用 Android 4.4 SDK , Android 4.3 SDK , Android 4.2 SDK , Android 4.1 SDK , Android 4.0 SDK , Android 3.2 SDK , Android 3.1 , Android 3.0 , Android 2.3 , Android 2.2 , Android 2.1 )


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


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補充教材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.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補充教材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 Developers 官網Android Developers 官方部落格


著作權聲明



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

本講義之內文所提及或者引用的公司名稱、產品名稱以及所引用的文字、商標、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補充教材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 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補充教材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 手機程式開發教學課程免費講義》網路讀者俱樂部會員(請點選此連結),謝謝!


 


著作權聲明


 

本文章之內文所提及或者引用的公司名稱、產品名稱以及所引用的文字、商標、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補充教材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 教學講義第八講中篇 (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補充教材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 Developers 官網

 


著作權聲明


 

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

 

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

 


版權所有 翻印必究


2011年3月22日

[Android 教學] Application Components 與 Intent

Android 教學


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


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


在您閱讀過先前我們所寫的 Android 教學課程講義之後,對於 Android 手機應用程式的概念與實作,應有初步地暸解了吧?

 

假若,您尚未閱讀過我們的 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 手機應用程式與個人電腦的 Java 應用程式之間究竟有何不同呢?』

 

Android 教學 : Android 手機應用程式的重要特性

 

除了介面上的差異外,本講義以下歸納出最主要的六項差異:

 

 

  • Android 手機應用程式有電池續航力的限制。因此,它的應用程式不可過於耗電,亦即存取系統資源的次數不能太頻繁。

 

  • Android 智慧型手機硬體的主記憶體( RAM )容量、中央處理器( CPU )時脈多半比個人電腦來的小。因此,它的應用程式不能太佔系統資源。

 

  • Android 手機應用程式在執行時,常會面臨突然有來電( Incoming Call ),而它必須停止執行的狀況。

 

  • Android 手機應用程式在系統資源不足時,有時需要停止並且禮讓給比較重要的程式運行。

 

  • 當使用者從一個已開啟的 Android 手機應用程式切換到新開啟的 Android 手機應用程式之時間需低於一秒鐘。

 

  • 當 Android 智慧型手機用戶在應用程式的使用者界面當中輸入資料並執行後,應用程式必需在五秒鐘之內有所回應。否則會發生系統完全沒有回應的狀況( Application Not Responding, ANR )。

 

 

亦因如此,雖然 Android 手機應用程式相較於個人電腦上的 Java 應用程式來說,它可能有開發規模較小、開發成本較低廉並且適合微型開發團隊進行開發等優點。

 

但是,畢竟智慧型手機不是個人電腦

 

它並沒有太多寬裕且優渥的系統資源提供給 Android 手機應用程式使用。

 

所以, Android 智慧型手機作業系統在應用程式的資源控管、運用與共享之上,相對於其它運行於個人電腦的應用程式來說,需要更加地嚴謹與仔細。

 

在此, Android 發展出一套獨有的應用程式組件( Application Components )與意圖元件 ( Intent )的程式框架。

 

本講義認為,應用程式組件( Application Components )與意圖元件 ( Intent )是 Android 手機應用程式開發者在學習 Android 手機應用程式開發的過程當中,最需要優先深入與徹底理解的核心開發要點。

 

不過,我們礙於應用程式組件( Application Components )與意圖元件 ( Intent )所要介紹的內容繁多,因此,會將第八講講義區分成上篇、中篇與下篇,本講義為第八講之上篇。

 

另外,關於應用程式組件( Application Components )當中的 Activity , Fragment ( Android 3.0 API 獨有) , Service , Broadcast receiver , Content provider 的深入細節與實作教學,我們則會在第八講之後,再找機會陸續向讀者朋友深入說明。

 

Android 教學 : 什麼是 Application Components 與 Intent ?

 

【孫傳雄研究室 編著 / 台灣時間 2011年3月22日】如果,您過去曾經是位 Java EEJava SE 的應用程式開發人員,當您轉換跑道至 Android 撰寫 Java 程式碼時,您必然會發現到過去所熟悉的 Java 應用程式碼之啟動點 main() 方法不見了!

 

取而代之的就是本講義第八講這次的主題: 應用程式組件( Application Components )與意圖元件 ( Intent )之觀念。

 

雖然,人們要深入理解應用程式組件( Application Components )與意圖元件( Intent )的細節或許需要花一番的功夫。

 

不過,我們發現它們與 HTML 網頁設計的概念實然有著相互輝映之處。

 

因此,您或許可以從 HTML 網頁設計的概念之中,初步地理解應用程式組件( Application Components )與意圖元件( Intent )的用途與內涵。

 

這怎麼說呢?

 

如果您曾經學習過網頁設計,

 

那麼,請您回想一下,您的第一個網站是怎麼建構出來的呢?

 

您是不是先新增一個網頁做為首頁,而且通常還會在這個首頁之下,建立數個以上的子網頁。

 

當這些子網頁的內容都寫好後,您必然會透過超鏈結( HyperLink )的方式,將彼此以及首頁相互連結整合成一個網站。


就網路使用者的體驗來說,雖然一個網站是由眾多網頁所連結而成,但,因為有超鏈結之故,因此,它仍可以保有相當好的瀏覽流暢度。
 

更重要的是,對於網路使用者來說,當他進入某個擁有許多網頁的網站時,並不需要把網站中的所有網頁全部下載到電腦之中顯示。

 

而是,先下載顯示該網站的首頁。

 

之後,當他需要觀看某個網頁時,再點選該網頁的超鏈結,該網頁才會被下載顯示。

 

由於,早期的網路頻寬有限,因此,透過這種不需完整下載全部網頁檔案的超鏈結方式,可有效地節省頻寬下載資源。

 

對於, Android 手機應用程式而言,雖然它在執行階段蠻多時候並不需要網路連線,但它跟早期的網頁開發一樣具有資源有限的宿命。

 

因此,如果您曾深入探究 Android 手機應用程式的架構時,您必然會發現它有許多跟網頁設計雷同的作法:

 

 

  • Android 手機應用程式:它如同網站般,藉由眾多的應用程式組件( Application Components )所組合而成。

 

  • 應用程式組件( Application Components ):它如同網站中的網頁般,多半為彼此獨立、不相互依賴的個體。而且,它們都各自擁有特定的工作任務。

 

  • 意圖元件( Intent ):它則如同網頁中的超鏈結般,肩負不同應用程式組件間的連結啟動與傳遞訊息之任務。然而,意圖元件( Intent )在語法運用上跟超鏈結有很大的不同,這部份我們將在後續的講義之中進行詳述與實作教學。

 

 

由於, Android 採取應用程式組件( Application Components )與意圖元件( Intent )的架構,所以,每一個應用程式組件( Application Components )可以依實際的開發需求與使用權限而成為某個應用程式的啟始點,自然就不需要傳統 Java 應用程式所使用的單一啟始點 main() 方法了。

 

同時,由於智慧型手機的系統資源有限,因此,在節省系統資源的前提之下,當手機用戶每一次開啟 Android 手機應用程式時,它只會載入當下該應用程式所執行到的那個應用程式組件,而無需同一時間將應用程式當中的全部應用程式組件一併載入系統當中。(註:關於應用程式與系統執行的關係,我們將會另文專寫 Android 應用程式的處理程序( Process )與執行緒( Thread )教學講義)

 

亦因為 Android 是採取此種方式運行,所以, Android 針對於不同的應用程式組件特性,發展出各自不同的應用程式組件生命週期階段( LifeCycle ),藉以控制每一個應用程式組件的啟始一直到結束。(註:關於應用程式組件的生命週期,我們將會另文專寫 Android 應用程式組件的生命週期。)

 

另一方面,雖然我們以網站的概念做為 Android 手機應用程式的比擬。但是, Android 手機應用程式仍有許多與網站不同之處。因此, Android 再依實際的功能需求,將應用程式組件再區分為 Activity 、 Fragment ( Android 3.0 API 獨有)、 Service 、 Broadcast receiver 、 Content provider 等五大應用程式組件。

 

因為,本講義為求讀者不會誤解這五大應用程式組件的原始意涵,因此,我們保留其原文名稱而不進行中文名稱之翻譯。

 

它們的各自作用則如下所述:

 

 

Android 教學 : 什麼是 Activity ?

 

 

Activity :它負責前端使用者介面處理。

 

如果您曾詳閱過本講義第七講上篇與第七講下篇的話,應該會很清楚地暸解到 Activity 應用程式組件的作用在於處理 Android 手機應用程式當中的使用者介面顯示與人機互動之工作。

 

倘若,您對上述的講法還是很難理解。其實,您也可以把 Activity 應用程式組件所扮演的角色,想像成網站當中具有文字、圖形、動畫、影音或者表單輸入的網頁畫面。網站使用者必需要透過這些網頁畫面才可以進一步地操作它的功能。

 

然而, Activity 應用程式組件與網頁在開發上主要的不同點,除了它的畫面是顯示在手機螢幕之外,更重要地是它使用 XML 與 Java 程式碼,而非 HTML 等網頁相關的程式碼。

 

另一方面,就介面設計的角度論之,無論是網頁畫面或者 Android 手機畫面,反正只要是可以顯示在螢幕上頭提供使用者操作的畫面,我們便可稱之為使用者介面( User Interface, UI ),而讓使用者可以操作功能的行為則稱為使用者互動或人機互動( Human Computer Interaction , HCI )。

 

因為,這兩個要素正好就是 Activity 應用程式組件在 Android 手機應用程式開發當中所肩負的主要範疇。因此,如果您負責的是 Android 手機應用程式的介面設計工作,則您應該要對於 Activity 應用程式組件之內涵要有相當透徹的理解。

 

以下為本講義先前運用 Activity 應用程式組件所構成的 Converter 應用程式教學範例擷圖。

 


Android 教學 

 

 

Android 教學 : 什麼是 Fragment ?

 

 

Fragment :它在一個具分割畫面( Multi-Pane )的 Activity 應用程式組件之中,負責分割畫面的部份區段或部份行為。

 

自從 Android 3.0 平板電腦作業系統在美國時間 2011年2月22日的正式問世之後, Android 應用程式組件便多了一個重要的新成員。那就是 Fragment 應用程式組件 。

 

Android 3.0 API 會新增此應用程式組件之原因,緣起於 Android 平板電腦的螢幕尺寸普遍大於 Android 智慧型手機的螢幕尺寸,因此,它經常需要使用到分割畫面,藉以在螢幕當中顯示更多的資訊。

 

然而,傳統的 Activity 應用程式組件對於分割畫面的處理並不是那麼便利。所以, Fragment 應用程式組件便孕育而生。

 

它主要是在一個具分割畫面的 Activity 應用程式組件之中,負責分割畫面的部份區段或部份行為。

 

您可以視它為 Activity 應用程式組件之下的模組單元。

 

Fragment 應用程式組件擁有屬於自己的生命週期,它更可以接收屬於自己的輸入事件。甚至開發者還可以單獨在執行中的 Activity 裡頭,加入或刪除某個 Fragment 。

 

不過, Fragment 應用程式組件仍必須依附於某個 Activity 應用程式組件當中,並不能獨立存在。而且, Fragment 應用程式組件的生命週期還是會直接受到它所依附的 Activity 應用程式組件之影響。

 

像是, USA TODAY for Tablet 平板電腦應用程式便是運用 Fragment 應用程式組件的方式,將新聞標題與新聞內容分割顯示。(如下圖所示,以下畫面擷取自 Android Market 網站)

 

(註:以上僅為初步介紹,日後我們將會另文專寫 Fragment 的教學講義)

 

Android 教學 

 

Android 教學 : 什麼是 Service ?

 

 

Service :它負責後端程式運算。

 

由於, Android 智慧型手機作業系統限制手機應用程式必需在五秒鐘之內有所回應。因此, Android 手機應用程式開發者通常會將運算時間有可能超過五秒鐘且不具備使用者介面的程式片段,從 Activity 應用程式組件分割給 Service 應用程式組件負責,以避免系統完全沒有回應的狀況發生( Application Not Responding, ANR ),例如網路檔案的下載或者 MP3 音樂的背景播放等…。

 

假使,我們說 Activity 應用程式組件像是在劇場當中粉墨登場的演員,那麼 Service 應用程式組件必然是那些在布幕背後默默辛勤工作的場務人員。

 

雖然,您可能永遠看不到它們的存在,但它們卻在 Android 手機應用程式當中扮演了舉足輕重的角色。

 

因此,假如您希望您所開發的 Android 手機應用程式可以帶給手機用戶更好的使用者體驗,則您必需要對於 Service 應用程式組件的作用有更深刻地理解與應用。

 

(註:以上僅為初步介紹,日後我們將會另文專寫 Service 的教學講義)

 

 

Android 教學 : 什麼是 Content provider ?

 

 

Content provider :它負責應用程式之間資料共享的任務。

 

當您看到這個應用程式組件的英文名稱,可能直覺會想到它與資料庫相關。

 

的確,它在某部份與 Android 智慧型手機內建的 SQLite 資料庫有相關。

 

但,也不全然是…。

 

這怎麼說呢?打個比方好了!

 

其實,您可以把 Content provider 應用程式組件想像成臺北市政府的「1999臺北市民當家熱線」。

 

假若您是臺北市民,當您家有大型廢棄家具要委由市府清潔隊丟棄時,並不需要直接打電話給清潔隊人員。

 

而是,您只要撥打「1999臺北市民當家熱線」,該熱線的人員便可以幫您聯繫清潔隊人員,並且開始為此事進行相關的處理程序。

 

Content provider 應用程式組件在概念層次與「1999臺北市民當家熱線」十分雷同。

 

Content provider 應用程式組件本身並非是直接存取 SQLite 資料庫的方法。而是做為 Android 手機應用程式間的資料共享之統一窗口。

 

它就像「1999臺北市民當家熱線」並非是清潔隊,但他們卻可以提供一套所有臺北市市民都可以共享的便民服務,透過這項服務來幫您聯繫與協調市府相關部門的人員。

 

更簡而言之, Content provider 應用程式組件只是一個資料共享的統一窗口,它並非直接的資料來源。

 

所以,通常來說,您必需在建立完應用程式的 SQLite 資料庫後,才可以建立屬於自己的 Content provider 應用程式組件。

 

另外,在建立 Content provider 應用程式組件之後,它會附帶一個公開的統一資源識別位址 ( Universal Resource Identifier , URI )。

 

對於 Android 手機應用程式來說,當它要共享資料時,無需知道對方的資料來源是何種型態?它僅需得知對方資料來源的 URI ,並在該資料來源有開放權限的情況下,即可透過 Content provider 應用程式組件的相關方法進行資料管理的增刪改查之動作。

 

在此要提醒您的是: Content provider 應用程式組件可應用之範疇並非僅限於 SQLite 資料庫。亦包括了檔案系統、網際網路上的資料來源、或者您的 Android 手機應用程式原本就可以存取的持久性儲存位置。

 

像是 Android 作業系統本身所提供的聯絡人應用程式,便具有 Content provider 應用程式組件的 URI ,因此,在存取權限足夠的前題之下,您的應用程式也可以存取手機之中的聯絡人相關資料。( Android 智慧型手機作業系統的聯絡人應用程式之實際擷圖,如下圖所示。)

 

另一方面,如果 Android 手機應用程式當中的資料來源不需要與其它 Android 手機應用程式共享時,那麼您可以直接使用該資料來源之相關存取方法,而不要使用 Content provider 應用程式組件

 

(註:以上僅為初步介紹,日後我們將會另文專寫 Content provider 的教學講義)

 

2011-03-18 15 18 03 

 

 

Android 教學 : 什麼是 Broadcast receivers

 

 

Broadcast receivers :此應用程式組件的中文譯名,多半會翻成廣播接收者或者廣播接收器。

 

嘿!不過,它可不是讓您在 Android 智慧型手機聽電台廣播之用哦…^_^

 

其實, Broadcast receivers 應用程式組件最主要的用途在於:捕捉智慧型手機當中系統所發出來的重要事件訊息。

 

比如,手機快沒電了、您有一封新簡訊、或者某個電話號碼撥打進來所產生的系統訊息…。

 

說到此,您或許會有個疑問:『取得這些系統訊息,能做什麼呢?』

 

舉例言之。

 

例如,您想設計一個 Android 手機應用程式是:當手機用戶遺失手機後,他只需要寄發一則重要簡訊給那隻遺失的手機,便可以馬上把您的手機上鎖,以避免小偷任意竊取裡頭的一些重要相片或資料。

 

此時,您就可以在該應用程式之中,使用 Broadcast receivers 應用程式組件來協助應用程式捕捉那則重要簡訊的系統訊息,並且進行手機上鎖的動作。

 

在此要特別強調地是, Broadcast receivers 應用程式組件跟 Service 應用程式組件一樣並不具備使用者介面,您可以視情況再配合狀態列( Status Bar )等方式來呈現它所接收到的訊息。

 

另外, Broadcast receivers 應用程式組件通常會再結合 Service 應用程式組件在程式後端執行相關的關鍵動作。

 

同時, Broadcast receivers 應用程式組件也可以透過意圖元件( Intent )來傳送應用程式本身的系統訊息。

 

(註:以上僅為初步介紹,日後我們將會另文專寫 Broadcast receivers 的教學講義)

 

第八講上篇完畢!歡迎繼續閱讀第八講中篇之一”Android 手機程式開發教學課程《免費講義 8-2-1》: Android 的 Empty Process , Background Process , Service Process , Visible Process , Foreground Process 概論課程講義 ”。

 


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


如果您對於 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 Developers 官網

 


著作權聲明


 

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

 

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

 


版權所有 翻印必究