Chapter 1: Introduction

Size: px
Start display at page:

Download "Chapter 1: Introduction"

Transcription

1 Lesson 006 完成第一個 App 專案 這個單元我們要完成一個可以和使用者互動的 App 專案, 這個程式專案會用到三種介面元件 :TextView EditText 和 Button TextView 是用來顯示字串, 例如欄位名稱, 或是程式的處理結果 EditText 可以讓使用者輸入資料,Button 則是讓使用者按下以啟動處理程序 我們要利用這三種介面元件, 完成如圖 6-1 的操作畫面, 我們會在主程式的介面佈局檔建立 3 個 TextView 元件 2 個 EditText 元件和 1 個 Button 元件, 建立介面元件的時候必須先設定好介面元件的屬性, 不過在開始動手之前我們先解釋一下 介面佈局檔 的格式和架構 圖 6-1 婚姻建議 程式的執行畫面 6-1 介面佈局檔 的格式和架構 在前面單元中, 我們曾經在介面佈局檔裡頭加入一個按鈕 當時是在圖形編輯模式操作, 對於介面佈局檔的格式沒有多作說明, 現在我們要揭開它的廬山真面目 介面佈局檔其實是一個 xml 格式的純文字檔, 我們可以用樹狀結構來表示, 例如以下就是單元 3 圖 3-16 的介面佈局檔 這個介面佈局檔的最外層是一個 ConstraintLayout 介面元件, 它的內部包含一個 TextView 元件和一個 Button 元件 我們可以用圖 6-2 的樹狀結構表示這三個介面元 35

2 006 完成第一個App 專案件的關係 標籤 <android.support.constraint.constraintlayout > 和 </android.support.constraint.constraintlayout> 之間的部分都是屬於 ConstraintLayout 介面元件內部, 而在標籤裡頭是屬性設定 Android SDK 提供各式各樣的介面元件, 讓程式開發人員可以設計出各種操作畫面, 甚至能夠搭配其它程式資源, 像是影像檔 Shape Theme 和 Style, 打造出具有自己風格的程式畫面 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.constraintlayout xmlns:android=" xmlns:app=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.myandroid.myapplication.mainactivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello World!" app:layout_constraintbottom_tobottomof="parent" app:layout_constraintleft_toleftof="parent" app:layout_constraintright_torightof="parent" app:layout_constrainttop_totopof="parent" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" android:layout_marginright="0dp" android:layout_margintop="27dp" android:layout_marginleft="0dp" /> </android.support.constraint.constraintlayout> 圖 6-2 用樹狀圖表示 介面佈局檔 的架構 36

3 6-2 TextView 介面元件 TextView 介面元件的功能是顯示字串, 使用者無法編輯其中的文字 在 介面佈局檔中我們可以依照下列語法加入 TextView 元件 : <TextView android:id="@+id/ 自訂元件名稱 " android: 屬性 =" 屬性值 " ( 其它屬性設定 ) /> 以上其實就是 xml 的語法 TextView 是標籤名稱, 它代表介面元件的型 態, 後面是它的屬性 第一個屬性 android:id 是設定這個 TextView 元件的 名稱, / 自訂元件名稱, / 是一個指令, 表示要將後面的元件名稱加入程式資源 R 中的 id 類別, 這樣程式才能夠找 到這個元件 如果程式碼不會改變這個元件的內容, 可以不必設定 android:id 這個屬性 接下來的每一行都是設定一個屬性值, 最常用的屬性 包括 android:layout_width android:layout_height 和 android:text, 它們分 別用來設定元件的寬 高和顯示的文字, 例如以下範例 : <TextView android:id="@+id/txtresult" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/result" /> 以上程式碼的功能是增加一個名為 txtresult 的 TextView 元件, 它的寬度設定為 match_parent, 也就是填滿它所在的外框, 高度設定為 wrap_content, 表示由文字的高度來決定 元件中會顯示一個名為 result 的字串, 該字串是定義在字串資源檔中 除了以上介紹的屬性之外, 還有許多其它的屬性, 我們留待後續單元再來介紹 介面元件 id 的命名建議在決定介面元件的 id 名稱時, 為了在程式碼中能夠清楚的知道該介面元件的種類, 我們可以在元件名稱的前面加上小寫的元件型態的縮寫 例如我們把上述 TextView 元件取名為 txtresult, 前面的 3 個小寫英文字母 txt 表示這是一個 TextView 介面元件 本書的所有範例都將採用這種方式來命名, 以方便解讀程式碼 把介面元件的每一個屬性獨立成一行是為了方便閱讀, 並不是語法的規定 37

4 006 完成第一個App 專案6-3 EditText 介面元件 EditText 元件可以讓使用者輸入文字, 然後在程式中讀取該文字 介面 佈局檔中可以依照以下語法加入 EditText 元件 : <EditText android:id="@+id/ 自訂元件名稱 " android: 屬性 =" 屬性值 " ( 其它屬性設定 ) /> 讀者可以和前面 TextView 元件的語法比較, 二者除了標籤名稱不同之 外, 其餘的格式都一樣 例如我們可以利用以下程式碼建立一個 EditText 元件 : <EditText android:id="@+id/edtsex" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputtype="text" android:hint="@string/edt_sex_hint" /> 上面的範例出現了二個新的屬性 :android:inputtype 和 android:hint android:inputtype 屬性是用來限制這個元件可以接受的字元類型 text 表示任何字元都可以被接受, 如果設定成 number, 就只能夠輸入 0~9 的數字字元 android:hint 屬性則是顯示提示訊息 當 EditText 元件中沒有輸入任何資料時, 會顯示這個提示字串 使用者開始輸入文字後, 提示字串就會消失 後續單元我們會針對常用的元件屬性做更詳細的介紹 6-4 Button 介面元件 Button 元件是讓使用者按下, 以啟動程式的某一項功能 它的語法格式如下 : <Button android:id="@+id/ 自訂元件名稱 " android: 屬性 =" 屬性值 " ( 其它屬性設定 ) /> 38

5 除了標籤名稱換成 Button 之外, 其餘都和前面介紹的元件語法相同 例如以下程式碼會在介面佈局檔建立一個按鈕, 按鈕上面顯示一個名字叫做 btn_do 的字串, 這個字串是定義在字串資源檔中 : <Button android:id="@+id/btndosug" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/btn_do" /> 現在請讀者嘗試閱讀以下介面佈局檔, 它就是本單元範例程式的操作畫 面, 也就是圖 6-1 其中有些元件屬性我們還沒有介紹, 在稍後的單元我們 會再針對常用的屬性做進一步的說明 還有其中的 <LinearLayout> 標籤是 指定介面元件採用線性排列, 而且我們加上屬性 android:orientation= "vertical", 讓它由上而下垂直排列 LinearLayout 是一種介面元件的編排模 式, 後續單元會再詳細介紹如何控制介面元件的編排方式 <LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".mainactivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sex" android:textsize="25sp" /> <EditText android:id="@+id/edtsex" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/sex_hint" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/age" android:textsize="25sp" /> <EditText android:id="@+id/edtage" android:layout_width="match_parent" android:layout_height="wrap_content" 39

6 006 完成第一個App /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textsize="25sp" /> </LinearLayout> 6-5 動手設計 App 的執行畫面 現在我們要開始設計程式的操作畫面, 請依照以下步驟操作 : 執行 Android Studio, 利用單元 3 介紹的方法新增一個 App 專案 開啟介面佈局檔 activity_main.xml, 用滑鼠點選視窗左下角的 Design 標籤, 切換到圖形編輯模式 用滑鼠右鍵點選介面佈局檔中的 Hello world! 字串, 然後選擇 Delete 將它刪除 ( 操作提示 : 可以利用介面編 輯視窗上方工具列最左邊的三個按鈕, 切換預覽模式 ) 接下來要把最外層的 ConstraintLayout 改成 LinearLayout, 先用滑鼠 右鍵點選左邊 Component Tree 視窗中的 ConstraintLayout 元件, 然後 選擇 Go To XML 編輯視窗會切換到純文字模式, 再將第一行和最後 一行的 android.support.constraint.constraintlayout 改成 LinearLayout 如下 : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" ( 其它屬性設定 )> </LinearLayout> 40

7 我們可以利用以下二種方法, 將介面佈局檔的視窗放大, 以方便編輯 : 1. 在左邊的專案檢視視窗上方有一個標題列, 標題列最右邊有一個收合按鈕, 點選該按鈕可以隱藏專案檢視視窗 如果要顯示專案檢視視窗時, 只要用滑鼠按一下左邊邊框的 Project 即可 2. 用滑鼠快按二下編輯視窗上方標題列的空白處, 就可以把編輯視窗放大 再做一次同樣的操作就可以還原 LinearLayout 可以設定為水平或是垂直二種排列方向, 我們現在要用的是垂直排列 先用滑鼠點選編輯視窗左下角的 Design 回到圖形模式, 在右邊有一個 Properties 視窗, 可以用來設定介面元件的屬性 ( 參考圖 6-3) 先在左下角的 Component Tree 視窗點選 LinearLayout 元件, 然後在 Properties 視窗將 orientation 欄位設定為 vertical 圖 6-3 設定介面元件的屬性 從編輯視窗左邊的 介面元件工具箱 ( Palette) 中, 將 Plain TextView( 在 Widgets 群組中, 按一下群組名稱可以收合 / 開啟 ) 拖曳到介面佈局檔, 完成加入的動作 在 Properties 視窗中找到 text 屬性, 點選 text 欄位最右邊的 按鈕, 就會出現圖 6-4 的對話盒 點選左下角的 New Resource > New String Value, 就會出現圖 6-5 的對話盒 在 Resource name 欄位輸 41

8 006 完成第一個App 專案入字串名稱, 例如 :sex( 操作提示 : 字串名稱一般是使用小寫英文 字母和底線字元命名 ),Resource value 欄位輸入字串內容, 例如 : 性別, 完成後按下 OK 按鈕 圖 6-4 設定字串資源的對話盒 圖 6-5 新增字串資源的對話盒 Properties 視窗的操作技巧 Properties 視窗有二種檢視模式, 第一種是預設模式只會顯示常用的屬性 第二種模式會顯示所有的屬性 我們可以利用 Properties 視窗標題右邊的 雙箭頭 按鈕來切換檢視模式 在第二種模式下, 可以點選任何一個屬性名稱, 然後輸入要設定的屬性, 就會自動搜尋 按下鍵盤的上下方向鍵可以找上一個或下一個 繼續將 textsize 屬性設定為 25sp 依照同樣的操作方式, 在介面佈局檔中加入一個 Plain Text 元件 ( 在 Text Fields 群組中 ), 然後在 Properties 視窗中, 將 id 欄位設定為 edtsex 繼續在 Properties 視窗找到 hint 屬性, 再用步驟 6 的技巧, 利用 按鈕, 新增一個字串資源, 內容是 ( 輸入性別 ), 將它設定給 hint 屬性 42

9 重複步驟 5 到 9, 再加入一個 Plain TextView 和 Plain Text 元件, 把這個 TextView 顯示的字串設定為 年齡,textSize 屬性設定為 25sp EditText 元件的 id 取名為 edtage,hint 屬性設定為 ( 輸入年齡 ) 再依照同樣的方式加入一個 Button 元件 ( 在 Widgets 群組中 ), 並且將 id 取名為 btnok, 顯示的字串設定為 確定, 然後在 Properties 視窗中將它的 layout:gravity 屬性設定成 center horizontal, 讓它水平置中, 如圖 6-6 圖 6-6 完成後的介面佈局檔畫面 最後再加入一個 Plain TextView( 在 Widgets 群組中 ), 並且將 id 取名為 txtr, 顯示的字串設定為 建議 :,textsize 屬性設定為 25sp, 最後完成的畫面如圖 6-6 以上是利用圖形操作模式進行 App 畫面的編輯 讀者可以切換到純文字模式, 檢視完成後的程式碼 筆者建議最好也能夠熟悉程式碼格式, 因為圖形編輯模式和純文字編輯模式可以互相搭配運用, 以提升開發程式的效率 完成程式畫面的設計之後, 接下來的工作是連結介面元件和程式碼, 讓程式可以讀取使用者輸入的資料, 並接收使用者按下按鈕的操作 43

10 006 完成第一個App 專案6-6 連結介面元件和程式碼 完成介面佈局檔之後, 下一步就是編輯程式檔 這個程式的操作方式是 使用者先輸入性別和年齡, 然後按下按鈕 程式會讀取性別和年齡的資料, 然後顯示判斷結果, 因此介面元件和程式碼之間必須能夠互動, 以完成下列 3 件事 : 1. 從 edtsex 和 edtage 元件取得使用者輸入的性別和年齡 ; 2. 使用者按下 確定 按鈕之後, 開始執行判斷的程式碼 ; 3. 把判斷的結果顯示在 txtr 元件裡頭 我們把建立在介面佈局檔中的標籤, 像是 <TextView> <EditText> <Button> 和 <LinearLayout> 稱為 介面元件 我們必須在程式檔中建立對應到它們的 物件, 才能夠使用這些 介面元件 這些用來對應到 介面元件 的 物件 必須和它們所對應的 介面元件 具備相同的型態 為了要完成前面討論的 3 項工作, 程式必須取得 edtsex edtage btnok 和 txtr 四個介面元件 這項工作可以藉由呼叫 findviewbyid() 來達成, 如以下範例 : // 宣告介面元件相同型態的物件 EditText medtsex, medtage; TextView mtxtr; Button mbtnok; // 利用 findviewbyid() 取得介面元件, 並設定給對應的物件 // 記得要轉型 ( 粗體標示的部分 ) medtsex = (EditText) findviewbyid(r.id.edtsex); medtage = (EditText) findviewbyid(r.id.edtage); mtxtr = (TextView) findviewbyid(r.id.txtr); mbtnok = (Button) findviewbyid(r.id.btnok); 第一步是宣告和介面元件相同型態的物件 筆者建議物件名稱和介面佈局檔中的元件 id 相同, 讓二者之間有很清楚的對應 在物件名稱前面加上一個 m 是表示它是宣告在主程式類別中的成員, 這是物件導向程式的命名慣例 呼叫 findviewbyid() 時必須傳入指定的介面元件 id, 它是用 R.id. 介面元件 id 的格式表示 findviewbyid() 這個方法會傳回指定的物件, 我們要將它轉型成正確的型態, 再存入我們宣告的物件中 針對 Button 物件我們還要設定它的 OnClickListener, 步驟如下 : 44

11 在程式中建立一個 View.OnClickListener 物件, 並完成其中的程式碼 private View.OnClickListener btnokonclick = new View.OnClickListener() public void onclick(view v) { // 按下按鈕後要執行的程式碼 ; 把以上建立的 OnClickListener 物件設定給 Button 物件, 這樣按下按 鈕後就會執行其中的程式碼 mbtnok.setonclicklistener(btnokonclick); 程式碼編輯技巧 1. 在輸入程式碼的時候, 每一次輸入 物件名稱. 之後稍停半秒鐘就會自動彈出一個方法清單, 我們可以繼續輸入方法名稱的前幾個字母, 清單中會自動過濾出符合的方法 ( 開頭必須輸入正確的英文大小寫 ) 2. 當輸入變數名稱 物件名稱或方法名稱時, 輸入到一半同時按下鍵盤的 Ctrl + Space, 或是 Ctrl + Alt + Space, 程式編輯器會立刻提供清單讓我們選取 善用這項輔助功能可以提高程式編寫的效率, 也可以減少打錯字的情況 3. 如果程式碼中出現紅色波浪底線表示有語法錯誤, 把滑鼠游標移到該處, 再同時按下鍵盤的 Alt + Enter, 就會彈出一個說明視窗和建議修正方式, 有些錯誤可以利用這個方式進行快速修正 例如當在宣告 EditText 型態的物件時, 在 EditText 型態下方會標示一個紅色波浪底線, 這是因為我們必須先 import 相關套件才能使用 EditText 此時把滑鼠游標移到紅色波浪底線上, 然後同時按下 Alt + Enter, 就會自動修正錯誤 4. 程式碼中標示灰色的部分表示沒有用到, 像是變數宣告後沒有使用, 就會以灰色標示 如果是因為程式碼還沒有全部完成, 就不需要理會這些灰色的部分 瞭解 App 的執行方式, 以及控制介面元件的方法之後, 我們就可以開始編輯程式碼 請開啟程式檔 MainActivity.java, 輸入以下粗體字的部分 在處理按鈕按下的 onclick() 方法中, 第一步是取得使用者輸入的性別和年齡資料, 然後從專案的字串資源中, 取出預先定義好的 suggestion 字串 45

12 006 完成第一個App 專案專案的字串資源是定義在 字串資源檔 res/values/strings.xml 中, 它的完 整內容列於程式碼之後 另外我們也定義了用來比對是否是男生, 以及不同建議結果的字串 在程式碼中我們利用 getstring() 方法, 從專案的字串資源取得想要的字串, 最後利用 TextView 物件的 settext() 方法, 將結果顯示在 mtxtr 物件中 package import public class MainActivity extends AppCompatActivity { private EditText medtsex, medtage; private Button mbtnok; private TextView protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); medtsex = (EditText) findviewbyid(r.id.edtsex); medtage = (EditText) findviewbyid(r.id.edtage); mbtnok = (Button) findviewbyid(r.id.btnok); mtxtr = (TextView) findviewbyid(r.id.txtr); mbtnok.setonclicklistener(btnokonclick); private View.OnClickListener btnokonclick = new View.OnClickListener() public void onclick(view v) { String strsex = medtsex.gettext().tostring(); int iage = Integer.parseInt(mEdtAge.getText().toString()); String strsug = getstring(r.string.suggestion); if (strsex.equals(getstring(r.string.sex_male))) if (iage < 28) strsug += getstring(r.string.sug_not_hurry); else if (iage > 33) strsug += getstring(r.string.sug_get_married); else strsug += getstring(r.string.sug_find_couple); else if (iage < 25) strsug += getstring(r.string.sug_not_hurry); else if (iage > 30) 46

13 strsug += getstring(r.string.sug_get_married); else strsug += getstring(r.string.sug_find_couple); ; mtxtr.settext(strsug); 字串資源檔 res/values/strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name"> 婚姻建議 </string> <string name="sex"> 性別 </string> <string name="sex_hint">( 輸入性別 )</string> <string name="age"> 年齡 </string> <string name="age_hint">( 輸入年齡 )</string> <string name="btn_ok"> 確定 </string> <string name="suggestion"> 建議 :</string> <string name="sug_not_hurry"> 還不急 </string> <string name="sug_get_married"> 趕快結婚!</string> <string name="sug_find_couple"> 開始找對象 </string> <string name="sex_male"> 男 </string> </resources> 到此我們已經完成整個 App 專案 這個單元讀者會覺得比較辛苦, 但是藉由這些說明和操作, 我們可以瞭解整個 App 的架構和執行流程, 這是後續學習的重要基礎 現在讀者可以嘗試執行這個程式, 如果順利的話, 就可以看到圖 6-1 的執行畫面 如果執行程式的過程中出現錯誤訊息, 就表示還有錯誤存在, 我們將在下一個單元學習如何幫程式除錯 6-7 在模擬器輸入中文 看到自己辛苦寫的程式出現在模擬器的畫面時, 心中是不是覺得很開心呢? 可是當要在性別欄位輸入 男 或 女 時, 會發現模擬器無法輸入中文! 沒關係, 我們可以自己安裝一個中文輸入法, 順便學習一下如何幫模擬器安裝新的 App 47

14 006 完成第一個App 專案Android SDK 中有一個專門用來控制模擬器或是實體手機的程式, 它的 名字叫做 adb.exe, 位置在 Android SDK 安裝資料夾的 platform-tools 子資 料夾裡頭 我們可以用它來安裝新的 App, 不過第一步是先取得中文輸入法 的 App 網路上有免費的 注音輸入法 讓我們下載, 網址是 : 開啟網頁瀏覽器, 連到以上網址, 可以看到許多.apk 檔 apk 檔就是 App 安裝檔 選擇最新版本下載, 並且記得儲存路徑, 因為後續必須輸入這個檔案的路徑 由於檔名有點冗長, 建議可以變更它的主檔名, 例如改成 input.apk 現在可以開始動手將它安裝到模擬器了, 請啟動 Windows 命令提示字元 程式, 將工作目錄切換到 Android SDK 安裝資料夾中的 platform-tools 子資料夾, 再執行安裝指令, 詳細操作過程如下 ( 提示 : 執行以下指令之前, 必須先啟動好模擬器 ): cd (Android SDK 安裝資料夾的路徑 )\platform-tools adb install (apk 檔的完整路徑和檔名, 包括副檔名 ) 看到出現 Success 訊息, 就表示安裝成功 現在終於可以測試我們的程式了 回到模擬器, 在手機操作首頁下方按一下 App 按鈕 進入 App 瀏覽畫面後, 找到 Settings, 啟動它 在設定項目清單中找到 Languages & input, 點選它 在下一個畫面點選 Vitrual keyboard, 然後選擇 Manage keyboards 就會顯示圖 6-7 的畫面 把 注音輸入法 右邊的開關打開 啟動我們的 App, 點一下輸入性別的欄位, 畫面還是顯示英文鍵盤? 沒關係, 點一下畫面右下角的鍵盤按鈕, 就會看到 注音輸入法 的選項 選擇它, 鍵盤就會變成注音模式, 現在可以輸入中文了! 圖 6-7 設定輸入法的畫面 48

15 6-8 把實體手機或平板電腦當成模擬器 在開發 App 的時候, 如果手邊有 Android 手機或平板電腦, 也可以把它當成模擬器來使用, 但是必須先依照下列步驟完成設定 : 在電腦上安裝手機或是平板電腦廠商提供的 USB 驅動程式 安裝好驅動程式之後, 將手機或平板電腦以 USB 線連接到電腦 現在要讓手機或是平板電腦的進入開發者模式 先進入手機的 Settings > About 找到 Build number 項目, 連續按 7 下, 就會出現快顯訊息, 通知 開發者模式 已經啟用 進入手機或是平板電腦的 Settings > Developer options, 啟用 USB debugging 再進入 Settings > Security 畫面啟用 Unknown sources 當電腦和手機或是平板電腦連接成功時, 手機或是平板電腦螢幕會顯示一個對話盒, 要我們確認是否要進行連線, 請選擇 OK 回到 Android Studio 開始執行程式專案,App 就會安裝到實體手機或平板電腦, 並且啟動執行 49

16 007 程式的錯誤類型和除錯方法Lesson 007 程式的錯誤類型和除錯方法 程式碼的錯誤稱為 Bug, 它是造成程式無法正常執行, 或是程式的執行結果和預期不一樣的原因 當程式碼出現錯誤的時候, 如何根據程式執行的情況, 推敲出可能出現錯誤的地方, 然後進行測試並加以更正, 這就是所謂的 Debug, 也就是幫程式除錯 Debug 的過程必須依賴經驗 工具和技巧 程式除錯的過程就像是電腦遊戲一樣, 必須依賴智慧和技術去突破每一道障礙 為了提高程式除錯的效率, 花些時間學習如何使用除錯工具是非常值得的 尤其對於初學者來說, 除錯技術是未來邁入進階程式設計的重要基礎, 因此這個單元就讓我們來介紹程式的錯誤類型, 並學習相關的除錯技巧 程式的錯誤可以分成三種 : 語法錯誤 邏輯錯誤和執行時期錯誤 ( 又稱為例外 ), 以下我們依序說明 7-1 程式的語法錯誤和除錯的方法 所謂語法錯誤, 就是程式碼不符合程式語言的語法 語法錯誤是最明顯也是最容易解決的錯誤類型 目前幾乎所有的程式碼編輯器都有即時檢查語法的功能, 只要有錯誤, 就會立刻標示出來, 包括 Android Studio 也是如此, 讀者可以參考圖 7-1 在程式碼編輯視窗中, 當某一行標示紅色波浪底線, 就表示該行有語法錯誤 把滑鼠游標移到波浪底線上面 ( 不需要按下任何按鍵 ), 就會彈出一個說明視窗, 有些情況還會提供修正的建議 但是有時候, 標示紅色波浪底線的真正原因是該處的程式碼無法被編譯器接受, 實際出錯的地方有可能就是該處, 但也有可能是前面的程式碼錯誤造成的 因此如果在標示錯誤的該行程式碼反覆檢查, 卻仍然找不出錯誤, 就要檢查一下前面的程式碼, 才能夠找出真正錯誤的原因 如果看了許久還是找不出錯誤, 就把可能有問題的那一段程式碼先刪除, 看看語法錯誤是否還在 如果已經沒有語法錯誤, 就表示問題真的在刪除的那一段程式碼, 這時候可以同 50

17 時按下鍵盤上的 Ctrl 和 Z, 回復上一次的修改, 再依照同樣的作法, 繼續縮 小尋找範圍, 直到找出錯誤的地方 圖 7-1 程式碼編輯視窗標示語法錯誤的畫面 7-2 程式的邏輯錯誤和除錯的方法 所謂邏輯錯誤是指程式可以執行, 但是結果不對 例如計算輸入的成績總分, 卻發現加總的結果不對 這有可能是資料讀取錯誤, 或是計算成績總和的程式碼出錯 遇到這種錯誤, 我們可以採取下列步驟 : 首先思考可能在哪一段程式碼出錯 在可能出錯的程式碼的第一行設定一個中斷點, 然後讓程式在除錯模式執行, 當遇到設定中斷點的那一行程式碼時就會暫停 設定中斷點的方式是在程式碼編輯視窗左側邊緣的灰色區域按一下滑鼠, 就會顯示一個圓點, 如圖 7-2 要取消中斷點的時候, 用滑鼠在小圓點上按一下即可 51

18 007 程式的錯誤類型和除錯方法圖 7-2 在程式碼中設定中斷點 點選工具列上的小蟲按鈕 ( 稱為 Debug 按鈕, 參考圖 7-2), 讓程式以除錯模式執行 在手機模擬器中操作程式, 讓程式進入設定中斷點的程式碼 除錯畫面如圖 7-3, 中斷點那一行會反白, 表示目前程式正要執行該行 下方會出現一個 Variables 視窗, 顯示目前相關變數的內容, 它的右邊有一個 Watches 視窗 ( 如果沒有, 可以按下 Variables 視窗右上角的按鈕, 就會顯示 ), 可以讓我們自己設定要查看的變數 我們可以在程式碼中, 用滑鼠快按二下某一個變數, 然後把它拖曳到 Watches 視窗, 就可以查看該變數的值 52

19 圖 7-3 Android Studio 的除錯畫面 Variables 視窗上方和左邊有除錯工具列 ( 參考圖 7-3), 它們可以用來控制程式的執行 ( 操作提示 : 讓滑鼠游標停在某一個按鈕上方 2 秒鐘, 就會顯示該按鈕的功能說明 ), 例如 Resume Program( 繼續往下執行 ) Step Over( 單行執行 ) Step Into( 進入呼叫函式 ) Step Out( 離開目前的函式 ) 等 例如我們可以按下 Step Over 按鈕, 以一次一行的方式執行程式, 並持續觀察變數的值, 以瞭解程式是否依照我們預期的方式運作 讀者可以視情況使用適合的執行方式, 也可以加入新的中斷點 藉由交互運用以上介紹的操作技巧, 找出錯誤的程式碼 如果要停止除錯模式時, 只要按圖 7-3 左邊工具列的紅色方形按鈕即可 7-3 執行時期錯誤和除錯的方法 如果程式在執行過程中顯示如圖 7-4 的訊息, 就表示出現執行時期錯誤, 程式會被強制結束 要找出發生執行時期錯誤的原因, 也可以利用前面介紹的中斷點, 或是利用以下介紹的 log 方法來除錯 Log 是程式在執行過程輸出的訊息, 例如許多軟體在安裝過程中, 也會產生 log 檔, 記錄每一個階 53

20 007 程式的錯誤類型和除錯方法段的結果 我們可以在程式中加入產生 log 的程式碼, 來追蹤究竟程式執行到那一段程式碼, 才出現執行時期錯誤 要讓程式產生 log 可以利用以下指令 : Log.d( log 訊息分類標籤, log 訊息 ); 圖 7-4 App 出現執行時期錯誤的畫面 每一個 log 都可以設定一個分類的標籤, 以方便篩選 Android Studio 操作畫面下方有一個 6 Logcat 按鈕( 參考圖 7-5), 按下該按鈕, 就會顯示 Logcat 視窗 Android 作業系統在執行的過程中, 會自動產生許多 log 訊息 為了能夠找出我們的程式產生的 log 訊息, 我們可以設定一個專用的 log 標籤名稱, 例如在程式的每一個判斷條件都增加一行 log 指令如下 : 圖 7-5 Logcat 視窗中的 log 訊息 54

21 private View.OnClickListener btnokonclick = new View.OnClickListener() public void onclick(view v) { String strsex = medtsex.gettext().tostring(); int iage = Integer.parseInt(mEdtAge.getText().toString()); String strsug = getstring(r.string.suggestion); if (strsex.equals(getstring(r.string.sex_male))) if (iage < 28) { strsug += getstring(r.string.sug_not_hurry); Log.d("MarriSug", "man, don't hurry"); else if (iage > 33) { strsug += getstring(r.string.sug_get_married); Log.d("MarriSug", "man, hurry to get married!"); else { strsug += getstring(r.string.sug_find_couple); Log.d("MarriSug", "man, start to find girlfriend!"); else if (iage < 25) { strsug += getstring(r.string.sug_not_hurry); Log.d("MarriSug", "woman, don't hurry!"); else if (iage > 30) { strsug += getstring(r.string.sug_get_married); Log.d("MarriSug", "woman, hurry to get married!"); else { strsug += getstring(r.string.sug_find_couple); Log.d("MarriSug", "woman, start to find boyfriend!"); ; mtxtr.settext(strsug); 修改程式碼之後啟動程式 ( 用一般模式或是除錯模式皆可 ) 程式啟動之後會自動顯示 Logcat 視窗, 該視窗右邊上方有一個下拉式選單 ( 參考圖 7-5), 裡頭有一個 Edit Filter Configuration 選擇它, 就會顯示 Logcat Filter 對話盒, 如圖 7-6 在 Filter Name 欄位輸入一個名稱,Log Tag 欄位輸入程式碼設定的 log 訊息分類標籤, 按下 OK 按鈕 現在 Logcat 視窗只會顯示我們程式產生的 log 訊息 55

22 007 程式的錯誤類型和除錯方法圖 7-6 Logcat Filter 對話盒 當程式出現執行時期錯誤的時候, 先在可能出錯的程式碼前面和後面加上產生 log 的指令 我們也可以把相關變數的值, 一起顯示在 log 訊息中, 這樣更能夠瞭解程式執行的狀況 這種技巧尤其特別適用在對迴圈進行除錯的時候 當程式發生執行時期錯誤的時候, 仔細檢查 log 訊息, 就可以知道究竟是什麼情況造成執行時期錯誤 以上介紹的 log 技巧可以搭配中斷點一起使用 舉例來說, 如果是在程式執行迴圈時發生錯誤, 可以先在迴圈中加上 log, 顯示迴圈的索引值 利用 log 找出究竟是哪一次迴圈造成錯誤之後, 再利用設定中斷點的方法來追蹤那一次迴圈的執行過程, 就可以很快地找出錯誤的原因 程式除錯是學習程式設計一個很重要的主題, 如果不能夠幫程式除錯, 就算學會再多的語法, 也無法完成一個程式專案 只要能夠多做, 程式設計的功力自然就會提升, 除錯的技巧和效率也會隨之提高 56

23 009 自動測試讓程式的錯誤無所遁形Lesson 009 自動測試讓程式的錯誤無所遁形 傳統的程式設計教學並不會把 測試程式 列入初學者的學習重點, 必須等到 軟體工程 的課程才會介紹相關的技術 但是近幾年來, 隨著軟體開發技術的演進, 學習程式設計的方式也必須調整, 讓初學者盡早建立正確的觀念, 並且學會使用新技術, 才能夠跟上時代的腳步 如果還是停留在傳統的方法, 恐怕會事倍功半, 甚至徒勞無功! 這個單元我們要介紹一個很有趣, 而且也很有用的工具和技術 它可以幫助我們測試程式, 找出在哪些情況下會出現錯誤 一般程式設計的初學者會認為, 測試程式只要輸入幾組數據, 看看結果對不對就好了, 不是嗎? 這種想法不能說錯 如果只是小程式, 這種作法未嘗不可 可是如果程式的功能比較複雜, 要把每一種情況都測試一遍, 就需要比較長的時間 再加上人是有惰性的, 如果累了, 有些步驟就會跳過, 而問題就經常發生在這種情況! 軟體開發的歷史經驗告訴我們 : 測試很重要, 因此在軟體工程領域發展出一種所謂 測試驅動開發 (Test-Driven Development, TDD) 的方法 它的策略是先建立測試案例, 再撰寫程式碼, 然後用這些測式案例對程式進行測試 圖 9-1 是 TDD 的流程圖 由於測試在 TDD 中佔了很大的份量, 為了減少花費在測試上的時間, 必須藉助自動化測試工具 雖然我們不會詳細討論這種開發模式, 但是就目前軟體開法的技術來說, 自動測試已經成為重要的輔助工具之一, 它可以幫助我們驗證程式的正確性 這個單元我們要介紹 Android Studio 內建的自動測試工具, 實際體驗一下它的神奇之處 64

24 圖 9-1 測試驅動開發 的流程圖 Android Studio 提供二種測試程式的方法, 第一種是 單元測試 (Unit Test), 第二種是 裝置測試 (Instrumented Test) 單元測試是軟體工程領域探討的一種測試方法 如果以 Java 這種純物件導向的程式語言來說, 單元測試就是針對程式中的類別進行測試 也就是說, 當我們設計好一個新的類別之後, 會建立一個它的物件, 然後呼叫它的方法, 看看執行的結果和我們的預期是否相同 Android Studio 的單元測試是使用 JUnit 套件, 它可以測試 純 Java 類別, 也就是類別中只用到 Java 語言本身提供的套件 開發 Android App 除了會用到 Java 語言的套件之外, 也會用到 Android framework 的套件, 像是主程式 MainActivity 繼承的基礎類別 Activity 或是 AppCompatActivity, 就是屬於 Android framework 的套件, 因此 MainActivity 這個類別就不能夠使用單元測試, 而必須改用裝置測試 裝置測試顧名思義, 就是必須使用實體裝置或是模擬器才能夠進行測試 相對而言, 單元測試就不需要實體裝置和模擬器 我們將以上討論整理成下列二個重點 : 1. 如果類別的程式碼只用到 Java 語言本身提供的套件, 這個類別就可以使用單元測試 2. 如果類別的程式碼有用到 Android framework 的套件, 就必須使用裝置測試 其實裝置測試也可以用在 Java 語言套件的類別 也就是說, 裝置測試的功能包含單元測試 只不過執行裝置測試的時候, 必須啟動模擬器或是使用實體裝置 另外要提醒讀者, 必須安裝 Android Support Repository 才能夠使用本單元介紹的測試工具 Android Support Repository 可以利用 Android SDK Manager 進行安裝和更新, 相關說明請參考單元 3 瞭解單元測試和裝置測試的功能之後, 接下來我們就從單元測試開始介紹 65

25 009 自動測試讓程式的錯誤無所遁形在程式開發階段所進行的測試分成以下三種 : 1. 單元測試單元測試是針對程式專案中的每一個單元或類別進行測試, 以確認它的執行結果符合需求 2. 整合測試將多個單元或類別結合起來, 讓它們同時執行並進行互動, 以確認它們之間的交互運作符合原來設計的目的 3. 系統測試 讓整個軟體系統啟動, 然後進行各種操作, 確認它的功能達到當初設計的需求 9-1 單元測試 單元測試是使用 JUnit 套件,JUnit 是針對 Java 程式所設計的測試套件, 它的前身是 SUnit SUnit 是 Beck 在 1998 年提出的程式測試架構, 專門給 Smalltalk 程式語言使用 可惜後來 Smalltalk 語言並沒有普及, 於是 Beck 又和 Gamma 一起合作, 繼續開發 Java 程式使用的 JUnit 測試套件 現在 JUnit 已經成為測試 Java 程式的重要工具, 而且這個架構也被成功的移植到其它程式語言, 包括 C, C++, Fortran, Pascal, 這一系列的測試套件統稱為 xunit 當我們使用 Android Studio 新增一個 App 專案的時候, 會自動在程式專案資料夾的子資料夾 app/src 中, 建立三個資料夾 :main androidtest 和 test 圖 9-2 是在 Android Studio 的專案檢視視窗中看到的情形 main 資料夾中的檔案全部屬於我們開發的 App,androidTest 資料夾中的檔案是用來進行裝置測試,test 資料夾中的檔案則是用來進行單元測試 66

26 圖 9-2 App 專案中包含 App 的檔案以及裝置測試檔案和單元測試檔案 App 專案必須包含 JUnit 套件才能夠執行單元測試, 建立 App 專案的時候預設會加入該套件 我們可以利用以下步驟確認 App 專案已經包含 JUnit 套件, 以及在需要的時候, 將它加入 App 專案 選擇 Android Studio 主功能表 File > Project Structure 在顯示的對話盒中, 點選左邊窗格最下方的 app 模組, 然後在右邊點選 Dependencies 標籤, 就會看到圖 9-3 的畫面 這個畫面會顯示 app 模組使用的套件和程式庫 如果其中包含 junit 項目, 就不需要執行接下來的步驟 圖 9-3 檢視 App 專案使用的套件和程式庫 選擇對話盒右上方的 + 按鈕, 再選擇 1. Library dependency, 畫面會出現另一個對話盒 在最上面的欄位輸入 junit( 參考圖 9-4), 然後按下右邊的搜尋按鈕, 稍等片刻, 就會找到 junit 套件 67

27 009 自動測試讓程式的錯誤無所遁形圖 9-4 在對話盒輸入 junit 再執行搜尋 選擇 junit 套件, 按下 OK 按鈕 確認 App 專案包含 JUnit 套件之後, 就可以開始建立單元測試 我們以單元 6 的 婚姻建議 程式為例, 介紹如何建立單元測試, 請讀者依照下列步驟操作 : 啟動 Android Studio, 載入單元 6 建立的 婚姻建議 程式 如果想要保留原來的專案, 可以先用 Windows 檔案總管複製整個專案的資料夾, 再將複製的資料夾改成想要的名稱, 然後用 Android Studio 的 import 功能載入複製的專案 複製 Android Studio 程式專案的訣竅要複製 Android Studio 程式專案, 只要利用 Windows 檔案總管, 把專案資料夾複製一份即可 只是程式專案中除了程式檔和資源檔, 還有很多編譯過程產生的暫存檔, 以及開發環境的暫存檔 這些暫存檔會佔據額外的磁碟空間, 其實它們是不需要複製的 或者如果要把程式專案複製給其他人, 也不需要複製這些暫存檔 為了減少程式專案佔據的磁碟空間 可以把下列的資料夾和檔案刪除 : 1. 程式專案資料夾中的.gradle.idea 和 build 子資料夾 2. app 資料夾中的 build 子資料夾, 請特別注意,app 資料夾不能夠刪除, 只能夠刪除其中的 build 子資料夾 3. 程式專案資料夾中的.iml 檔, 這個檔案的主檔名和專案資料夾的名稱相同 如果變更專案資料夾的名稱, 會重新建立一個.iml 檔 刪除這個檔案和資料夾之後, 可以利用 Android Studio 的 Import project 功能, 重新載入 App 專案 68

28 在 Android Studio 左邊的專案檢視視窗中, 展開 app/java/ 套件路 徑名稱 (test) ( 操作提示 : 請確定專案檢視視窗是在 Android 檢視 模式, 可以利用視窗上方的工具列切換檢視模式 ) 在該資料夾中有一個預設產生的單元測試範例 如果想要檢視, 可以將它開啟, 然後就可以刪除它 ( 用滑鼠右鍵點選它, 然後選擇 Delete) 現在我們要在專案中新增一個使用純 Java 套件的類別, 才能夠進行單元測試 用滑鼠右鍵點選 套件路徑名稱 資料夾 ( 也就是包含主程式 MainActivity 的資料夾 ), 從快顯功能表中選擇 New > Java Class 在 Name 欄位輸入類別名稱, 例如 MarriageSuggestion, 按下 OK 按鈕 新類別的程式檔會自動開啟, 將它的內容編輯如下 我們只建立一個名字叫做 getsuggestion() 的方法, 它會接收性別字串和年齡, 然後傳回一個 String 型態的結果 它使用的判斷規則和原來主程式 MainActivity 中的一模一樣 package import public class MarriageSuggestion { public String getsuggestion(string strsex, int iage) { String strsug = ""; if (strsex.equals(" 男 ")) if (iage < 28) strsug += " 還不急 "; else if (iage > 33) strsug += " 趕快結婚!"; else strsug += " 開始找對象 "; else if (iage < 25) strsug += " 還不急 "; else if (iage > 30) strsug += " 趕快結婚!"; else strsug += " 開始找對象 "; return strsug; 69

29 009 自動測試讓程式的錯誤無所遁形接下來我們要建立一個單元測試檔, 試看看這個新類別的功能是否符 合我們的需求 首先用滑鼠右鍵點選 套件路徑名稱 (test) 資料 夾, 從快顯功能表中選擇 New > Java Class 在 Name 欄位輸入 MarriageSuggestionTest, 按下 OK 按鈕 新類別的程式檔會自動開啟, 將它的內容編輯如下 我們加入一個名為 getsuggestion() 的方法, 這個方法的名稱和步驟 5 的方法名稱一樣, 表示這個方法是要測試該方法 另外請讀者注意, 這個方法的上一行有一個特殊 它告訴編譯器, 這是一個測試用的方法 另外我們還用到 assertequals() 方法 這個方法是屬於 JUnit 中的 Assert 類別, 它的功能是比對我們指定的項目, 看看二者的值是否相同 如果相同, 表示測試通過, 如果不一樣, 就會顯示測試失敗的訊息 package import public class MarriageSuggestionTest public void getsuggestion() { MarriageSuggestion marriagesuggestion = new MarriageSuggestion(); String s = marriagesuggestion.getsuggestion(" 男 ", 25); assertequals(s, " 還不急 "); s = marriagesuggestion.getsuggestion(" 男 ", 30); assertequals(s, " 開始找對象 "); s = marriagesuggestion.getsuggestion(" 男 ", 34); assertequals(s, " 趕快結婚!"); s = marriagesuggestion.getsuggestion(" 女 ", 24); assertequals(s, " 還不急 "); s = marriagesuggestion.getsuggestion(" 女 ", 29); assertequals(s, " 開始找對象 "); s = marriagesuggestion.getsuggestion(" 女 ", 31); assertequals(s, " 趕快結婚!"); 70

30 舊的 JUnit 測試套件是使用 testxxx() 的命名規則來指定測試用的方法, 新的 JUnit 測試套件則改用 來指定測試用的方法 編輯好單元測試檔之後, 在專案檢視視窗中, 用滑鼠右鍵點選它, 然後選擇 Run 'MarriageSuggestionTest' Android Studio 下方會顯示圖 9-5 的結果, 表示測試通過 如果 assertequals() 方法執行失敗, 表示程式執行的結果和我們預期的不一樣, 這時候就會顯示圖 9-6 的訊息 訊息中會分別列出執行的結果和我們預期的值, 讓開發者知道二者的差異 另外也會提供一個連結到導致失敗的 assertequals(), 點選它就會跳到該行程式碼 圖 9-5 執行單元測試成功的訊息 圖 9-6 執行單元測試失敗的訊息 除了 assertequals() 方法之外,Assert 類別還提供其它 assert 相關的方法, 讓我們比對程式的執行結果, 我們將相關方法整理和說明如表 9-1 接下來我們要介紹功能更強大的裝置測試! 表 9-1 Assert 類別中常用的方法 assertequals( ) 方法名稱 功能說明這是一個多載 (overload) 的方法, 它有各種資料型態的版本, 例如 int long float double String Object, 讓我們能夠比對各種型態的資料 71

31 009 自動測試讓程式的錯誤無所遁形方法名稱 功能說明 asserttrue(boolean condition) 檢查 condition 布林運算式的結果是否為 true assertfalse(boolean condition) 檢查 condition 布林運算式的結果是否為 false assertnull(object object) 檢查 object 是否為 null assertnotnull(object object) 檢查 object 是否不是 null assertsame(object expected, Object actual) 檢查 expected 和 actual 這二個物件是否相同 assertnotsame(object expected, Object actual) 檢查 expected 和 actual 這二個物件是否不同 fail() 設定測試結果為失敗 Android Studio 操作提示執行測試類別之後, Android Studio 上方工具列的 Run 按鈕左邊的設定會變成測試類別 也就是說, 如果這時候按下 Run 按鈕, 就會執行該測試類別 如果要換成執行 App 專案, 必須用滑鼠按一下那個下拉式選單, 選擇其中的 app 9-2 裝置測試 裝置測試的功能包含前面介紹的單元測試 除此之外, 裝置測試還可以 對使用 Android framework 套件的類別進行測試, 因此裝置測試的功能比單 元測試還要強大 裝置測試需要用到比較多的套件, 我們必須修改程式模組的 build.gradle 設定檔 在 Android Studio 左邊的專案檢視視窗中, 展開 Gradle Scripts ( 記得切換到 Android 檢視模式 ), 開啟其中的 build.gradle(module:app) 檔案, 加入下列粗體標示的程式碼 最後三行程式碼的結尾有版本編號, 請讀者使用最新版本編號的套件 另外, Android SDK 開發套件的版本也盡量使用最新的版本, 以避免發生相容性的問題 ( 原來的程式碼 ) android { ( 原來的程式碼 ) defaultconfig { ( 原來的程式碼 ) testinstrumentationrunner "android.support.test.runner.androidjunitrunner" ( 原來的程式碼 ) 72

32 dependencies { ( 原來的程式碼 ) androidtestcompile 'com.android.support:support-annotations:23.3.0' androidtestcompile 'com.android.support.test:runner:0.5' androidtestcompile 'com.android.support.test:rules:0.5' 在開始介紹如何使用裝置測試以前, 讓我們先瞭解一下 Android framework 的測試套件 Android framework 的測試套件是放在 android.test 套件路徑裡頭 為了方便讀者查詢, 我們將其中比較常用的測試類別整理如表 9-2 Android 系統中的程式類型總共分成四種 :Activity Service Content Provider 和 Broadcast Receiver, 這四種程式都可以使用 android.test 套件中的類別進行測試 測試類別的執行方式和一般 Android App 的執行方式不一樣 當啟動測試類別時,Android 系統中的 InstrumentationRunner 會負責執行, 並且啟動它所關聯的 App, 接著再執行測試類別中的測試方法 測試類別和它關聯的 App 會在同一個 process 中執行, 最後的測試結果會傳回給 Android Studio 顯示 表 9-2 android.test 套件中常用的測試類別 類別名稱 AndroidTestCase ActivityUnitTestCase<T extends Activity> ActivityInstrumentationTestCase2<T extends Activity> ApplicationTestCase<T extends Application> ProviderTestCase2<T extends ContentProvider> ServiceTestCase<T extends Service> 功能說明可以用來測試 Android 程式, 並且使用程式的資源 用來測試 Activity 型態的程式, 由於是採用 獨立 的單元測試, 有些 Activity 的功能無法使用 用來測試 Activity 型態的程式, 它不是使用 獨立 的單元測試, 因此可以完整地測試 Activity 的功能 用來測試 Application 類別 用來測試 ContentProvider 型態的程式 用來測試 Service 型態的程式 瞭解測試類別的運作方式之後, 接下來我們還是以單元 6 的 婚姻建議 程式為例, 說明如何進行裝置測試, 以下是必須完成的工作 : 73

33 009 自動測試讓程式的錯誤無所遁形1. 在 Android App 專案中的 app/java/ 套件路徑名稱 (androidtest) 套件路徑裡頭, 建立一個測試類別, 這個類別必須繼承 android.test 套件中的某一個類別, 例如表 9-2 中的 ActivityInstrumentationTestCase2 2. 我們可以在測試類別中建立 setup() 和 teardown() 方法, 它們分別用來進行測試的初始化, 和測試完畢的清理工作 當測試類別啟動的時候, 會先執行 setup()( 指定這個方法 ), 然後執行我們建立的測試方法, 最後再執行 teardown()( 指定 ) 3. 在這個測試類別中加入一個或多個測試方法, 指定 現在我們就來示範完整的實作過程 : 啟動 Android Studio, 載入單元 6 建立的 婚姻建議 程式 如果想要保留原來的專案, 可以先用 Windows 檔案總管複製整個專案的資料夾, 再將複製的資料夾改成想要的名稱, 然後用 Android Studio 的 import 功能載入複製的專案 在 Android Studio 左邊的專案檢視視窗中, 展開 app/java/ 套件路徑名稱 (androidtest) ( 操作提示 : 請確定專案檢視視窗是在 Android 檢視模式, 可以利用視窗上方的工具列切換檢視模式 ) 在該資料夾中有一個預設產生的裝置測試範例 如果想要檢視, 可以將它開啟, 然後就可以刪除它 ( 用滑鼠右鍵點選它, 然後選擇 Delete) 現在要建立一個裝置測試檔, 用滑鼠右鍵點選 套件路徑名稱 (androidtest) 資料夾, 從快顯功能表中選擇 New > Java Class 在 Name 欄位輸入 MainActivityTest, 按下 OK 按鈕 新類別的程式檔會自動開啟, 將它的內容編輯如下 我們先讓這個類別繼承 ActivityInstrumentationTestCase2, 然後加入 setup() teardown() 以及一個名為 maleage25() 的測試方法 提醒讀者, 必須在測試類別之前加入一個編譯註解, 指定使用 AndroidJUnit4 來執行測試, 如粗體標示的程式碼 裝置測試同樣是用 assertequals() 方法檢查執行結果是否和我們的預期相同 如果相同, 表示測試通過, 如果不一樣, 就會顯示測試失敗的訊息 74

34 package public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { // 用來儲存 MainActivity 物件和它的介面元件 private MainActivity mmainactivity; private EditText medtsex, medtage; private Button mbtndosug; private TextView mtxtresult; public MainActivityTest() { public void setup() throws Exception { super.setup(); // 完成初始設定 injectinstrumentation(instrumentationregistry. getinstrumentation()); // 利用 getactivity() 方法取得 MainActivity 物件 // 再取得 MainActivity 物件的介面元件 mmainactivity = (MainActivity) getactivity(); medtsex = (EditText) mmainactivity.findviewbyid(r.id.edtsex); medtage = (EditText) mmainactivity.findviewbyid(r.id.edtage); mbtndosug = (Button) mmainactivity.findviewbyid(r.id.btnok); mtxtresult = (TextView) public void maleage25() { // 測試男生, 年齡 25 的情況 // 對於介面元件的控制必須在 UI thread( 或稱為 main thread) 中執行 mmainactivity.runonuithread(new Runnable() public void run() { medtsex.settext(" 男 "); medtage.settext("25"); mbtndosug.performclick(); ); 75

35 009 自動測試讓程式的錯誤無所遁形 // 由於模擬器執行比較慢, 等候一點時間讓它執行完畢 try { Thread.sleep(2000); // 等 2 秒鐘 catch (InterruptedException e) { e.printstacktrace(); // 檢查是否顯示正確的字串 assertequals(mmainactivity.getstring(r.string.sug_not_hurry), public void teardown() throws Exception { super.teardown(); // 加入測試完畢後執行清除的程式碼 關於 main thread 和 UI thread Android App 啟動的時候, 所建立的 thread 稱為 main thread main thread 也叫做 UI thread, 因為程式所有的介面元件都屬於 main thread, 而且只有 main thread 才可以操控介面元件 除了 main thread 之外, 其它後來產生的 thread 都叫做 background thread 或是 worker thread 編輯好裝置測試檔之後, 先確定 Android 裝置模擬器已經啟動完成, 或是已經將 Android 實體裝置連結到電腦, 並且已經進入開發者模式 接著在專案檢視視窗中, 用滑鼠右鍵點選裝置測試檔 MainActivityTest, 然後選擇 Run 'MainActivityTest' Android Studio 下方會顯示執行測試的過程, 最後會得到類似圖 9-5 或是圖 9-6 的結果 以上就是建立和啟動裝置測試的過程 學會自動測試的方法之後, 讀者可以在開發 App 時, 思考如何設計 App 的架構, 讓專案開發的每一個階段, 都可以利用自動測試技術, 驗證每一項功能的正確性 如此一來, 不僅可以減少測試所需的人力和時間, 還能夠確保測試的完整性, 以及提高系統的可靠性 76

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc) 作者 Amber 版本 1.0.0 日期 2012/04/25 頁數 1/7 如何使用 LED 燈顯示狀態? 適用於 : 平台 作業系統版本 XPAC utility 版本 XP-8000 系列 N/A N/A XP-8000-Atom 系列 WES2009 所有版本 N/A: Not applicable to this platform and OS. 注意! 欲變更系統的任何設定之前, 請先關閉

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

PowerPoint Presentation

PowerPoint Presentation Part 2 開始我們的 Android 程式設 計之旅 單元 4 安裝 Android 程式開發工具 單元 5 使用 Eclipse 建立第一個 Android 應用程式單元 6 瞭解 Android 程式專案的架構和執行流程單元 7 使用 TextView EditText 和 Button 介面元件單元 8 程式的錯誤類型和除錯方法單元 9 Eclipse 進階程式專案管理技巧單元 10 讓程式有美好的未來

More information

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc Author WeiKai Version 1.0.0 Date 2013/4/14 Page 1/11 我如何在 XPAC 上建立一個 COM port 通訊程式 Applies to: Platform OS version XPAC utility version XPAC series All versions (WinCE6) All versions XPAC SDK 提供 XPAC 結合

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

More information

iziggi

iziggi iziggi 1 1 iziggi-hd 2 iziggi-hd 4 IPEVO iziggi-hd 6 iziggi-hd 8 iziggi-hd 9 Whiteboard App USB 10 iziggi-hd 11 iziggi-hd Live View WiFi 11 12 LED 12 iziggi-hd 13 Apple TV AirPlay 13 14 15 iziggi-hd *

More information

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8 Smart TPM Rev. 1001 Smart TPM Ultra TPM Smart TPM TPM...3 1. BIOS... 3 2. Infineon TPM Smart TPM... 4 2.1. Infineon TPM...4 2.2. Smart TPM...4 3. TPM... 5 3.1. Smart TPM TPM...5 3.2. Advanced Mode...8

More information

46 2011 11 467 數位遊戲式學習系統 7 2011 11 467 47 3 DBGameSys 48 2011 11 467 正規化資料模組 如何配置並儲存電子化資料 以 便減少資料被重覆儲存的程序 DBGameSys的主要功能模組包 學習者 審核評分模組 含 正規化資料模組 審核評分 模組 高分列表模組3大區塊 系統資料庫 在正規化資料模組的執行 高分列表模組 過程中 先要求學習者瀏覽遊戲

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

Microsoft Word - 02.目錄.doc

Microsoft Word - 02.目錄.doc 目錄 -1- 目錄 序 準備篇 一 使用說明... 0-2 二 標示說明... 0-6 三 注意事項... 0-7 第一類 Android 基礎知識 -UI 設計及語法應用 101. 整存整付計算機... 1-2 102. 電費計算機... 1-8 103. 點餐系統... 1-18 104. 計算 BMI 值... 1-23 105. MENU 功能選單... 1-36 106. 畫廊展示...

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - C_Structure.ppt 結構與其他資料型態 Janet Huang 5-1 結構的宣告 struct 結構名稱 struct 結構名稱變數 1, 變數 2,, 變數 m; struct 結構名稱 變數 1, 變數 2,, 變數 m; student; student; 5-2 1 結構變數初值的設定 struct 結構名稱 struct 結構名稱變數 = 初值 1, 初值 2,, 初值 n student="janet","1350901",100,95

More information

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 Excel - - Excel - -4-5 840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 ( 0 ) 智慧標籤 相關說明提示 -5 -- Excel 4 5 6 7 8 + - * / % ^ = < >= & 9 0 (:) (,) ( ) Chapter - :,

More information

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4 JAVA Extension 0..\Example\Ch0\ \ T.html..\Example\Ch0\ \ T.txt T.txt..\Example\Ch0\ \ T_Ok.html 提示 :. Marquee Marquee Font Color #FFFFFF BG Color #867bf Width 90 Height 50. T.txt Ctrl+C your scrolling

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

(Microsoft Word - wes _\246p\246\363\250\317\245\316watchdog\250\276\244\356\265{\246\241\267\355\276\367.doc)

(Microsoft Word - wes _\246p\246\363\250\317\245\316watchdog\250\276\244\356\265{\246\241\267\355\276\367.doc) 作者 Amber 版本 1.0.0 日期 2012/04/24 頁數 1/9 如何使用 watchdog 防止程式當機? 適用於 : 平台 作業系統版本 XPAC utility 版本 XP-8000 系列 WES2009 所有版本 XP-8000-Atom 系列 WES2009 所有版本 注意! 欲變更系統的任何設定之前, 請先關閉 EWF 的保護, 方能使變更值生效 ; 設定完成之後, 請再開啟

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

CU0594.pdf

CU0594.pdf 8 SOHO 1 3 003 SOHO SOHO Coder Programmer HTML CSS PHP JavaScrip 009 LECTURE 1-1 1 048 PART 2 LECTURE 1-1 1 049 SOHO Landing Page Landing 050 PART 2 LECTURE 1-1 1 SEO SEO P.093 SEO SEO SEO SEO SEO 051

More information

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl 01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Flash 可以做精美的網路動畫並不陌生, 但是實際上 Flash 不僅如此, 只要搭配 ActionScript

More information

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089 Photoshop CC Camera Raw Photoshop Camera Raw Step 1 3 1 2 3 SCOTT KELBY Step 2 B Camera Raw 088 Chapter 3 Camera Raw Chapter 3 Camera Raw Step 3-4 -100 negative clarity +25 ] P / -75-50 Step 4 0 ( 下一頁

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

IT Essentials 5

IT Essentials 5 5.0 5.3.7.2 實驗 在 Windows 中使用 CLI 命令 簡介 列印並完成本實驗 本實驗將在 Windows 7/Vista/XP 中使用 Windows CLI 命令管理資料夾 檔案和程式 推薦設備本練習需要以下設備 : 執行 Windows 7 Windows Vista 或 Windows XP 的電腦 步驟 1 以管理者身份登錄電腦 註 : 如果使用 Administrator

More information

ii Vue Bootstrap 4 ES 6 Vue Vue Bootstrap 4 ES 6 Vue 2 vue html vue html vue Vue HTML 5 CSS ES 6 HTML 5 CSS Visual Studio Code h

ii Vue Bootstrap 4 ES 6 Vue Vue Bootstrap 4 ES 6 Vue 2 vue html vue html vue Vue HTML 5 CSS ES 6 HTML 5 CSS Visual Studio Code h ii Vue Bootstrap 4 ES 6 Vue Vue Bootstrap 4 ES 6 Vue 2 vue010101.html vue010104.html vue0101 01 04 Vue HTML 5 CSS ES 6 HTML 5 CSS Visual Studio Code https://code.visualstudio.com/ Chrome XAMP Visual Studio

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

Chapter 1: Introduction

Chapter 1: Introduction Lesson 004 App 專案管理和 Gradle 設定技巧 Android Studio 是用 Gradle 套件來管理 App 專案 Gradle 的功能非常強大, 但是這也意謂著它的用法有一定的複雜度 建立 App 專案的時候,Android Studio 會自動幫我們產生正確的 Gradle 設定 但是軟體版本會不斷地更新,Gradle 也一樣 再加上 Android Build Tools

More information

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 簡介 Java 10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 10-3 Java Java SCJD 7 Swing RMI 10.1.1 The Assignment The Essay 9 10 10-4 SCJP SCJD 90 10.1.2 SCJP Java 90 120 Swing 10

More information

PowerPoint 簡報

PowerPoint 簡報 UI 設計 Android 專案目錄架構 Android 專案建立後會自動產生 3 個主要目錄 src:java 程式檔案 res: 資源 ( 文字 圖形 聲音檔案等 ) 與 UI 設定有關的 layout 檔 此目錄內檔案名稱只能為小寫字母 數字 _. gen:r.java 根據 res 目錄內容自動產生 不要去修改 R.java Android 中所有的資源檔案 ( 圖片 XML 等 ) 命名都必須使用英文小寫,

More information

FETnet - Acer Iconia Tab  (A500 Wi-Fi 版) 平板電腦操作指南

FETnet - Acer Iconia Tab  (A500 Wi-Fi 版) 平板電腦操作指南 Acer Iconia Tab (A500) 平板電腦操作指南 作業系統 :Android 3.0 / 網路頻段 :Wi-Fi 版暫不支援 :Exchange Server 信箱 ( 無法使用 Smart 助手 ) 及手寫輸入法 產品外觀安全保密功能設定數據功能 開關 PIN 碼 ( 暫無資料 ) 更改 PIN 碼 ( 暫無資料 ) 解除 PUK 碼 ( 暫無資料 ) 手機密碼鎖 手動選網 ( 暫無資料

More information

Microsoft Word - 11.doc

Microsoft Word - 11.doc 除 錯 技 巧 您 將 於 本 章 學 到 以 下 各 項 : 如 何 在 Visual C++ 2010 的 除 錯 工 具 控 制 下 執 行 程 式? 如 何 逐 步 地 執 行 程 式 的 敘 述? 如 何 監 看 或 改 變 程 式 中 的 變 數 值? 如 何 監 看 程 式 中 計 算 式 的 值? 何 謂 Call Stack? 何 謂 診 斷 器 (assertion)? 如 何

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

e01 1....5 1.1....5 1.1.1....5 1.1.2....6 1.1.3....8 1.1.4....9 1.1.5....11 1.1.6. /...16 1.1.7. /...19 1.1.8. /...21 1.1.9....24 1.1.10....24 1.1.11....28 1.1.12....36 1.1.13....45 1.1.14....48 1.1.15....50

More information

Microsoft PowerPoint - App與微控器整合.pptx

Microsoft PowerPoint - App與微控器整合.pptx 1 2 Outline APP 與微控器整合 2017 中山大學電機實驗營 App 開發環境 -Android Studio 介紹 App 開發 實驗營 App 流程 3 4 Android Studio 介紹 Android Studio 是一個為 Android 平台開發程式的整合式開發環境, 可供開發者免費使用, 並在 Windows OS X Linux 平台上均可執行 專案結構 一個專案下有

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

RecyclerView and CardVew

RecyclerView and CardVew RecyclerView and CardView 建國科技大學資管系饒瑞佶 2017/10 V1 CardView CardView A CardView is a ViewGroup. Like any other ViewGroup, it can be added to youractivity or Fragment using a layout XML file. To create an

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

建立Android新專案

建立Android新專案 經濟部工業局 Android 智慧型手機程式設計實務應用班 Android WebService 建國科技大學資管系 饒瑞佶 2012/4 WebService 需要 ksoap2-android-assembly-2.5.2-jar-withdependencies.jar 或 ksoap2-android-assembly-2.5.2-jar-withdependencies_timeout1.jar

More information

投影片 1

投影片 1 軟體說明書繁體中文 RGB A 目錄 - CONTENTS 01 09 15 17 22 軟體主介面 巨集設定說明 主介面概觀 個人設定檔 (Profiles) 一般模式 / 遊戲模式 按鍵功能分配 巨集管理器概觀 巨集管理器 巨集錄製設定 巨集錄製時間列表 插入指令 閃移系統 - I.S.S (Instant Shift System) 燈光設定更新韌體 閃移系統啟動鈕設定說明 燈光設定介面 介面區域一

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

第三篇 第 10 章 - 管理者登入第 11 章 - 更改網路商店 Logo 第 12 章 - 系統設定第 13 章 - 商品上架第 14 章 - 付款方式設定第 15 章 - 出貨方式設定第 16 章 - 特價商品 oscommerce 103

第三篇 第 10 章 - 管理者登入第 11 章 - 更改網路商店 Logo 第 12 章 - 系統設定第 13 章 - 商品上架第 14 章 - 付款方式設定第 15 章 - 出貨方式設定第 16 章 - 特價商品 oscommerce 103 第三篇 第 10 章 - 管理者登入第 11 章 - 更改網路商店 Logo 第 12 章 - 系統設定第 13 章 - 商品上架第 14 章 - 付款方式設定第 15 章 - 出貨方式設定第 16 章 - 特價商品 103 電子商務網站經營與管理 10-11 - Logo 12-13 - 14-15 - 16 - 一 情境描述 - 店主的心聲 1. 2. / 104 3. 第三篇網路商店新店開幕

More information

0511-Android程式之GPS應用_專題週記4

0511-Android程式之GPS應用_專題週記4 逢甲大學通訊工程學系專題研究 Android 程式之 GPS 應用 專題週記 0511 學生姓名 陳彥儒 D0035131 廖元譽 D0077791 指導老師 楊豐瑞老師繳交日期 2014.05.11 1 匯入 GoogleMap 1.1 取得授權步驟 目前進度 取得 Google 授權鑰匙 實作程式尚未成功 1.1.1 建立個人的 keystore 1.1.2 由個人的 keystore 查詢 SHA1

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

Microsoft Word - ACL 作者序

Microsoft Word - ACL 作者序 106 讓程式畫面更生動有趣的 ImageButton 和 ImageView 看完前面幾個單元, 不曉得讀者是不是覺得 Android App 專案好像有點複雜? 不僅專案中有許多不同功能的資料夾, 而且程式功能描述檔 AndroidManifest.xml 好像也不太簡單, 還有許多不同型態的資源, 像是字串 顏色 Selector 和 style 對於初學者來說, 剛開始學習 Android

More information

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp 01 1.6 Spyder Anaconda Spyder Python Spyder Python Spyder Spyder 1.6.1 Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Spyder Python File

More information

Microsoft PowerPoint - VB14.ppt

Microsoft PowerPoint - VB14.ppt VB 列表盒 LISTBOX 應用 資科系 林偉川 執行畫面 1 2 1 重要屬性 LISTBOX 物件 (VB6) 新增至 LISTBOX 物件中 ADDITEM 自 LISTBOX 物件中刪除選取物件 REMOVEITEM 自 LISTBOX 物件中取出選取物件 ListIndex 顯示 LISTBOX 物件中紀錄個數 Listcount 3 LISTBOX 物件 (VB.NET) 重要屬性 新增至

More information

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1 科 技 部 自 由 軟 體 專 案 原 始 程 式 碼 使 用 手 冊 Source Code Manual of NSC Open Source Project 可 信 賴 的 App 安 全 應 用 框 架 -App 應 用 服 務 可 移 轉 性 驗 證 Trusted App Framework -Transferability Verification on App MOST 102-2218-E-011-012

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

AutoCAD 用戶如何使用 ArchiCAD

AutoCAD 用戶如何使用 ArchiCAD AutoCAD 用戶如何使用 ArchiCAD AutoCAD用戶如何使用ArchiCAD ( 中文版 ) 由 Scott MacKenzie, Simon Gilbert, Geoffrey Moore Langdon, David Byrnes, Ralph Grabowski 編寫 龍庭資訊有限公司 1/73 - 2. 3. 4. -

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

! ios Swift ios Swift Swift Swift app app framework framework Apple Cocoa Touch 用 Swift 學習 Cocoa Touch framework Swift Swift 4

! ios Swift ios Swift Swift Swift app app framework framework Apple Cocoa Touch 用 Swift 學習 Cocoa Touch framework Swift Swift 4 ! ios Swift ios Swift Swift Swift app app framework framework Apple Cocoa Touch 用 Swift 學習 Cocoa Touch framework Swift Swift 4 http://www.secretlab.com.au/books/ learning-swift-3e Swift 4 Objective-C Swift

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

Microsoft Word - AEL Part08

Microsoft Word - AEL Part08 推薦序 黃文良教授 中央研究院資訊科學研究所 近年來由於 3G 網路普及, 硬體運算效能提升, 再加上各式應用軟體的靈活便利性, 智慧型手機漸漸取代傳統行動電話融入日常生活, 包括電子郵件 網頁瀏覽 影音播放 地圖查詢 拍照攝影, 各種功能隨手呈現即時互動帶來無比方便彈性 這種普遍需求現象也反映在許多手機品牌的亮麗銷售數據上 我們可以預期在通訊成本持續降低, 雲端運算逐步成熟, 網路早已無所不至的時代,

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

Microsoft PowerPoint - 05.Android 介面元件-RelativeLayout、Button、TextVeiw、EditText

Microsoft PowerPoint - 05.Android 介面元件-RelativeLayout、Button、TextVeiw、EditText 計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 介面元件 -RelativeLayout Button TextVeiw EditText 國立高雄大學資訊工程學系張保榮教授 大綱 RelativeLayout 版面配置 Button 版面配置 TextView

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

Microsoft Word - ACI chapter00-1ed.docx

Microsoft Word - ACI chapter00-1ed.docx 前言 Excel Excel - v - 財務管理與投資分析 -Excel 建模活用範例集 5 相關 平衡 敏感 - vi - 前言 模擬 If-Then 規劃 ERP BI - vii - 財務管理與投資分析 -Excel 建模活用範例集 ERP + BI + ERP BI Excel 88 Excel 1. Excel Excel 2. Excel 3. Excel - viii - 前言 1.

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

Photoshop CS3 影像創造力 基礎講堂 8 學習流程 學習重要性 學習難度 必學指令工具 實作應用範例 創造舞台燈光的漸層繪圖 延伸學習 雜訊與半透明漸層 8-1 Photoshop Photoshop 8 136

Photoshop CS3 影像創造力 基礎講堂 8 學習流程 學習重要性 學習難度 必學指令工具 實作應用範例 創造舞台燈光的漸層繪圖 延伸學習 雜訊與半透明漸層 8-1 Photoshop Photoshop 8 136 漸層填色與圖樣填色 08 8-1 漸層填色 8-2 漸層填色編輯 8-3 油漆桶填色 8-4 編輯圖樣 Photoshop CS3 影像創造力 基礎講堂 8 學習流程 學習重要性 學習難度 必學指令工具 8-1 8-2 8-3 8-4 實作應用範例 創造舞台燈光的漸層繪圖 延伸學習 雜訊與半透明漸層 8-1 Photoshop 8-1-1 Photoshop 8 136 漸層填色與圖樣填色 漸層填色

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

40/60 AM Cardio 40/60 ... 4 Cardio 40/60... 4... 5... 5 :... 5... 5... 6 : Cardio 40/60... 6 / (Cardio 40)... 6 / (Cardio 60)... 6 :... 6 : GPS... 7 : Brytonsport.com... 8... 9 :... 9 GPS... 10... 11

More information

Microsoft Word - CMU200 WCDMA 手機測試步驟.doc

Microsoft Word - CMU200 WCDMA 手機測試步驟.doc 所有測試基於 3GPP TS34.121 CMU200 WCDMA 手機測試步驟 CMU200 測試前的設置 1. 按 Reset 鍵初始化 CMU200 2. 按 Menu Select 鍵, 選擇 WCDMA FDD Signaling 3. 按 BS Signal 軟鍵 ( 螢幕下部 X 軸 ), 進入 Node-B Settings, 選擇 Level Reference, 設置 Output

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

Microsoft PowerPoint _cp02_設定 R 與 RStudio.pptx

Microsoft PowerPoint _cp02_設定 R 與 RStudio.pptx 105-1: EE4052 計算機程式設計 Computer Programming 連豊力 臺大電機系 Sep 2016 - Jan 2017 大綱 R 的故事 安裝軟體 : R 軟體 The R Project for Statistical Computing https://www.r-project.org/ RStudio 軟體 RStudio https://www.rstudio.com/

More information

投影片 1

投影片 1 計算機程式及實習 期末報告 題目 : 六宿炒翻天 班級 : 奈米一乙姓名 : 陳洋翼學號 :4A514050 老師 : 謝慶存 程式說明 設計結帳系統, 選擇數量後, 在按下計算, 將會顯示總金額 若是老人或小孩, 將可享 8 折或 9 折的優惠 程式畫面 填選數量 在火腿蛋炒飯的數量選擇 1, 並按下計算, 可得總金額 50 元 程式畫面 打折 填選完後, 若客人是小孩或老人, 選擇欲打折項目,

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

目次 

目次  軟 體 工 程 期 末 報 告 網 路 麻 將 91703014 資 科 三 黃 偉 嘉 91703024 資 科 三 丘 祐 瑋 91703030 資 科 三 江 致 廣 1 目 次 壹 前 言 (Preface) P.4 貳 計 畫 簡 述 及 預 期 效 益 (Project Description and Expected Results) P.4 參 系 統 開 發 需 求 (System

More information

投影片 1

投影片 1 數位相片基礎編修 Photoshop,,,, 2 ,, 3 / 4 3-1,...,, Photoshop,,, 5 5 6 ,,..., 5,,, 7 3-2,...,,, 8 , Photoshop,,, / 9 10 ,,,,,, 03-02.jpg,,,,, Photoshop " ", Photoshop 11 12 / /, Photoshop, 13 14 ,,, " " " " 6

More information

Chapter 1: Introduction

Chapter 1: Introduction 目錄 目錄 IX Part 1 擁抱 Android 單元 01 Android 造時勢或是時勢造 Android... 2 Android 從何而來... 3 Android 的功能 應用和商機... 5 先睹為快 - Android 手機和平板電腦模擬器... 7 單元 02 安裝 Android 程式開發工具... 10 不同作業系統的開發工具版本...10 安裝 Android 程式開發工具的步驟...12

More information

JBuilder Weblogic

JBuilder Weblogic JUnit ( bliu76@yeah.net) < >6 JUnit Java Erich Gamma Kent Beck JUnit JUnit 1 JUnit 1.1 JUnit JUnit java XUnit JUnit 1.2 JUnit JUnit Erich Gamma Kent Beck Erich Gamma Kent Beck XP Extreme Programming CRC

More information

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog 計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 介面元件 -TableLayout Toast AlertDialog 國立高雄大學資訊工程學系張保榮教授 大綱 TableLayout 版面配置 Toast 版面配置 AlertDialog 版面配置 TableLayout

More information

封面-12

封面-12 第十二章 701Client TECHNOLOGY CO.,LTD. 701Client 701Server 701Client "701Client", 12-1 :supervisor :supervisor : 1. : 00~99 100 2. : 00~63 ( 63 / / ) 3. : 18 9 4. : 18 9 5. 12-2 TECHNOLOGY CO.,LTD. 701Client

More information

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE Project Properties IDE makefile 1. Oracle Solaris Studio 12.2 IDE 2010 9 2 8 9 10 11 13 20 26 28 30 32 33 Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1. "File" > "New

More information

<A4E2BEF7B4FAB8D5B3F8A F52322E786C7378>

<A4E2BEF7B4FAB8D5B3F8A F52322E786C7378> 製表日期 : 2008 年 9 月 17 日 Mobile Java Applet 手機安裝測試報告表 已完成測試機型數量 :317 台 ; 無問題 ( 可安裝 / 可執行 ) 機型 :315 台無法使用 :2 台 ; 特殊註記機型 :2 台 廠牌 機型 測試狀況 OK 不 OK 安裝資料夾 ( 目錄 ) 備註 NOKIA N95 應用程式 NOKIA 6110 應用程式 NOKIA 3120 應用程式

More information

ShareText

ShareText 作者 : 林致宇 日期 :2012/1/23 問題 : 如何分享分享文字資訊給其它的應用程式? 解答 : 有時候我們可能會希望 我們的應用程式的資訊 能夠讓使用者分享出去, 讓使用者能夠將此資訊傳送簡訊給其好友或寄電子郵件的方式寄給其好友, 這份文件將示範如何寫出這樣的應用程式 本文件將產出兩個 App, 第一個 App 是 分享資料的來源, 名為 CopyPaste_Source, 功能非常簡單,

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

使用手冊

使用手冊 使用手冊 版權所有 2013 年 Microtek International, Inc. 保留所有權利 商標 Microtek MII MiiNDT ScanWizard Microtek International, Inc. Windows Microsoft Corporation 重要須知 Microtek Microtek Windows Microsoft Windows I49-004528

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M ASP.NET MVC Visual Studio 2017 1 1-4 MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\MvcExamples firstmvc MVC 1-7 ASP.NET MVC 1-9 ASP.NET

More information

Android + NFC

Android + NFC Android + NFC 建國科技大學資管系饒瑞佶 2017/3 v1 讀取 Tag UUID Android 2.3.3 (API Level 10) 才有支援完整的 NFC 功能 只要 NFC 相容都讀的到 (NFC 或 Mifare) 建立新專案修改 AndroidManifest.xml 加入 , 如果有 NFC Tag 進入感測範圍, 本 App 也會變成可處理的

More information

Microsoft PowerPoint - plan06.ppt

Microsoft PowerPoint - plan06.ppt 程 序 设 计 语 言 原 理 Principle of Programming Languages 裘 宗 燕 北 京 大 学 数 学 学 院 2012.2~2012.6 6. 基 本 控 制 抽 象 子 程 序 抽 象 子 程 序 活 动 和 局 部 环 境 静 态 实 现 模 型 一 般 实 现 模 型 调 用 序 列 和 在 线 展 开 参 数 机 制 泛 型 子 程 序 异 常 处 理 其

More information

Database_001

Database_001 作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的

More information

Microsoft Word - AEL 推薦序黃文良

Microsoft Word - AEL 推薦序黃文良 推薦序 黃文良教授 中央研究院資訊科學研究所 近年來由於 3G 網路普及, 硬體運算效能提升, 再加上各式應用軟體的靈活便利性, 智慧型手機漸漸取代傳統行動電話融入日常生活, 包括電子郵件 網頁瀏覽 影音播放 地圖查詢 拍照攝影, 各種功能隨手呈現即時互動帶來無比方便彈性 這種普遍需求現象也反映在許多手機品牌的亮麗銷售數據上 我們可以預期在通訊成本持續降低, 雲端運算逐步成熟, 網路早已無所不至的時代,

More information

( )... 5 ( ) ( )

( )... 5 ( ) ( ) 2016 大學校院招收大陸地區學生聯合招生委員會 71005 臺南市永康區南臺街 1 號 E-mail:rusen@stust.edu.tw WEB:http://rusen.stust.edu.tw TEL:+886-6-2435163 FAX:+886-6-2435165 2 0 1 6 0 1 1 9 2016... 2... 3... 5 ( )... 5 ( )... 5 1... 6 2...

More information

1. 2. Flex Adobe 3.

1. 2. Flex Adobe 3. 1. 2. Flex Adobe 3. Flex Adobe Flex Flex Web Flex Flex Flex Adobe Flash Player 9 /rich Internet applications/ria Flex 1. 2. 3. 4. 5. 6. SWF Flash Player Flex 1. Flex framework Adobe Flex 2 framework RIA

More information

Oxford iSolution下載及安裝指南

Oxford iSolution下載及安裝指南 Oxford isolution 下載及安裝指南 Download and Installation Guide 系統要求 System Requirements... 2 Oxford isolution 安裝步驟 Windows 個人電腦 Oxford isolution Installation Steps For Windows PCs... 3 Oxford isolution 安裝步驟

More information