Java课程设计报告.doc_第1页
Java课程设计报告.doc_第2页
Java课程设计报告.doc_第3页
Java课程设计报告.doc_第4页
Java课程设计报告.doc_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java 课程实习课程实习 报告报告 题目音乐播放器 学号 201011621335 201011621329 200811621320 学生姓名 朱剑峰 薛文博 刘彬 联系方式13726903356所在专业计算机科学与技术 所在班级1103 指导教师刘思凤 成绩 教师签字 课程设计时间 2013 年 6 月 1 日 至 2013 年 6 月 25 日 评语 广东海洋大学本科生课程设计报告 1 目目 录录 摘要摘要 2 1 1绪论绪论 3 1 11 1课题背景课题背景 3 1 21 2课程设计目的课程设计目的 3 1 31 3课程设计实验环境课程设计实验环境 3 1 41 4课程设计要求课程设计要求 4 2 2课程系统分析课程系统分析 4 2 12 1程序界面布局设计程序界面布局设计 4 2 22 2功能分析功能分析 4 3 3系统设计与实现系统设计与实现 5 3 13 1系统功能结构图系统功能结构图 5 3 23 2模块功能设计模块功能设计 5 3 2 13 2 1 菜单栏菜单栏 功能设计功能设计 5 3 2 23 2 2 动态音频播放进度显示动态音频播放进度显示 功能设计功能设计 9 3 2 33 2 3 歌曲搜索歌曲搜索 功能实现功能实现 9 3 2 43 2 4 歌曲播放歌曲播放 停止停止 功能实现功能实现 10 3 2 53 2 5 列表展示列表展示 功能实现功能实现 11 4 4系统优点与缺点系统优点与缺点 13 4 1系统优点系统优点 13 4 2系统缺点系统缺点 13 5 5系统开发过程系统开发过程 14 Myeclipse 平台开发版本平台开发版本 14 NetBeans 开发平台版本开发平台版本 15 6 6设计总结设计总结 16 参考文献 17 附 录 18 关键代码 18 1 音乐解码函数 音乐解码函数 decodeMusic 18 2 播放线程类 播放线程类 class PlayThread 20 3 控制滚动条类 控制滚动条类 class RunSlider 21 广东海洋大学本科生课程设计报告 2 摘要摘要 JAVA 是目前最流行的软件开发语言之一 称为网络上的 世界语 JAVA 适合开 发基于多媒体 与平台无关 用面向对象的方法进行的基于 Internet Intranet Extranet 的 Applet 和应用程序 它具有简单高效 面向对象 不依赖于机器结构的特点 支持多线程 分布和并发机制 用 JAVA 开发的应用软件在 可移植性 健壮性 安全性等方面大大优于已存在的其他编程语言 JAVA 是一门包含多种知识的学科 提供了丰富的类库 能最大限度地利用网络 JAVA 可广泛用于面向对象的事件描述 处理面向对象的企业型的应用开发 还应用于 Internet 系统管理 Web 页面设计 Internet 可视化软件开发等方面 在学习的过程 中我学到了许多以前没有学到的概念和新鲜资讯 运用这些知识可以完成老师交给我 的课程设计任务 这次老师让我们自己拟订题目 给了我们很大的想象空间 我们自 选了一个音乐播放器的课程设计题目 本小组之所以选择做音乐播放器 全赖于本小组成员均对音乐有浓厚的兴趣 虽 热衷于听音乐 但现在网上流传的音乐播放器还不能满足我们这些发烧友 像高清音 乐等 这些高品质的作品若在现流行的播放器上运行 这只能做普通音乐文件 享用 话说如此 因本小组开发能力有限 课程比较多 时间所限 以至暂且把音乐播放器 开发到 version0 9 主要功能还未能达到我们想要的境界 小结一下 本小组的播放器所具备的功能有如下 添加音乐 删除音乐 搜索音 乐 更换播放器皮肤 更改播放模式等 详见 2 2 节 本次设计的播放器在具备基本功能的基础上 还具有很强的扩展性 如歌词导入 可播放音乐类型的增加等等这些还未实现的地方我们都提供了许多接口 以便日后做 修改或增加功能所用 能够具备一个属于自己的播放器确实是一件非常高兴的事情 能够一边开发一边 享受音乐的熏陶更是一件难得可贵的经历 愿此摘要能让读者感受得到笔者的兴奋与 成功 广东海洋大学本科生课程设计报告 3 音乐播放器 任务分工任务分工 系统设计与代码实现 朱剑峰 系统测试与维护 薛文博 需求与功能分析 刘彬 指导教师 刘思凤 1 1绪论绪论 1 11 1课题背景课题背景 随着社会电子音乐文件的与日俱增 作为现在最流行的音乐文件 mp3 wav 文 件的数量和规模也在比以往的任何时候要多 不论是电台 DJ 需要使用方便而有效地管 理自己所使用的音乐文件 还是个人 在计算机日益普及的今天 若采用一套有效的 音乐播放器 将自己所收藏的大量的音乐文件能随时随地的播放 这将方便于众用户 听音乐的需求 通过使用本音乐播放器能为音乐爱好者带来意想不到的收获 1 21 2课程设计目的课程设计目的 应用软件开发实习 是计算机相关专业的必修专业基础课程 其实践性 应用 性很强 实践教学环节是必不可少的一个重要环节 本课程的程序设计专题实际是计 算机相关专业学生学习完 应用软件开发实习 课程后 进行的一次全面的综合训练 程序设计的设计目的是加深对理论教学内容的理解和掌握 使学生较系统地掌握程序 设计及其在网络开发中的广泛应用 基本方法及技巧 为学生综合运用所学知识 利 用软件工程为基础进行软件开发 并在实践应用方面打下一定基础 1 31 3课程设计实验环境课程设计实验环境 程序运行在安装有 windows 操作系统的计算机上 台式机和笔记本 兼容 windows 2K XP Vista 7 8 计算机硬件基本要求 仅供参考 1 CPU 1G 2 内存 512M 3 显卡 256M 显存 文件播放 需要安装有声卡 要求安装有语音库 JAVA 程序设计语言及相应的集成开发环境 Myeclipse 和 Netbeans 开发工具 广东海洋大学本科生课程设计报告 4 1 41 4课程设计要求课程设计要求 按课程设计指导书提供的课题 要求学生在自行完成各个操作环节 并能实现且 达到举一反三的目的 完成一个项目解决一类问题 要求学生能够全面 深入理解和 熟练掌握所学内容 并能够用其分析 设计和解答类似问题 对此能够较好地理解和 掌握 能够进行简单分析和判断 能编写出具有良好风格的程序 掌握 JAVA 程序设 计的基本技能和面向对象的概念和方法 了解多线程 安全和网络等编程技术 同时 培养学生进行分析问题 解决问题的能力 培养学生进行设计分析 设计方法 设计 操作与测试 设计过程的观察 理解和归纳能力的提高 2 2课程系统分析课程系统分析 2 12 1程序界面布局设计程序界面布局设计 1 创建一个 JFrame 类 类名为 MyPlayer 类 2 向对话框中添加 JSlider 控件 JList 控件 JLabel 控件 JJToggleButton 控件 MenuBar 菜单 JPanel 容器 JToolBar 容器以及 JScrolPanel 容器 3 设置所添加的控件的属性 以及使用 Java 的界面风格 本设计共使用了 6 种 Java 的不同界面风格 2 22 2功能分析功能分析 MyPlayer 播放器主要对常用 Windows 音频格式的文件实现播放控制 主界面功能 菜单栏功能 添加音乐 添加音乐文件 即导入一个或多个音乐文件至列表当中 添加音乐目录 即导入文件夹中所有的音乐文件至列表当中 控制 随机播放 顺序播放 单曲循环 设置歌词 有待开发 更换皮肤 默认 深海世界 迷人金属 香韵咖啡 骇客帝国 浪漫满屋 均为 java 的界面风格 广东海洋大学本科生课程设计报告 5 关于 帮助 记录作者的相关信息以及软件开发的日期 动态音频播放进度显示 正在播放歌曲在顶层的显示 播放歌曲的时间长度的显示以及正在播放时间的长度的显示 滚动条随播放状态改变显示 歌曲搜索功能 根据关键字搜索对应的歌曲 歌曲播放 停止功能 上一首 播放上一首歌曲并根据播放模式来选择 下一首 播放下一首歌曲并根据播放模式来选择 播放 停止 播放或停止歌曲 双击播放 双击停止 在列表中对指定歌曲的操作 列表展示功能 隐藏 显示列表 移除单个音乐文件 移除所有音乐文件 显示当前歌曲数目 播放模式 皮肤情况 3 3系统设计与实现系统设计与实现 3 13 1系统功能结构图系统功能结构图 MyPlayer 播放器的功能结构图如图 3 1 菜单栏功能 动态音频播放进度 显示 歌曲搜索功能 歌曲播放 停止功 能 列表展示功能 主界面功能 图 3 1 主界面功能图 广东海洋大学本科生课程设计报告 6 3 23 2模块功能设计模块功能设计 3 2 13 2 1 菜单栏菜单栏 功能设计功能设计 菜单栏 功能结构图如图 3 2 1 菜单栏功能 添加音乐控制更换皮肤关于 添加音乐文件 添加音乐目录 随机播放 顺序播放 单曲循环 6种皮肤 帮助 图 3 2 1 菜单栏功能结构 3 2 1 13 2 1 1 添加音乐添加音乐 功能实现功能实现 当点击 添加歌曲 文件夹 选择 添加本地歌曲 或 添加本地歌曲文件夹 的 时候 这时候会触发这两个 JMenuItem 事件 调用了 open 函数 opendir 函数 即将选中的音乐文件 或文件夹内所有音乐文件 的信息 名称与路径 放入 nameVector 和 urlVector 当中 并修改 listCount 的值 显示歌曲的总数 最后将 nameVector 的所有内容放入 list 列表当中 如图 3 2 1 1 广东海洋大学本科生课程设计报告 7 图 3 2 1 1 左上 选择操作 左下 选择目录 右下 列表显示 3 2 1 23 2 1 2 控制控制 功能实现功能实现 当选择 控制 功能的任意一项 则会使全局的 chosenMethod 整型变量的值根据 选择的项赋对应的值 值域为 1 随机播放 2 顺序播放 3 单曲循环 因播放 器的播放功能是一个 while true 的循环 每当播放歌曲时候 播放前会由函数 chooseNextSong 根据 chosenMethod 的值来选择下一首歌是那一首 如果值是 1 则会由 0 listCount 列表歌曲总数 获取随机数 再根据 play 函数 播放 如果值是 2 则根据 chosenIndex 当前播放歌曲号 直接加一 再根据 play 函 数播放 如果值是 3 则 chosenIndex 当前播放歌曲号 的值不再修改 再根据 play 函 数播放 如图 3 2 1 2 图 3 2 1 2 左上 选择操作 左下 随机播放后歌曲序号 此处为后台显示 起始播放第 1 首歌 下一首歌为第 295 首歌曲 右侧 为列表显示 指向对应歌曲 并且列表底下显示 随机播放 3 2 1 33 2 1 3 更换皮肤更换皮肤 功能实现功能实现 当选择 更换皮肤 功能的任意一项 则会触发对应事件的发生 调用函数 loadskin1 或 loadskin2 等等 此时会调用 LookAndFeel 的类 指定 java 包含的皮肤风 广东海洋大学本科生课程设计报告 8 格 Loadskin1 对应 默认 loadskin2 对应 深海世界 等等 选择皮肤后 主界面底下会显示对应的提示 如选择了 浪漫满屋 地下就会显 示 皮肤 浪漫满屋 如图 3 2 1 3 所示 图 3 2 1 3 左 选项显示 右 换肤后主 界面情况 3 2 1 43 2 1 4 关于关于 功能实现功能实现 当选择 帮助 功能时 则弹出信息窗口 提示本软件的开发时间与开发人员相关 信息 如图 3 2 1 4 所示 广东海洋大学本科生课程设计报告 9 图 3 2 1 4 3 2 23 2 2 动态音频播放进度显示动态音频播放进度显示 功能设计功能设计 当歌曲播放正在播放时 则顶层 正在播放 处会显示歌曲的名称 当歌曲名称过 长时候 超长部分会用省略号显示 同时会根据歌曲的格式 得到歌曲的长度 并显示在歌曲的右侧的 JLabel fileTime 中 另外会另起一个线程 RunSlider 来控制计时功能 每 1 秒钟 滚动条左侧 JLabel runningTime 会根据播放的时间来修改 滚动条 PlayerSlider 则会每秒钟根据 runingTime 的值来移动 如图 3 2 2 所示 图 3 2 2 正在播放歌曲中的动态播放进度 显示 3 2 33 2 3 歌曲搜索歌曲搜索 功能实现功能实现 在搜索栏中输入关键字 在回车确认 系 统就会调用 seachMusic 来搜索与关键字吻合的 歌曲 并将其放入临时的 Vector tmpName 当中 并显示其到 list 列表当中 如图 3 2 3 1 在临时的列表中选择所需要播放的歌曲 双击播放 同时临时列表消失 回复原来的列 表 即导入 nameVector 的数据到 list 当中 当点击 X 按钮 若还在临时列表当中 则会清除临时列表并且恢复原来的列表 若已 经恢复到临时列表 则搜索框中会返回提示 请输入搜索关键字 广东海洋大学本科生课程设计报告 10 图 3 2 3 1 上 搜索 陈奕迅 的歌曲 下 取消搜索后 搜索框的内容 3 2 43 2 4 歌曲播放歌曲播放 停止停止 功能实现功能实现 歌曲播放 停止 功能结构图如图 3 2 4 歌曲播放 停止功能 上一首下一首播放 停止双击播放 停止 图 3 2 4 歌曲播放 停止 功能结构 3 2 4 13 2 4 1 上一首上一首 下一首下一首 功能实现功能实现 当点击 上一首 的按钮时 会根据按钮事件 若 chosenMethod 播放方式 的值为 1 即随机播放 则系统会调用 chooseNextSong 来随机选择歌曲号来播 放下一首歌 若 chosenMethod 不为 1 则会调用 previousMusic 对 chosenIndex 当前播放歌曲号 减一 再调用 play 函数播放上一首歌曲 当点击 下一首 的按钮时 会根据按钮事件 若 chosenMethod 播放方式 的值为 1 即随机播放 则系统会调用 chooseNextSong 来随机选择歌曲号来播 放下一首歌 若 chosenMethod 不为 1 则会调用 nextMusic 对 chosenIndex 当前 播放歌曲号 加 1 再调用 play 函数播放下一首歌曲 3 2 4 23 2 4 2 播放播放 停止停止 双击播放双击播放 停止停止 功能实现功能实现 当点击 播放 停止 的按钮时候 若点击了 播放 则会显示 停止 同时 会对列表正在选中的歌曲进行播放 同时会触发 动态音频播放进度显示 功能 3 2 2 节所介绍 更改或增加播放信息 若点击了 停止 则会显示 播放 同时会对当前播放的歌曲进行停止 同 样会触发 动态音频播放进度显示 功能 清除对应的显示 如图 3 2 4 2 广东海洋大学本科生课程设计报告 11 图 3 2 4 2 左 播放 右 停止 3 2 53 2 5 列表展示列表展示 功能实现功能实现 列表展示 功能结构图如图 3 2 5 图 3 2 5 列表展示 功能结构 3 2 5 13 2 5 1 隐藏隐藏 显示列表显示列表 功能实现功能实现 当点击 显示列表 隐藏列表 的按钮时候 若点击了 显示列表 则会显示 隐藏列表 同时触发该事件 将原来的 JFrame 大框架的长度减少 440 个单位 若点击了 隐藏列表 则会显示 显示列表 同时触发该事件 将原来的 JFrame 大框架的长度增加 440 个单位 隐藏与显示列表这一功能虽然非常简单 但其重要性不可忽视 对于现在许多 用户对音乐播放器的要求 就如自己的手机或着 MP3 一样 小巧 灵活 精致 至此这一项功能对于本小组一开始的设计就算是一个亮点 如图 3 2 5 1 所示 列表展示功能 隐藏 显示列表移除音乐文件显示列表信息 广东海洋大学本科生课程设计报告 12 图 3 2 5 1 左 隐藏列表 右 显示列表 3 2 5 23 2 5 2 移除歌曲移除歌曲 功能文件实现功能文件实现 当用鼠标对着列表的音乐文件右键的时候 会弹出两个选项 移除歌曲 移除所有 歌曲 当选择 移除歌曲 则对所选择的音乐文件从列表中移除 即事件的触发调用了 deleteSingle 函数 将对应的项从列表中移 除 从 nameVector 中移除 从 urlVector 中 移除 同理当选择 移除所有歌曲 的时候 事件触发调用 deleteAll 函数 将列表清空 将 nameVector 中的元素清除 以上两者运行过后均会更新主界面底层 歌曲数目 并且停止正在播放的歌曲 图 3 2 5 2 右键列表后出现的选择项 广东海洋大学本科生课程设计报告 13 3 2 5 33 2 5 3 显示列表信息显示列表信息 功能实现功能实现 由 添加音乐 功能 3 2 1 1 节 调用的 open opendir 函数 会将保存在 nameVector 中的内容导入列表当中 当双击列表中的歌曲的时候 如果歌曲正在 播放则会停止 如果播放器没有进行播放 则双击后就进行播放 当我们对着列表右键时 则会弹出列表 移除歌曲 移除所有歌曲 详见 3 2 5 2 节 4 4系统优点与缺点系统优点与缺点 4 1系统优点系统优点 1 windows 界面风格可选择性 如上如所述 本音乐播放器具有 6 种皮肤可以更 换 这大大满足了一个娱乐性的软件的需要 并且皮肤起名也符合用户的感官需求 像 深海世界 浪漫满屋 这些贴切而休闲的词汇更能吸引用户对播放器的使用 2 播放方式可选择性 对于喜欢听音乐的用户 会根据自己的需要选择一定的顺 序来听音乐 3 列表隐藏的功能 符合大众播放器的功能 将播放器的界面弄得小巧而精致 即使隐藏了列表也不妨碍主要的播放器功能 4 搜索功能 随着网络的发达 音乐歌曲随处下载 人均播放列表的歌曲数目数 以百计 这时候搜索功能就显得十分重要 本播放器根据关键字可以对列表进行搜索 并可以显示搜索后的列表 同时临时的列表不会缩减播放器功能 4 2系统缺点系统缺点 1 本系统主要代码均在一个文件当中 MyPlayer java 当中 由于本小组是用 netBeans7 2 1 开发平台开发的 对开发平台尚未了解 故暂且没有将代码弄得更具有 可读性 2 本播放器还缺少暂停功能 在开发的最后版本 Music Player0 9fornetBeans 还在改进当中 期待 1 0 版本对此功能的实现 3 本播放器对音乐文件的选择 仅仅 mp3 文件以及 wav 文件可播放 针对 decodeMusic 解码函数的改善 尚未能解决 4 本播放器缺少歌词设置 显示功能 由于本小组对播放器的主界面还未想到一 个满意的设计 所以歌词的实现暂且没有实现 待界面设计得灵活的时候 再添加歌 词的功能 广东海洋大学本科生课程设计报告 14 5 5系统开发过程系统开发过程 Myeclipse 平台开发版本平台开发版本 Version 0 1 1 菜单栏 文件包括 打开文件 打开目录 退出程序 控制 随机播放 顺序播放 单曲循环 设置歌词 更换皮肤 帮助 关于 2 上一首 下一首 停止 播放 隐藏列表 4 个 button 3 帮助显示 关于 消息框 Version0 2 1 能打开文件 显示文件名称在下面的框内 多个文件显示在框内 2 文件 退出程序 实现 3 能够显示列表与隐藏列表 Version0 3 1 双击能够播放 2 暂停 跟 继续 新增 1 双击整个 title 换成为歌曲名称 问题 1 隐藏列表 显示列表 list 会缩水 2 filedialog 没有选择任何文件 直接关闭会出现错误 verson0 4 中已解决 3 双击空的列表也可以开始 version 0 6for netBeans 已经解决 Version0 31 Version0 3 崩溃 Version0 4 1 上一首 下一首 能够在列表中显示 2 上一首 下一首播放功能 新增 1 打开文件可以多选 2 打开目录 可以把整个目录里面的 MP3 wav 文件导出在列表中 问题 1 双击 第一次 是开始 第二次 是停止 相对于同一首歌 相对于其它歌会 停止 也不播放 version 0 6for netBeans 已经解决 2 播放完一首歌后 不能自动往下播放 version 0 5forneatBeans 已经解决 歌曲不能删除 version 0 6for netBeans 已经解决 修改 1 打开文件 打开目录 分别换成 添加本地歌曲 添加本地歌曲文件夹 Version0 5 1 皮肤 简单的颜色或者图片 2 更换皮肤 可供选择 修改 1 项目已经转至 netbeans 平台上开发 并明明为 Music Player0 5forneatBeans 新增 1 快捷键 添加歌曲 文件夹 添加了快捷键 和 关于 加了快捷键 广东海洋大学本科生课程设计报告 15 Version 0 6 1 播放模式 2 删除功能 问题 1 播放列表可以拉出来 播放到名字比较长的歌曲 list 会变宽 已经完全解 决 删除正在播放的 label 2 播放按钮 双击 未解决 version0 6 已经修复 上一首 下一首 置顶时候 以及随机播放时候 下一首上一首序号问题 version0 6 已经修复 3 菜单项 选中后 没有特别标志 解决办法 1 换另外一种菜单项 2 选中菜单 项后 字体等改变 selected 方法 是改变修改字体的 version0 7 添加 1 中 解决 4 删除 单首歌 序号不能改变 version0 7 已经修复 NetBeans 开发平台版本开发平台版本 Version0 7 for netbeans 1 添加底下 歌曲数目 播放模式 皮肤的显示 2 歌曲名前面有序号 3 音乐时间 以及滚动条 4 正在播放 显示的问题 Version0 8 for netbeans 1 添加搜索模块 2 添加搜索功能 3 搜索功能 搜索列表播放功能 Version0 9fornetbeans 1 修改播放器软件运行时的图标 将 java 的图标换成 射手 图标 广东海洋大学本科生课程设计报告 16 6 6设计总结设计总结 JAVA 是目前最流行的软件开发语言之一 称为网络上的 世界语 JAVA 适合开 发基于多媒体 与平台无关 用面向对象的方法进行的基于 Internet Intranet Extranet 的 Applet 和应用程序 它具有简单高效 面向对象 不依赖于机器结构的特点 支持多线程 分布和并发机制 用 JAVA 开发的应用软件在 可移植性 健壮性 安全性等方面大大优于已存在的其他编程语言 JAVA 是一门包含多种知识的学科 提供了丰富的类库 能最大限度地利用网络 JAVA 可广泛用于面向对象的事件描述 处理面向对象的企业型的应用开发 还应用于 Internet 系统管理 Web 页面设计 Internet 可视化软件开发等方面 在学习的过程 中我学到了许多以前没有学到的概念和新鲜资讯 运用这些知识可以完成老师交给我 的课程设计任务 这次老师让我们自己拟订题目 给了我们很大的想象空间 我们自 选了一个音乐播放器的课程设计题目 课程设计的过程虽然是艰难而辛苦的 但是我却从中感到了快乐与欣慰 快乐是 因为我以前对于 JAVA 的知识可以说是孤陋寡闻 但是通过这次课程设计我使自己的知 识更加的丰富了 加大了自己的知识面 让自己的实力扩大了 所以我感到非常的快 乐 欣慰是因为看着自己做出的课程设计得到了老师的认同 取得了成功 这次课程 设计的整体过程是充实而满足的 广东海洋大学本科生课程设计报告 17 参考文献 1 1 美 埃克尔 Eckel B 著 Java 编程思想 第四版 陈昊鹏译 一北 京 机械工业出版社 2007 6 2 2 刁成嘉 著 UML 系统建模与分析设计 机械工业出版社 2007 6 3 3 朱喜福 著 Java 程序设计 第 2 版 清华大学出版社 2009 10 4 4 辛运帏 著 Java 语言程序设计 第 1 版 人民邮电出版社 2009 10 5 5 叶核亚 著 Java 程序设计实用教程 第 3 版 电子工业出版社 2010 2 6 6 耿祥义 张跃平 编著 Java 面向对象程序设计 一北京 清华大学出版社 2010 1 广东海洋大学本科生课程设计报告 18 附 录 关键代码 1 音乐解码函数 音乐解码函数 decodeMusic 解析 由于 java applet 播放声音 对应的格式只有一些原始格式如 au Wav Midi rfm 格式 因此一下的解码函数就非常必要了 即将 MP3 等其它格式文件的音频等格式修改成系统能 够实现的格式 并写入内存由此来实现播放功能 详细实现请阅读如下代码 public void decodeMusic AudioInputStream in 开始解码 MP3 AudioFormat format in getFormat AudioFormat decodedFormat new AudioFormat AudioFormat Encoding PCM SIGNED 音频编码技术 format getSampleRate 每秒的样本数 16 每个样本中的位数 format getChannels 声道数 单声道 1 个 立体声 2 个 等等 format getChannels 2 每帧中的字节数 format getSampleRate false 每秒的帧数和是否以 big endian 字节顺序存储单个样本中的数据 然后重新获取一个新的输入流 AudioInputStream decodeIn AudioSystem getAudioInputStream decodedFormat in 源数据行是可以写入数据的数据行 它充当其混频器的源 应用程序将音频字节写入源数 据行 这样可处理字节缓冲并将它们传递给混频器 混频器可以将这些样本与取自其他源的样本混合起来 然后将该混合物传递到输出端口之 类的目标 它可表示声卡上的音频输出设备 SourceDataLine sdl null 然后 DataLine Info info new DataLine Info SourceDataLine class decodedFormat try AudioSystem 类充当取样音频系统资源的入口点 此类允许查询和访问安装在系统上 的混频器 sdl SourceDataLine AudioSystem getLine info sdl open decodedFormat catch Exception e 广东海洋大学本科生课程设计报告 19 e printStackTrace 指示该行是否支持特定类型的控件 if sdl isControlSupported FloatControl Type PAN FloatControl 对象提供对浮点值范围的控制 FloatControl pan FloatControl sdl getControl FloatControl Type PAN if curPosition Position RIGHT pan setValue 1 0f else if curPosition Position LEFT pan setValue 1 0f sdl start int nBytesRead 0 byte abData new byte EXTERANAL BUFFER SIZE try while nBytesRead 1 文件流的读写 nBytesRead decodeIn read abData 0 abData length if nBytesRead 0 sdl write abData 0 nBytesRead catch Exception e e printStackTrace return finally 通过在清空数据行的内部缓冲区之前继续数据 I O 排空数据行中的列队数据 sdl drain sdl close 广东海洋大学本科生课程设计报告 20 2 播放线程类 播放线程类 class PlayThread 解析 本播放器只使用一个线程来实现歌曲播放的功能 若用户要更换歌曲或者停止音乐 则 对线程重建 即杀死原线程再建立新的线程 其实现的效果还是跟原来线程一样 同时此线程包含 了许多子功能 如更改播放模式 对 上一首 下一首 显示 正在播放 等功能均在此线程上 实现 详细内容请阅读如下代码 class PlayThread extends Thread public void run while true try setInitShowing 初始化滚动条以及计时 label 的值 isStop true 标志状态 说明是停止了 filename String nameVector get chosenIndex toString 取 chosenIndex 对 应的歌曲名称 filepath String urlVector get chosenIndex toString 取 chosenIndex 对应 的歌曲路径 System out println 我在播放 chosenIndex filename 后台输出检测 设置 正在播放 的值 只输出前 23 个字符 以免超出长度 后面补 String showName null if filen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论