




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江师范大学浙江师范大学 本科生课程论文封面本科生课程论文封面 课程名称 课程名称 AndroidAndroid 手机程序开发手机程序开发 论文名称 论文名称 软件开发文档软件开发文档 学院学院数理与信息工程学院 专业专业通信工程 学号学号14900110 姓名姓名王晓洁 任课教师任课教师熊继平 成绩成绩 评评阅阅教教师师 签签名名 浙江师范大学数理信息学院浙江师范大学数理信息学院 1 基于加速度传感器的计步器基于加速度传感器的计步器 实验目的 实验目的 利用加速度传感器实现计步器的功能 实验过程实验过程 一 组件设计 图 1 界面设计 二 相关代码 1 全局变量 step 用来记录行走步数 2 定义过程 将标签 1 的文本设置为步数值 3 核心算法 当加速度传感器被晃动时 step 加 1 并且调用过程 2 最后有一个清除步数的功能 实验感想实验感想 第一次接触这样拼图类的代码编写方法 感觉很有趣 适合青少年起步学习 不枯燥 这个 APP 虽然功能简单 但是要做到精确计步却不容易 在算法上有 很大需要改进 3 基于蓝牙的手机通信软件基于蓝牙的手机通信软件 实验目的实验目的 根据 App Inventor 2 提供的两个蓝牙通信组件 蓝牙客户端 蓝牙服务器 将这两个组件配 合使用 实现简单的即时通信功能 实验过程实验过程 一 组件设置 图 1 界面设计 二 与蓝牙服务器相关的代码 1 全局变量 角色 用来表明当前设备在通信中的角色 服务器或客户端 2 在线 设置 如图 2 所示 当选中 在线 复选框时 表明本设备现在充当服务器的角色 可以接受来 自其他设备的连接请求 一旦该设备成为服务器 选择列表 及 断开连接 组件将不可 用 4 图 2 修改蓝牙设备的角色 3 接收连接事件 当蓝牙服务器收到连接请求时 将触发该事件 如果连接成功 即连接状态值为真 则向 所连接的设备发送 已连接到服务器 可以开始聊天了 并开始启用计时器 随时监听 客户端发来的消息 如果连接不成功 则不启用计时器 如图 3 所示 图 3 蓝牙服务器 接收连接 事件处理程序 三 与蓝牙客户端相关的代码 1 当 选择列表 准备选择时 5 当用户点击 选择列表 时 将打开一个列表 里面列出了所有已配对的蓝牙设备 用户 可以选择其一进行连接 图 4 准备连接 2 当 选择列表 完成选择时 当用户选择了一个蓝牙设备 意味着用户向所选设备发出了连接请求 让蓝牙客户端连接 设备 的结果可能是真 连接成功 也可能是假 连接失败 如果成功 则设全局变量 角色 值为 客户端 并启动计时器 如果失败 则不启动计时器 图 5 进行连接 3 断开连接 图 6 断开连接 四 发送消息 1 全局变量 聊天内容 与自定义过程 拼字符串 以适当的方式来呈现聊天记录 即 为聊天内容添加换行符 并表明发言者身份 6 图 7 对聊天内容的记录与组织 2 发送一条消息 图 8 角色不同使用不同蓝牙组件来发送消息 7 五 接收消息 图 9 不同角色使用不同蓝牙组件来接收消息 六 清空聊天记录 图 10 清空聊天记录 8 实验结果 实验结果 实验感想 实验感想 我们的 APP 仍然需要改进 比如接收消息可以加上语音提示 添加聊天记录保存功能 添加共享音频图片文件功能 这个小 APP 距离微信这些聊天工具还有很大的上升空间 通过此次实验 我们了解了蓝牙客户端服务器计时器等非可视组件的相关功能 对两 个角色的切换有了更深刻的认识 虽然程序是参照网上的例程 但是收获良多 希望以后 有更多这样的机会 9 木琴木琴 实验目的实验目的 使用单一的声音组件来播放不同的音频文件 使用 Clock 组件来计算并实现两个音符之 间的延迟 在创建一个过程时做判断 创建能够自我调节的过程 学习列表的高级应用 包括添加 删除及读取项 如图 这个应用可以做到 1 通过触摸屏幕上的彩色按钮播放八个不同的音符 2 按 播放 按钮 回放之前弹奏的音符 3 按 重置 按钮清除 之前弹过的音符 以便输入新曲 图 1 木琴的用户界面 实验过程实验过程 一 设计组件一 设计组件 创建键盘创建键盘 用户界面中包含了低音 C 到高音 C 的打掉五声 七音符 音阶的八个音符键盘 本 节将创建这样的音乐键盘 首先创建前八个木琴键 用按扭来实现 设置 Text 属性 Width 属性 Hight 属性 BackgroundColor 属性 使其效果如图 2 10 图 2 组件设计 添加添加 Sound 组件组件 我们要弹奏美妙的音符 就需要创建一个声音组件 设置最小间隔属性为 0 这个不要 忘记咯 是为了弹奏要多快有多快 我已开始没有设 默认值是半秒钟 就会有很大延迟 下载 1 wav 到 8 wav 并加载到项目 声音与按钮的连接声音与按钮的连接 Button1 被点击时 播放 1 wav 切换到编辑块 这时候如果能有一个调用的过程会更加方 便 然后当每一个按钮被点击是 就调用过程 播放对应的音频 则进行如下设置 图 3 创建过程来演奏 仅仅这样在测试时会失望 第一次按键时会出现错误 因为系统是在程序运行后才加载声 音 这个过程需要时间 所以我们需要在程序启动时立刻加载声音 11 图 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 创建列表 12 块的功能块的功能 每演奏一个音符 需要保存两项数据 声音文件名 保存到 notes 列表 以及演奏瞬间的 时刻 保存到 times 列表 用 Clock1 Now 块来记录时刻 它返回当前时刻的时间值 例如 2011 年 3 月 12 日上午 8 时 33 分 14 秒 精确到毫秒 这些数据可以通过 Sound1 Source 和 Clock1 Now 块获得 将分 别被添加到 notes 及 times 列表中 如图 5 所示 图 6 将演奏声音添加到列表中 当用户按下 重置 按钮时 我们希望清空这两个列表 由于用户看不到清空带来的任何 变化 因此添加 一个 Sound1 Vibrate 块 通过振动来告知用户按键生效了 这种设置对用户来说是非常友 好的 图 9 12 显 示了这一功能用到的块 图 9 12 为用户的 重置 操作提供反馈 13 音符的回放音符的回放 作为一个思想实验 先来考虑如何实现音符的回放 而暂时忽略回放速度 我们可以 但 不会 通过创建 图 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 块 回放结束 14 实验结果实验结果 实现木琴弹奏 回放 重置的功能 改进改进 下面是一些可供探讨的备选方案 目前 在回放过程中 没有对用户点击 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 并将其 Text 属性改为 播放中 并像 ResetButton 一样 在 PlayBackNote 的 ifelse 块中重新启用该按钮 并重置 Text 属性 实验感想实验感想 编写一个能自我调用的过程不仅是可能的 有时也是必要的 这种强大的技术称为递 归 在编写递归过程时 一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西瓜消暑活动方案
- 和合致远考试题及答案
- 国家司考试题及答案
- 公寓客服考试题及答案
- 幼儿园教学教案设计:不玩化学品
- 甘肃专升本考试题及答案
- 产品功能迭代需求分析与评估工具
- 儿童乐理考试题及答案
- 供应商信息管理与评价标准体系
- 动画 识图考试题及答案
- GB 23466-2025听力防护装备的选择、使用和维护
- 人教PEP版(2024)四年级上册英语-Unit 3 Places we live in 单元整体教学设计(共6课时)
- 华为信息安全管理培训课件
- 贵阳市殡仪服务中心招聘考试真题2024
- 重庆市危险化学品企业变更管理实施指南(试行)解读2025.7.25
- 2025年全国保密教育线上培训考试试题库完整答案附带答案详解
- 全套教学课件《工程伦理学》
- 国防法规优秀课件
- 世界烟草控制框架公约解读
- GB/T 1631-2008离子交换树脂命名系统和基本规范
- 清洗地毯操作流程课件
评论
0/150
提交评论