
appinventor软件开发文档.doc
7页师大学本科生课程论文封面课程名称:Android 程序开发论文名称:"软件开发文档"学院数理与信息工程学院专业通信工程**14900110王晓洁任课教师熊继平成绩评阅教师签名师大学数理信息学院基于加速度传感器的计步器实验目的:利用加速度传感器实现计步器的功能实验过程一、组件设计图1界面设计二、相关代码【1】全局变量“step〞用来记录行走步数2】定义过程将标签1的文本设置为步数值3】核心算法当加速度传感器被晃动时,step加1.并且调用过程最后有一个去除步数的功能实验感想第一次接触这样拼图类的代码编写方法,感觉很有趣,适合青少年起步学习,不枯燥这个APP虽然功能简单,但是要做到准确计步却不容易在算法上有很大需要改良基于蓝牙的通信软件实验目的:根据App Inventor 2提供的两个蓝牙通信组件:蓝牙客户端、蓝牙效劳器,将这两个组件配合使用,实现简单的即时通信功能实验过程:一、组件设置图1 界面设计二、与蓝牙效劳器相关的代码【1】全局变量“角色〞用来说明当前设备在通信中的角色:效劳器或客户端2】“〞设置如图2所示,中选中“〞复选框时,说明本设备现在充当效劳器的角色,可以承受来自其他设备的连接请求。
一旦该设备成为效劳器,“选择列表〞及“断开连接〞组件将不可用图2 修改蓝牙设备的角色【3】接收连接事件当蓝牙效劳器收到连接请求时,将触发该事件如果连接成功,即连接状态值为真,则向所连接的设备发送“已连接到效劳器,可以开场聊天了...〞,并开场启用计时器,随时监听客户端发来的消息;如果连接不成功,则不启用计时器如图3所示图3 蓝牙效劳器“接收连接〞事件处理程序三、与蓝牙客户端相关的代码【1】当“选择列表〞准备选择时当用户点击“选择列表〞时,将翻开一个列表,里面列出了所有已配对的蓝牙设备,用户可以选择其一进展连接图4 准备连接【2】当“选择列表〞完成选择时当用户选择了一个蓝牙设备,意味着用户向所选设备发出了连接请求,“让蓝牙客户端连接设备〞的结果可能是真〔连接成功〕,也可能是假〔连接失败〕如果成功,则设全局变量“角色〞值为“客户端〞,并启动计时器;如果失败,则不启动计时器图5 进展连接【3】断开连接图6 断开连接四、发送消息【1】全局变量“聊天容〞与自定义过程“拼字符串〞:以适当的方式来呈现聊天记录,即,为聊天容添加换行符,并说明发言者身份图7 对聊天容的记录与组织【2】发送一条消息图8 角色不同使用不同蓝牙组件来发送消息五、接收消息图9 不同角色使用不同蓝牙组件来接收消息六、清空聊天记录图10 清空聊天记录实验结果:实验感想:我们的APP仍然需要改良,比方接收消息可以加上语音提示,添加聊天记录保存功能,添加共享音频图片文件功能,这个小APP距离这些聊天工具还有很大的上升空间。
通过此次实验,我们了解了蓝牙客户端效劳器计时器等非可视组件的相关功能,对两个角色的切换有了更深刻的认识,虽然程序是参照网上的例程,但是收获良多,希望以后有更多这样的时机木琴实验目的使用单一的声音组件来播放不同的音频文件,使用Clock组件来计算并实现两个音符之间的延迟,在创立一个过程时做判断,创立能够自我调节的过程;学习列表的高级应用,包括添加、删除及读取项如图,这个应用可以做到:1.通过触摸屏幕上的彩色按钮播放八个不同的音符;2.按“播放〞按钮,回放之前弹奏的音符;3.按“重置〞按钮去除之前弹过的音符,以便输入新曲图1 木琴的用户界面实验过程一、设计组件创立键盘用户界面中包含了低音C到高音C的打掉五声〔七音符〕音阶的八个音符键盘,本节将创立这样的音乐键盘首先创立前八个木琴键,用按扭来实现,设置Te*t属性,Width属性,Hight属性,BackgroundColor属性,使其效果如图2,图2 组件设计添加Sound组件我们要弹奏美妙的音符,就需要创立一个声音组件,设置最小间隔属性为0,这个不要忘记咯,是为了弹奏要多快有多快,我已开场没有设,默认值是半秒钟,就会有很大延迟下载1.wav到8.wav,并加载到工程。
声音与按钮的连接Button1被点击时,播放1.wav,切换到编辑块,这时候如果能有一个调用的过程会更加方便,然后当每一个按钮被点击是,就调用过程,播放对应的音频则进展如下设置图3 创立过程来演奏仅仅这样在测试时会失望,第一次按键时会出现错误因为系统是在程序运行后才加载声音,这个过程需要时间所以我们需要在程序启动时立刻加载声音图4 应用启动时加载声音经过这些步骤我们就可以弹奏出一些简单的曲子了!记录并回放音符为了实现回放功能,需要记录弹奏的音符并加以保存除了要记录弹奏的音高〔声音文件〕,还要记录两个音符之间的时间长度我们需要维护两个列表,每弹奏一个音符,两个列表中都会各自添加一条记录:notes:包含与演奏的音符相对应的声音文件名,按照演奏顺序排列;times:记录音符演奏时的时间点我们可以从Clock组件中得到计时信息,因此也可以用来正确地设定音符的回放速度添加组件在设计器中添加一个Clock组件及“播放〞和“重置〞按钮,按钮放在HorizontalArrangement中记录音符及时间回到块编辑器中,为组件添加正确的行为我们需要维护两个列表:notes与times,每次用户按下一个按钮,就向列表中添加一项:1. 从Variables抽屉中拖出一个initialize global name to块来定义一个新的变量;2. 单击“name〞将变量命名为“notes〞;3. 翻开Lists抽屉,拖动一个make a list块,将其放置在变量notes的插槽中;这样就定义了一个名为“notes〞的空列表。
重复上述步骤定义另一个变量,命名为“times〞块的样子图5 创立列表块的功能每演奏一个音符,需要保存两项数据:声音文件名〔保存到notes列表〕,以及演奏瞬间的时刻〔保存到times列表〕用Clock1.Now块来记录时刻,它返回当前时刻的时间值〔例如,2011年3月12日上午8时33分14秒〕,准确到毫秒这些数据可以通过Sound1.Source和Clock1.Now块获得,将分别被添加到notes及times列表中,如图5所示图 6 将演奏声音添加到列表中当用户按下“重置〞按钮时,我们希望清空这两个列表由于用户看不到清空带来的任何变化,因此添加一个Sound1.Vibrate块,通过振动来告知用户按键生效了,这种设置对用户来说是非常友好的图9-12显示了这一功能用到的块图 9-12 为用户的“重置〞操作提供反应音符的回放作为一个思想实验,先来考虑如何实现音符的回放,而暂时忽略回放速度我们可以〔但不会〕通过创立图9-13中的那块来实现这个暂时的目标:块的功能这是计算机科学中一个非常重要的概念:强大的递归为了更好地了解递归的工作原理,我们来一步一步地探究,当用户演奏了三个音符〔 1.wav、 3.wav和6.wav〕,然后按下“播放〞按钮时,都发生了什么。
PlayButton.Click首先判断列表中是否保存了音符:由于notes列表长度3>0,列表不空,因此设定count等于1,并调用PlayBackNote:1. 在第一次调用PlayBackNote时,count= 1:Sound1.Source被设置为在notes中的第1项,即1.wav;调用Sound1.Play,播放1.wav;由于count值〔1〕小于notes的长度〔3〕,因此count递增为2,并再次调用PlayBackNote;2. 第二次调用PlayBackNote时,count=2:Sound1.Source被设置为notes中的第2项,即3.wav;调用Sound1.Play,播放3.wav;由于count〔2〕小于notes的长度〔3〕,因此count递增为3,并再次调用PlayBackNote;3. 第三次调用PlayBackNote时,count=3:App Inventor 编程实例及指南本文档使用看云构建- 154 -Sound1.Source被设置为notes中的第3项,即6.wav;调用Sound1.Play,播放6.wav;由于count〔3〕不小于notes的长度〔3〕,因此跳出if块,回放完毕。
实验结果实现木琴弹奏,回放,重置的功能改良下面是一些可供探讨的备选方案:目前,在回放过程中,没有对用户点击ResetButton做任何限制,这将导致程序的崩溃〔错误提示:select list item: Attempt to get item number 4 of a list of lengh 0〕修改PlayButton.Click,让ResetButton在回放期间禁用,回放完成后再重新启用将PlayBackNote中的if块改为ifelse块,并在“else〞中重新启用ResetButton类似问题也发生在PlayButton上,用户可以在回放过程中再次点击该按钮〔想象一下会发生什么〕在PlayButton.Click中禁用PlayButton,并将其Te*t属性改为“播放中...... 〞,并像ResetButton一样,在PlayBackNote的ifelse块中重新启用该按钮,并重置Te*t属性实验感想编写一个能自我调用的过程不仅是可能的,有时也是必要的这种强大的技术称为递归在编写递归过程时,一定要确保为程序的退出设定一个根本条件,它的重要性远大于为自我调用设定条件,否则程序将陷入无限循环。
本实验加深了我对列表的认识,列表〔Lists〕可以为程序提供存储功能,可以在列表中保存用户的操作记录,并在以后对存储容进展提取和再处理经过教师建议,我将按键调整到适合弹奏的排列方式,还将按键播放声音的延迟取消,从而可以加快弹奏速度这三个实验让我们对MIT APP Inventor 这个平台有了根本的认识,并领略到程序的魅力,对经后的学习更加感兴趣。