appinventor軟件開發(fā)文檔_第1頁
appinventor軟件開發(fā)文檔_第2頁
appinventor軟件開發(fā)文檔_第3頁
appinventor軟件開發(fā)文檔_第4頁
appinventor軟件開發(fā)文檔_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、浙 江 師 范 大 學(xué)本科生課程論文封面課程名稱:Android手機(jī)程序開發(fā)論文名稱:軟件開發(fā)文檔學(xué) 院數(shù)理與信息工程學(xué)院專業(yè) 通信工程學(xué)號 14900110姓名王曉潔任課教師熊繼平成績評閱教師簽名浙江師范大學(xué)數(shù)理信息學(xué)院基于加速度傳感器的計步而實驗?zāi)康模豪眉铀俣葌鞲衅鲗崿F(xiàn)計步器的功能。實驗過程一、組件設(shè)計圖1界面設(shè)計二、相關(guān)代碼【1】全局變量“step ”用來記錄行走步數(shù)?!?】定義過程將標(biāo)簽1的文本設(shè)置為步數(shù)值?!?】核心算法當(dāng)加速度傳感器被晃動時,step加1.并且調(diào)用過程。最后有一個清除步數(shù)的功能。實驗感想第一次接觸這樣拼圖類的代碼編寫方法,感覺很有趣,適合青少年起步學(xué)習(xí),不 枯燥。

2、這個APP雖然功能簡單,但是要做到精確計步卻不容易。 在算法上有很大 需要改進(jìn)?;谒{(lán)牙的手機(jī)通信軟件實驗?zāi)康模焊鶕?jù)App Inventor 2 提供的兩個藍(lán)牙通信組件:藍(lán)牙客戶端、藍(lán)牙服務(wù)器,將這兩個組件配合使用,實現(xiàn)簡單的即時通信功能。實驗過程:一、組件設(shè)置圖1界面設(shè)計二、與藍(lán)牙服務(wù)器相關(guān)的代碼【1】全局變量“角色”用來表明當(dāng)前設(shè)備在通信中的角色:服務(wù)器或客戶端?!?】“在線”設(shè)置如圖2所示,當(dāng)選中“在線”復(fù)選框時,表明本設(shè)備現(xiàn)在充當(dāng)服務(wù)器 的角色,可以接受來自其他設(shè)備的連接請求。一旦該設(shè)備成為服務(wù)器,“選擇列表”及“斷開連接”組件將不可用。圖2修改藍(lán)牙設(shè)備的角色【3】接收連接事件當(dāng)藍(lán)牙服

3、務(wù)器收到連接請求時,將觸發(fā)該事件。如果連接成功,即連 接狀態(tài)值為真,則向所連接的設(shè)備發(fā)送“已連接到服務(wù)器,可以開始 聊天了 . ”,并開始啟用計時器,隨時監(jiān)聽客戶端發(fā)來的消息;如果 連接不成功,則不啟用計時器。如圖 3所示。圖3藍(lán)牙服務(wù)器“接收連接”事件處理程序三、與藍(lán)牙客戶端相關(guān)的代碼【1】當(dāng)“選擇列表”準(zhǔn)備選擇時當(dāng)用戶點擊“選擇列表”時,將打開一個列表,里面列出了所有已配對的藍(lán)牙設(shè)備,用戶可以選擇其一進(jìn)行連接。圖4準(zhǔn)備連接【2】當(dāng)“選擇列表”完成選擇時當(dāng)用戶選擇了 一個藍(lán)牙設(shè)備,意味著用戶向所選設(shè)備發(fā)出了連接請求, “讓藍(lán)牙客戶端連接設(shè)備”的結(jié)果可能是真(連接成功),也可能是 假(連接失敗

4、)。如果成功,則設(shè)全局變量“角色”值為“客戶端” 并啟動計時器;如果失敗,則不啟動計時器。執(zhí)行t如果e讓貂環(huán)一。連接設(shè)備 參數(shù):地址,霹冢則,浚fengw.占為77 “西言設(shè)崎溟鰻皿 的時費際為 : “ 3部廁航衛(wèi)加 設(shè)用a繇0的一脆加1為市a否則 設(shè) 陪閉卻1 的蝸痂注為 “ 婢與海利度重逢“賓,疏的胸:能電1為申函圖5進(jìn)行連接【3】斷開連接斷開己連接設(shè)備圖6斷開連接四、發(fā)送消息【1】全局變量“聊天內(nèi)容”與自定義過程“拼字符串”:以適當(dāng)?shù)姆?式來呈現(xiàn)聊天記錄,即,為聊天內(nèi)容添加換行符,并表明發(fā)言者身份。圖7對聊天內(nèi)容的記錄與組織【2】發(fā)送一條消息圖8角色不同使用不同藍(lán)牙組件來發(fā)送消息五、接收

5、消息圖9不同角色使用不同藍(lán)牙組件來接收消息六、清空聊天記錄 圖10清空聊天記錄實驗結(jié)果:實驗感想:我們的APP仍然需要改進(jìn),比如接收消息可以加上語音提示, 添 加聊天記錄保存功能,添加共享音頻圖片文件功能,這個小APP距離 微信這些聊天工具還有很大的上升空間。通過此次實驗,我們了解了藍(lán)牙客戶端服務(wù)器計時器等非可視組件的相關(guān)功能,對兩個角色的切換有了更深刻的認(rèn)識, 雖然程序是參 照網(wǎng)上的例程,但是收獲良多,希望以后有更多這樣的機(jī)會。木琴實驗?zāi)康氖褂脝我坏穆曇艚M件來播放不同的音頻文件,使用Clock組件來計算并實現(xiàn)兩個音符之間的延遲, 在創(chuàng)建一個過程時做判斷,創(chuàng)建能 夠自我調(diào)節(jié)的過程;學(xué)習(xí)列表的高

6、級應(yīng)用,包括添加、刪除及讀取項。 如圖,這個應(yīng)用可以做到:1 .通過觸摸屏幕上的彩色按鈕播放八個不同的音符;2 .按“播放”按鈕,回放之前彈奏的音符;3 .按“重置”按鈕清除 之前彈過的音符,以便輸入新曲。圖1木琴的用戶界面實驗過程一、設(shè)計組件創(chuàng)建鍵盤用戶界面中包含了低音C到高音C的打掉五聲(七音符)音階 的八個音符鍵盤,本節(jié)將創(chuàng)建這樣的音樂鍵盤。首先創(chuàng)建前八個木琴鍵,用按扭來實現(xiàn),設(shè)置 Text屬性,Width屬性,Hight屬性,BackgroundColor屬性,使其效果如圖2,圖2組件設(shè)計添加Sound組件我們要彈奏美妙的音符,就需要創(chuàng)建一個聲音組件,設(shè)置最小間隔屬性為0,這個不要忘記

7、咯,是為了彈奏要多快有多快,我已開始沒有設(shè),默認(rèn)值是半秒鐘,就會有很大延遲。下載1.wav到8.wav,并加載到項目。聲音與按鈕的連接Button1被點擊時,播放1.wav,切換到編輯塊,這時候如果能有一 個調(diào)用的過程會更加方便,然后當(dāng)每一個按鈕被點擊是,就調(diào)用過程, 播放對應(yīng)的音頻。則進(jìn)行如下設(shè)置圖3創(chuàng)建過程來演奏僅僅這樣在測試時會失望,第一次按鍵時會出現(xiàn)錯誤。因為系統(tǒng)是在 程序運行后才加載聲音,這個過程需要時間。所以我們需要在程序啟 動時立刻加載聲音。圖4應(yīng)用啟動時加載聲音經(jīng)過這些步驟我們就可以彈奏出一些簡單的曲子了!記錄并回放音符為了實現(xiàn)回放功能,需要記錄彈奏的音符并加以保存。 除了要記

8、錄彈 奏的音高(聲音文件),還要記錄兩個音符之間的時間長度。我們需要維護(hù)兩個列表,每彈奏一個音符,兩個列表中都會各自添加一條記錄:notes :包含與演奏的音符相對應(yīng)的聲音文件名,按照演奏順序排列; times :記錄音符演奏時的時間點。我們可以從Clock組件中得到計時信息,因此也可以用來正確地設(shè)定 音符的回放速度。添加組件在設(shè)計器中添加一個Clock組件及“播放”和“重置”按鈕,按鈕放在 HorizontalArrangement 中。記錄音符及時間回到塊編輯器中,為組件添加正確的行為。我們需要維護(hù)兩個列表:notes與times ,每次用戶按下一個按鈕,就向列表中添加一項:1 .從 Va

9、riables 抽屜中拖出一個 initialize global name to 塊來 定義一個新的變量;2 .單擊“namS將變量命名為“notes”;3 .打開Lists 抽屜,拖動一個 makea list 塊,將其放置在變量notes 的插梢中;這樣就定義了一個名為“ notes”的空列表。重復(fù)上述步驟定義另一個變量,命名為“times。塊的樣子圖5創(chuàng)建列表塊的功能每演奏一個音符,需要保存兩項數(shù)據(jù):聲音文件名(保存到notes列表),以及演奏瞬間的時刻(保存到times列表)。用Clock1.Now塊來記錄時刻,它返回當(dāng)前時刻的時間值(例如,2011年3月12日上午8時33分14秒)

10、,精確到毫秒。這些數(shù)據(jù)可以通過 Soundl.Source和Clockl.Now塊獲得,將分別被添加到notes及times列表中,如圖5所示。I定義過程P1aynotenuitber執(zhí)行語句逐曰0 . 痂為 5臺并文本 取而那加列表項列表取global notesninntierNitem.2添加列表項列表 itemglobal tlm.es調(diào)用朝眼芹0 .求當(dāng)前時間圖6將演奏聲音添加到列表中當(dāng)用戶按下“重置”按鈕時,我們希望清空這兩個列表。由于用戶看不到清空帶來的任何變化,因此添加一個Sound1.Vibrate塊,通過振動來告知用戶按鍵生效了,這種設(shè) 置對用戶來說是非常友好的。圖 9-1

11、2顯示了這一功能用到的塊。圖9-12 為用戶的“重置”操作提供反饋音符的回放 作為一個思想實驗,先來考慮如何實現(xiàn)音符的回放,而暫時忽略回放速度。我們可以(但不會)通過創(chuàng)建 圖9-13中的那塊來實現(xiàn)這個暫時的目標(biāo):塊的功能這是計算機(jī)科學(xué)中一個非常重要的概念:強(qiáng)大的遞歸為了更好地了解遞歸的工作原理,我們來一步一步地探究,當(dāng)用戶演奏了三個音符(1.wav、3.wav和6.wav),然后按下“播放”按鈕 時,都發(fā)生了什么。PlayButton.Click首先判斷列表中是否保存了音符:由于notes列表長度30,列表不空,因此設(shè)定count等于1,并調(diào) 用 PlayBackNote :1 .在第一次調(diào)用

12、 PlayBackNote 時,count= 1 :Soundl.Source被設(shè)置為在notes中的第1項,即1.wav;調(diào)用 Sound1.Play,播放 1.wav;由于count值(1)小于notes的長度(3),因此count遞增為2, 并再次調(diào)用PlayBackNote ;2 .第二次調(diào)用 PlayBackNote 時,count=2 :Sound1.Source被設(shè)置為notes中的第2項,即3.wav;調(diào)用 Sound1.Play,播放 3.wav;由于count (2)小于notes的長度(3),因此count遞增為3,并再 次調(diào)用 PlayBackNote;3 .第三次調(diào)用

13、 PlayBackNote 時,count=3 :App Inventor 編程實例及指南本文檔使用 看云 構(gòu)建-154 -Sound1.Source被設(shè)置為notes中的第3項,即6.wav;調(diào)用 Sound1.Play,播放 6.wav;由于count (3)不小于notes的長度(3),因此跳出if塊,回放結(jié) 束。實驗結(jié)果實現(xiàn)木琴彈奏,回放,重置的功能。改進(jìn)下面是一些可供探討的備選方案:目前,在回放過程中,沒有對用戶點擊ResetButton做任何限制, 這將導(dǎo)致程序的崩潰(錯誤提示:select list item: Attempt to getitem number 4 of a l

14、ist of lengh 0。)修改 PlayButton.Click ,讓ResetButton在回放期間禁用,回放完成后再重新啟用。將 PlayBackNote中的if塊改為ifelse 塊,并在“ else”中重新啟用 ResetButton。類似問題也發(fā)生在PlayButton上,用戶可以在回放過程中再次 點擊該按鈕。(想象一下會發(fā)生什么。)在PlayButton.Click 中禁用 PlayButton ,并將其Text屬性改為“播放中”,并像ResetButton 一樣,在PlayBackNote的ifelse 塊中重新啟用該按鈕, 并重置Text屬性。實驗感想編寫一個能自我調(diào)用的過程不僅是可能的,有時也是必要的。這種強(qiáng)大的技術(shù)稱為遞歸。在編寫遞歸過程時,一定要確保為程序的退 出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論