1、1,App Inventor 2上課大綱,行動商務與多媒體應用學系詹啟祥辦公室:HB35室 分機:20035E-mail: CSChanasia.edu.tw,2,課程概要,第九章、函數與資料庫 - 介紹函數與手機內資料庫的使用方法 - TinyDB 元件第十章、遠端資料庫 - 介紹遠端資料庫的設定與使用方式 - FirebaseDB元件第十一章、繪圖與動畫 - 介紹在畫布上進行繪圖與移動動畫 - Canvas元件與ImageSprite元件第十二章、加速感測器與聲音播放 - 介紹加速感測器與聲音播放器 - 利用加速感測器元件控制聲音播放第十三章、位置感測器與Google Maps - 學習位
2、置感測器元件與 - Google Maps的使用第十四章、藍芽通訊 - 介紹如何利用藍芽進行通訊 - BluetoothClient元件,第十五章、arduino自走車 - 介紹如何利用AI2控制 arduino自走車 - 控制arduino自走車的相關元件第十六章、機器人控制 - 如何利用AI2控制機器人 - 控制機器人的相關元件,3,第九章、函數與資料庫,函數與資料庫(TinyDB) -介紹函數與手機內 資料庫的使用方法,4,1.函數與資料庫-範例說明,1.依序輸入123、567後,按下 “送出輸入”按鈕,會將結果存入資料庫,並顯示於ListView,如下所示:,2.當要刪除第一個資料(1
3、23)時,輸入資料位置1 ,而後按下 “送出刪除”按鈕 ,結果如下,5,1.函數與資料庫- 範例:介面設計,介面是以“列表顯示框(ListView)”來顯示資料,而資料則是儲存到手機內,利用“微資料庫(TinyDB)”的元件來儲存。,6,1.函數與資料庫 - 介紹如何使用數據庫(DB),要使用資料庫(TinyDB),需要用到1.儲存元件(StoreValue):將資料儲存到數據庫2.取得元件(GetValue):讀取數據庫裡的資料,7,1.函數與資料庫 - 介紹如何使用數據庫(DB),StoreValue是將資料儲存到數據庫,替儲存資料設定自定義的字串名稱,此即為TAG標籤,取得元件(GetV
4、alue)可利用此TAG標籤存取資料。,valueToStore為儲存資料;,GetValue是讀取數據庫裡的資料,利用TAG標籤,讀取特定資料,當利用TAG標籤抓取資料時,資料庫內並沒有存在相關資料,則此狀況下將會回傳valueifTagNotThere內的字串。一般情況下會放空字串,8,1.函數與資料庫 - 範例:程式拼塊(新增資料按鈕),程式方塊一開始,必須建立一個全域List變數Event_DB來存資料,此變數用以記錄資料庫內的資料。(由於TinyDB只具有資料的儲存與讀取,無法對資料庫內資料進行搜尋或修改,因此我們會將資料庫的資料取出後存入Event_DB這個變數中,以便進行搜尋或修
5、改。當Event_DB 變數內資料有任何更動時,必須同步寫回資料庫中。),接著,當新增資料按鈕(Button1)被按下時,必須將使用者輸入的資料存入資料庫,並同步將更新顯示於ListView中,詳細的程式區塊如下所示:,9,1.函數與資料庫 - 範例:程式拼塊(新增資料按鈕),2.為了讓變數Event_DB內的資料與資料庫內的資料一致,將Event_DB存入資料庫中,並將此資料的標籤命名為“Event_Book”,讓後續讀取資料庫時,可以利用此標籤存取相對應的資料。,3.為了將更新結果同步顯示在ListView,將變數Event_DB內的資料指定給ListView,讓變數Event_DB內的資
6、料當成元件項目(Elements) 。,新增資料按鈕(Button1)的程式細部講解:1.儲存按鈕被按,代表要將輸入的資料存入資料庫中,所以直接讀取TextBox1輸入的資料,加入到變數Event_DB中。,10,1.函數與資料庫 - 範例:程式拼塊(刪除資料按鈕),當刪除資料按鈕(Button2)被按下時,要將使用者指定要刪除的資料自資料庫中刪除,並同步將更新顯示於ListView中,詳細的程式區塊如下所示:,11,1.函數與資料庫 - 範例:程式拼塊(刪除資料按鈕),3.為了讓變數Event_DB內的資料與資料庫內的資料一致,將Event_DB存入資料庫中,並將此資料的標籤命名為“Even
7、t_Book”,讓後續讀取資料庫時,可以利用此標籤存取相對應的資料。,4.為了將更新結果同步顯示在ListView,將變數Event_DB內的資料指定給ListView,刪除資料按鈕(Button2)的程式細部講解:1.刪除資料按鈕被按,首先要先判斷使用者要刪除的資料是否存在(要刪除位置是否小於或等於變數Event_DB的長度) 。 EX:如果如果資料有5筆,使用者輸入6要刪除第六筆,則會產生錯誤。,2.如果if條件符合了,則進行資料的刪除,首先先針對變數Event_DB內的資料進行刪除,使用(remove list item)元件。,要修改的資料存於列表變數Event_DB,Index則是要
8、刪除的數據是列表中第幾項,12,1.函數與資料庫 -範例:程式拼塊(Procedures函式),研究上述的Button1和Button2 ,可以發現兩個區塊的程式碼,有部分是一模一樣,也就是儲存數據庫並設置ListView元素的動作,針對相同的程式碼的部分,在AI2中有提供“Procedures函式”,只需要將相同的程式碼寫到Procedures函式內,其他程式碼就可以叫用此程式。,13,1.首先,先拉出一個函式方塊。,2.接著,對函式命名(如下列紅色框框) ,並且將Button1和Button2 重複的程式方塊放到函式內。,3.最後,只要在Button1和Button2中叫用函式,就可以達到
9、和之前一樣的效果,有效的簡化方塊的複雜度。,1.函數與資料庫 -範例:程式拼塊(Procedures函式),14,1.函數與資料庫 - 範例:程式拼塊(資料庫的讀取),本範例資料庫的讀取時機,為此手機App開啟時,從資料庫中讀取之前的資料。若要讓手機App開啟時,便執行某些程式區塊,則必須將這些程式區塊,放入Screen1的初始化區塊中,,本範例中,需資料庫中讀取資料到變數Event_DB中,並同步顯示資料於ListView。,15,1.函數與資料庫 - 範例:程式拼塊(初始化)何謂初始化,2.判斷後,若有相對應的資料存在,則將從資料庫讀取的資料放入到全域變數Event_DB中,如此可以在開啟
10、APP時時,載入上次的資料,3.將變數Event_DB內的資料指定給ListView,Screen1的初始化區塊的程式細部講解:1.首先,先判斷資料庫內是否存在相對應的資料。若沒有此判斷,第一次開啟時,程式碼會將空字串加入到變數Event_DB中,導致後續使用產生錯誤。,2.函數與資料庫- TinyDB說明,TinyDB在儲存資料之外,他還有其他的語法指令:,1. ClearAll : 刪除所有TinyDB內的資料。,2. ClearTag : 刪除TinyDB的指定標籤。,標籤必須是字串,在執行刪除標籤的方塊之後,代表之前這個標籤所儲存的資料也都一併刪除。,3. GetTags : 取得現在
11、TinyDB的標籤。,2. ListView 清單檢視元件- 說明,ElementsFromString: 建立一個清單,元素是由逗號隔開的文字元素所組成。EX: Chinese,English,Math,SelectionIndex: 使用者所選擇項目的索引號碼,從1開始,如果都沒有選擇,則會顯示預設值0。,Visible: 此為調整ListView是否可見,需要設置為true(真)才看的到。,AfterPicking: 在使用者選擇清單中選項後,會觸發此方塊的事件。,3.函數與資料庫 -進階練習範例,18,1.依序輸入56、dda到記事本中,2.點擊56進入到此畫面中並將56修改為589,3.修改過後為下圖所示,