appinventor软件开发文档.docx

上传人:b****6 文档编号:15264565 上传时间:2023-07-03 格式:DOCX 页数:10 大小:230.50KB
下载 相关 举报
appinventor软件开发文档.docx_第1页
第1页 / 共10页
appinventor软件开发文档.docx_第2页
第2页 / 共10页
appinventor软件开发文档.docx_第3页
第3页 / 共10页
appinventor软件开发文档.docx_第4页
第4页 / 共10页
appinventor软件开发文档.docx_第5页
第5页 / 共10页
appinventor软件开发文档.docx_第6页
第6页 / 共10页
appinventor软件开发文档.docx_第7页
第7页 / 共10页
appinventor软件开发文档.docx_第8页
第8页 / 共10页
appinventor软件开发文档.docx_第9页
第9页 / 共10页
appinventor软件开发文档.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

appinventor软件开发文档.docx

《appinventor软件开发文档.docx》由会员分享,可在线阅读,更多相关《appinventor软件开发文档.docx(10页珍藏版)》请在冰点文库上搜索。

appinventor软件开发文档.docx

appinventor软件开发文档

 

appinventor软件开发文档(总6页)

浙江师范大学

本科生课程论文封面

课程名称:

Android手机程序开发

论文名称:

《软件开发文档》

学院

数理与信息工程学院

专业

通信工程

学号

14900110

姓名

王晓洁

任课教师

熊继平

成绩

评阅教师签名

浙江师范大学数理信息学院

基于加速度传感器的计步器

实验目的:

利用加速度传感器实现计步器的功能。

实验过程

一、组件设计

图1界面设计

二、相关代码

【1】全局变量“step”

用来记录行走步数。

【2】定义过程

将标签1的文本设置为步数值。

【3】核心算法

当加速度传感器被晃动时,step加1.并且调用过程。

最后有一个清除步数的功能。

实验感想

第一次接触这样拼图类的代码编写方法,感觉很有趣,适合青少年起步学习,不枯燥。

这个APP虽然功能简单,但是要做到精确计步却不容易。

在算法上有很大需要改进。

基于蓝牙的手机通信软件

实验目的:

根据AppInventor2提供的两个蓝牙通信组件:

蓝牙客户端、蓝牙服务器,将这两个组件配合使用,实现简单的即时通信功能。

实验过程:

一、组件设置

图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的打掉五声(七音符)音阶的八个音符键盘,本节将创建这样的音乐键盘。

首先创建前八个木琴键,用按扭来实现,设置Text属性,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抽屉中拖出一个initializeglobalnameto块来定义一个新的变量;

2.单击“name”将变量命名为“notes”;

3.打开Lists抽屉,拖动一个makealist块,将其放置在变量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:

AppInventor编程实例及指南

本文档使用看云构建-154-

Sound1.Source被设置为notes中的第3项,即6.wav;

调用Sound1.Play,播放6.wav;

由于count(3)不小于notes的长度(3),因此跳出if块,回放结束。

实验结果

实现木琴弹奏,回放,重置的功能。

改进

下面是一些可供探讨的备选方案:

目前,在回放过程中,没有对用户点击ResetButton做任何限制,这将导致程序的崩溃(错误提示:

selectlistitem:

Attempttogetitemnumber4ofalistoflengh0。

)修改PlayButton.Click,让ResetButton在回放期间禁用,回放完成后再重新启用。

将PlayBackNote中的if块改为ifelse块,并在“else”中重新启用ResetButton。

类似问题也发生在PlayButton上,用户可以在回放过程中再次点击该按钮。

(想象一下会发生什么。

)在PlayButton.Click中禁用PlayButton,并将其Text属性改为“播放中......”,并像ResetButton一样,在PlayBackNote的ifelse块中重新启用该按钮,并重置Text属性。

实验感想

编写一个能自我调用的过程不仅是可能的,有时也是必要的。

这种强大的技术称为递归。

在编写递归过程时,一定要确保为程序的退出设定一个基本条件,它的重要性远大于为自我调用设定条件,否则程序将陷入无限循环。

本实验加深了我对列表的认识,列表(Lists)可以为程序提供存储功能,可以在列表中保存用户的操作记录,并在以后对存储内容进行提取和再处理。

经过老师建议,我将按键调整到适合弹奏的排列方式,还将按键播放声音的延迟取消,从而可以加快弹奏速度。

这三个实验让我们对MITAPPInventor这个平台有了基本的认识,并领略到程序的魅力,对经后的学习更加感兴趣。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2