JAVA监听录音器软件设计_第1页
JAVA监听录音器软件设计_第2页
JAVA监听录音器软件设计_第3页
JAVA监听录音器软件设计_第4页
JAVA监听录音器软件设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、佛山科学技术学院佛山科学技术学院可视化编程技术可视化编程技术课程设计报告课程设计报告监听录音器软件设计监听录音器软件设计学生姓名:陈家辉学生姓名:陈家辉学学号:号:2012914224年级专业:年级专业:12 级教育技术学级教育技术学 2 班班指导老师:指导老师:容汝佳容汝佳学学院:院:教育科学学院教育科学学院广东佛山提交日期:2014 年 6 月1目目录录1 1前言前言3 32 2概要设计概要设计3 32.12.1 课程设计目的课程设计目的 3 32.22.2 开发环境开发环境3 32.32.3 录音器功能录音器功能4 42.42.4 界面设计界面设计4 42.42.4 系统结构图系统结构图

2、5 53.3.详细设计详细设计 5 53.13.1 主程序主程序 RECORDPLAY.JAVARECORDPLAY.JAVA 5 53.23.2 载入线程载入线程 SPLASHTHREAD.JAVASPLASHTHREAD.JAVA13133.33.3 载入线程载入线程 SPLASHWINDOW.JAVASPLASHWINDOW.JAVA14144 4 设计总结设计总结151521.1.前言前言随着科学技术的不断发展, 计算机已经成为我们工作学习和生活中不可缺少的工具。 文本编辑器是个人计算机最司空见惯的应用程序了, 在学习了Java语言之后, 我决定使用Java语言编写一个监听录音器软件,

3、 可以实现简单的监听录音功能, 满足日常基本的工作学习和娱乐需要。Java 是由 Sun 公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、 任一种操作系统的网络环境中运行的软件, 实行所谓的 “程序写一次, 到处运行”的目标。 正因为如此, Java 已成为当今 Internet 上最流行、 最受欢迎的一种程序开发语言。Java 开发小组把 Java 按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java 基本版本叫 Java 2 标准版(Java 2 Standard Edition,J2SE),它包含建立 Java应用程序或者是 Applet 所需的应

4、用程序编程接口 (API) 。 Java 2 移动版 (The Java 2 MobileEdition,J2ME)包含创建无线 Java 应用程序的 API。还有 Java 2 企业版(The Java 2Enterprise,J2EE)是 J2SE 的增强版本,包含建立多层架构应用程序 API。Java 语言是由 C+语言发展起而来的, 是一种彻底的面向对象的程序设计语言。 作为一种纯面向对象的程序设计语言, 它非常适合大型软件的开发。 Java 语言去掉了 C+语言的一些容易引起错误的特性。Java 语言的特点有:面向对象,跨平台,安全性,多线程和图形功能强。关键字:Java录音,录音类

5、,监听录音器2.2.概要设计概要设计2.12.1 课程设计的目的课程设计的目的1、设计一个带有载入页面和有录音,停止,播放功能的监听录音器。这个小软件能方便我们的使用和操作,为我们以后的使用创造一个良好的平台。2、 把自己所学的理论知识运用到实际操作中去, 以此来发现自己的不足, 及时的改正。在实际操作中学习以及运用还没有学过的知识。最后还可以在调试中提升自己。2.2 开发环境开发环境开发平台:Microsoft Windows XP Professional Service Pack 2开发工具:JBuilder 2007 + JDK 1.6.0_0232.3 监听录音器功能监听录音器功能功

6、能 1:有个载入界面,显示正在加载监听录音器程序和一张图片功能 2:按下“录音”按钮,程序注册录音事件功能 3:当按下“录音”按钮, “停止”按钮就能控制,按下此按钮录音停止功能 4:按“播放”按钮 ,播放刚刚录制的声音功能 5:按下“保存按钮”键,声音被保存到 D 盘2.42.4 界面设计界面设计图 2.3 载入界面4图 2.4 程序界面2.5 系统系统结构图结构图3 详细设计详细设计系 统 有 主 程 序 类 RecordPlay 类 和 两 个 载 入 线 程 类 SplashThread 和SplashWindow 类3.13.1 主程序主程序 RecordPlay.java:Reco

7、rdPlay.java:package RecordPlay;import java.awt.Color;import java.awt.Container;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.InputStream;import javax.swing.*;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.eve

8、nt.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.sound.sampled.AudioFileFormat;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;主界面选 择 “ 录音”停止播放保存打开程序,运行主界面5import javax.sound

9、.sampled.DataLine;import javax.sound.sampled.SourceDataLine;import javax.sound.sampled.TargetDataLine;public class RecordPlay extends JFrameboolean stopCapture = false; /控制录音标志AudioFormat audioFormat; /录音格式/读取数据:从 TargetDataLine 写入 ByteArrayOutputStream 录音ByteArrayOutputStream byteArrayOutputStream;

10、int totaldatasize = 0;TargetDataLine targetDataLine;/播放数据:从 AudioInputStream 写入 SourceDataLine 播放AudioInputStream audioInputStream;SourceDataLine sourceDataLine;public RecordPlay()/创建按钮final JButton captureBtn = new JButton(录音);final JButton stopBtn = new JButton(停止);final JButton playBtn = new JBut

11、ton(播放);final JButton saveBtn = new JButton(保存);captureBtn.setEnabled(true);stopBtn.setEnabled(false);playBtn.setEnabled(false);saveBtn.setEnabled(false);/注册录音事件captureBtn.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e)captureBtn.setEnabled(false);stopBtn.set

12、Enabled(true);playBtn.setEnabled(false);saveBtn.setEnabled(false);/开始录音capture(););add(captureBtn);/注册停止事件stopBtn.addActionListener(new ActionListener()6Overridepublic void actionPerformed(ActionEvent e)captureBtn.setEnabled(true);stopBtn.setEnabled(false);playBtn.setEnabled(true);saveBtn.setEnabled

13、(true);/停止录音stop(););add(stopBtn);/注册播放事件playBtn.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e)/播放录音play(););add(playBtn);/注册保存事件saveBtn.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e)/保存录音capture(););add(captureBtn);

14、/注册停止事件stopBtn.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e)captureBtn.setEnabled(true);stopBtn.setEnabled(false);7playBtn.setEnabled(true);saveBtn.setEnabled(true);/停止录音stop(););add(stopBtn);/注册播放事件playBtn.addActionListener(new ActionListener()Overridepubl

15、ic void actionPerformed(ActionEvent e)/播放录音play(););add(playBtn);/注册保存事件saveBtn.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e)/保存录音save(););add(saveBtn);/注册窗体关闭事件addWindowListener(new WindowAdapter()Overridepublic void windowClosing(WindowEvent e)System.exit

16、(0););/设置窗体属性Container con=getContentPane();con.setBackground(Color.blue);8setLayout(new FlowLayout();setTitle(12 教技 2 班陈家辉录音器);setSize(500,200);setVisible(true);/(1)录音事件,保存到 ByteArrayOutputStream 中private void capture()try /打开录音audioFormat = getAudioFormat();DataLine.Info dataLineInfo = new DataLin

17、e.Info(TargetDataLine.class, audioFormat);targetDataLine=(TargetDataLine)AudioSystem.getLine(dataLineInfo);targetDataLine.open(audioFormat);targetDataLine.start();/创建独立线程进行录音Thread captureThread = new Thread(new CaptureThread();captureThread.start(); catch (Exception e)System.exit(0);/(2)播放 ByteArra

18、yOutputStream 中的数据private void play()try /取得录音数据byte audioData = byteArrayOutputStream.toByteArray();/转换成输入流InputStreambyteArrayInputStream=newByteArrayInputStream(audioData);AudioFormat audioFormat = getAudioFormat();audioInputStream=newAudioInputStream(byteArrayInputStream,9audioFormat,audioData.l

19、ength/audioFormat.getFrameSize();DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class, audioFormat);sourceDataLine=(SourceDataLine)AudioSystem.getLine(dataLineInfo);sourceDataLine.open(audioFormat);sourceDataLine.start();/创建独立线程进行播放Thread playThread = new Thread(new PlayThread();playT

20、hread.start(); catch (Exception e)System.exit(0);/(3)停止录音public void stop()stopCapture = true;/(4)保存文件public void save()/取得录音输入流AudioFormat audioFormat = getAudioFormat();byte audioData = byteArrayOutputStream.toByteArray();InputStreambyteArrayInputStream=newByteArrayInputStream(audioData);audioInpu

21、tStream = new AudioInputStream(byteArrayInputStream,audioFormat,audioData.length/audioFormat.getFrameSize();/写入文件try File file = new File(D:/test.wav);10AudioSystem.write(audioInputStream,AudioFileFormat.Type.WAVE, file); catch (Exception e)/取得 AudioFormatprivate AudioFormat getAudioFormat()float sa

22、mpleRate = 16000.0F;/8000,11025,16000,22050,44100int sampleSizeInBits = 16;/8,16int channels = 1;/1,2boolean signed = true;/true,falseboolean bigEndian = false;/true,falsereturn new AudioFormat(sampleRate, sampleSizeInBits, channels,signed,bigEndian);public class PlayThread extends Threadbyte tempBu

23、ffer = new byte10000;public void run()try int cnt;/读取数据到缓存数据while (cnt = audioInputStream.read(tempBuffer, 0,tempBuffer.length) != -1)11if (cnt 0)/写入缓存数据sourceDataLine.write(tempBuffer, 0, cnt);/Block 等待临时数据被输出为空sourceDataLine.drain();sourceDataLine.close(); catch (Exception e)System.exit(0);public

24、class CaptureThread extends Thread/临时数组byte tempBuffer = new byte10000;Overridepublic void run()byteArrayOutputStream = new ByteArrayOutputStream();totaldatasize = 0;stopCapture = false;try /循环执行,直到按下停止录音按钮while (!stopCapture)/读取 10000 个数据int cnt = targetDataLine.read(tempBuffer, 0,tempBuffer.length

25、);if (cnt 0)/保存该数据byteArrayOutputStream.write(tempBuffer,0,cnt);totaldatasize += cnt;12byteArrayOutputStream.close(); catch (Exception e)e.printStackTrace();System.exit(0);public static void main(String args)new RecordPlay();3.23.2 载入线程载入线程 SplashThread.java:SplashThread.java:package RecordPlay;publ

26、ic class SplashThread extends ThreadSplashWindow fp;public SplashThread(SplashWindow fp)this.fp = fp;Overridepublic void run()while (gressBar.getValue() 20)gressBar.setValue(gressBar.getValue() + 1);tryThread.sleep(200); catch (InterruptedException ex)13fp.dispose();new RecordPlay();3.33.3 载入线程载入线程 SplashWindow.java:SplashWindow.jav

温馨提示

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

评论

0/150

提交评论