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

下載本文檔

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

文檔簡介

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

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

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

4、啟動計時器;如果失敗,則不啟動計時器。圖5 進行連接【3】斷開連接圖6 斷開連接四、發(fā)送消息【1】全局變量“聊天內(nèi)容”與自定義過程“拼字符串”:以適當(dāng)?shù)姆绞絹沓尸F(xiàn)聊天記錄,即,為聊天內(nèi)容添加換行符,并表明發(fā)言者身份。圖7 對聊天內(nèi)容的記錄與組織【2】發(fā)送一條消息圖8 角色不同使用不同藍牙組件來發(fā)送消息五、接收消息圖9 不同角色使用不同藍牙組件來接收消息六、清空聊天記錄圖10 清空聊天記錄實驗結(jié)果:實驗感想:我們的APP仍然需要改進,比如接收消息可以加上語音提示,添加聊天記錄保存功能,添加共享音頻圖片文件功能,這個小APP距離微信這些聊天工具還有很大的上升空間。通過此次實驗,我們了解了藍牙客戶端

5、服務(wù)器計時器等非可視組件的相關(guān)功能,對兩個角色的切換有了更深刻的認識,雖然程序是參照網(wǎng)上的例程,但是收獲良多,希望以后有更多這樣的機會。木琴實驗?zāi)康氖褂脝我坏穆曇艚M件來播放不同的音頻文件,使用Clock組件來計算并實現(xiàn)兩個音符之間的延遲,在創(chuàng)建一個過程時做判斷,創(chuàng)建能夠自我調(diào)節(jié)的過程;學(xué)習(xí)列表的高級應(yīng)用,包括添加、刪除及讀取項。如圖,這個應(yīng)用可以做到:1.通過觸摸屏幕上的彩色按鈕播放八個不同的音符;2.按“播放”按鈕,回放之前彈奏的音符;3.按“重置”按鈕清除 之前彈過的音符,以便輸入新曲。圖1 木琴的用戶界面實驗過程一、設(shè)計組件創(chuàng)建鍵盤用戶界面中包含了低音C到高音C的打掉五聲(七音符) 音階

6、的八個音符鍵盤,本節(jié)將創(chuàng)建這樣的音樂鍵盤。首先創(chuàng)建前八個木琴鍵,用按扭來實現(xiàn),設(shè)置Text屬性,Width屬性,Hight屬性,BackgroundColor屬性,使其效果如圖2,圖2 組件設(shè)計添加Sound組件我們要彈奏美妙的音符,就需要創(chuàng)建一個聲音組件,設(shè)置最小間隔屬性為0,這個不要忘記咯,是為了彈奏要多快有多快,我已開始沒有設(shè),默認值是半秒鐘,就會有很大延遲。下載1.wav到8.wav,并加載到項目。聲音與按鈕的連接Button1被點擊時,播放1.wav,切換到編輯塊,這時候如果能有一個調(diào)用的過程會更加方便,然后當(dāng)每一個按鈕被點擊是,就調(diào)用過程,播放對應(yīng)的音頻。則進行如下設(shè)置圖3 創(chuàng)建過

7、程來演奏僅僅這樣在測試時會失望,第一次按鍵時會出現(xiàn)錯誤。因為系統(tǒng)是在程序運行后才加載聲音,這個過程需要時間。所以我們需要在程序啟動時立刻加載聲音。圖4 應(yīng)用啟動時加載聲音經(jīng)過這些步驟我們就可以彈奏出一些簡單的曲子了!記錄并回放音符為了實現(xiàn)回放功能,需要記錄彈奏的音符并加以保存。除了要記錄彈奏的音高(聲音文件),還要記錄兩個音符之間的時間長度。我們需要維護兩個列表,每彈奏一個音符,兩個列表中都會各自添加一條記錄:notes:包含與演奏的音符相對應(yīng)的聲音文件名,按照演奏順序排列;times:記錄音符演奏時的時間點。我們可以從Clock組件中得到計時信息,因此也可以用來正確地設(shè)定音符的回放速度。添加

8、組件在設(shè)計器中添加一個Clock組件及“播放”和“重置”按鈕,按鈕放在HorizontalArrangement中。記錄音符及時間回到塊編輯器中,為組件添加正確的行為。我們需要維護兩個列表:notes與times,每次用戶按下一個按鈕,就向列表中添加一項:1. 從Variables抽屜中拖出一個initialize global name to塊來定義一個新的變量;2. 單擊“name”將變量命名為“notes”;3. 打開Lists抽屜,拖動一個make a list塊,將其放置在變量notes的插槽中;這樣就定義了一個名為“notes”的空列表。重復(fù)上述步驟定義另一個變量,命名為“time

9、s”。塊的樣子圖5 創(chuàng)建列表塊的功能每演奏一個音符,需要保存兩項數(shù)據(jù):聲音文件名(保存到notes列表),以及演奏瞬間的時刻(保存到times列表)。用Clock1.Now塊來記錄時刻,它返回當(dāng)前時刻的時間值(例如,2011年3月12日上午8時33分14秒),精確到毫秒。這些數(shù)據(jù)可以通過Sound1.Source和Clock1.Now塊獲得,將分別被添加到notes及times列表中,如圖5所示。圖 6 將演奏聲音添加到列表中當(dāng)用戶按下“重置”按鈕時,我們希望清空這兩個列表。由于用戶看不到清空帶來的任何變化,因此添加一個Sound1.Vibrate塊,通過振動來告知用戶按鍵生效了,這種設(shè)置對用

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

11、e:1. 在第一次調(diào)用PlayBackNote時,count= 1:Sound1.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)用Play

12、BackNote時,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)木琴彈奏,回放,重置的功能。改進下面是一些可供探討的備選方案:目前,在回放過程中,沒有對用戶點擊ResetButton做任何限制,這將導(dǎo)致程序的崩潰(錯誤提示:select list item: Attempt to get item number 4 of a list of len

13、gh 0。)修改PlayButton.Click,讓ResetButton在回放期間禁用,回放完成后再重新啟用。將PlayBackNote中的if塊改為ifelse塊,并在“else”中重新啟用ResetButton。類似問題也發(fā)生在PlayButton上,用戶可以在回放過程中再次點擊該按鈕。(想象一下會發(fā)生什么。) 在PlayButton.Click中禁用PlayButton,并將其Text屬性改為“播放中. ”,并像ResetButton一樣,在PlayBackNote的ifelse塊中重新啟用該按鈕,并重置Text屬性。實驗感想編寫一個能自我調(diào)用的過程不僅是可能的,有時也是必要的。這種強大的技術(shù)稱為遞歸。在編寫遞歸過程時,一定要確保為程序的退出設(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論