java播放声音类和一个简单示例

播放声音的类

复制代码 代码如下: 
import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;

//播放声音的类
public class PlaySounds extends Thread {

private String filename;
 public PlaySounds(String wavfile) {

filename = System.getProperty("user.dir")+wavfile;
 }
 public void run() {

File soundFile = new File(filename);

AudioInputStream audioInputStream = null;
  try {
   audioInputStream = AudioSystem.getAudioInputStream(soundFile);
  } catch (Exception e1) {
   e1.printStackTrace();
   return;
  }
  AudioFormat format = audioInputStream.getFormat();
  SourceDataLine auline = null;
  DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
  try {
   auline = (SourceDataLine) AudioSystem.getLine(info);
   auline.open(format);
  } catch (Exception e) {
   e.printStackTrace();
   return;
  }
  auline.start();
  int nBytesRead = 0;
  //这是缓冲
  byte[] abData = new byte[512];
  try {
   while (nBytesRead != -1) {
    nBytesRead = audioInputStream.read(abData, 0, abData.length);
    if (nBytesRead >= 0)
     auline.write(abData, 0, nBytesRead);
   }
  } catch (IOException e) {
   e.printStackTrace();
   return;
  } finally {
   auline.drain();
   auline.close();
  }
 } 
}

下面是一个java播放声音的应用程序,可以单次播放声音、循环播放声音

MusicPaly myMusicPlay = new MusicPlay(getClass().getResource("/music/button.wav")); 
myMusicPlay.start();//播放一次 
myMusicPlay .stop();//停止 
myMusicPlay .continuousStart();//循环播放 
myMusicPlay .continuousStop();//停止

复制代码 代码如下: 
// 文件名:MuiscPlay.java 
import java.io.*; 
import java.net.URL; 
import sun.audio.*;

/** 

* @author wuhuiwen 
* 播放音频文件,产生音效 
*/ 
public class MusicPlay { 
    private AudioStream  as; //单次播放声音用 
    ContinuousAudioDataStream cas;//循环播放声音 
    // 构造函数 
    public MusicPlay(URL url) 
    { 
        try { 
            //打开一个声音文件流作为输入 
            as = new AudioStream (url.openStream()); 
        } catch (FileNotFoundException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
    } 
    // 一次播放 开始 
    public void start() 
    { 
        if( as==null ){ 
            System.out.println("AudioStream object is not created!"); 
            return; 
        }else{ 
            AudioPlayer.player.start (as); 
        } 
    } 
    // 一次播放 停止 
    public void stop() 
    { 
        if( as==null ){ 
            System.out.println("AudioStream object is not created!"); 
            return; 
        }else{ 
            AudioPlayer.player.stop(as); 
        }        
    } 
    // 循环播放 开始 
    public void continuousStart() 
    { 
        // Create AudioData source. 
        AudioData data = null; 
        try { 
            data = as.getData(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        }

// Create ContinuousAudioDataStream. 
        cas = new ContinuousAudioDataStream (data);

// Play audio. 
        AudioPlayer.player.start(cas); 
    } 
    // 循环播放 停止 
    public void continuousStop() 
    { 
        if(cas != null) 
        { 
            AudioPlayer.player.stop (cas); 
        }    
    }

}

java播放声音类和一个简单示例相关推荐

  1. java读取ACCESS数据库的简单示例

    java读取ACCESS数据库的简单示例  虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试  先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1 ...

  2. JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...

  3. Java基础篇:一个简单的类

    让我们先从一个简单的例子来开始对类的研究.下面定义了一个名为box的类,它定义了3个实例变量:width,height和depth.当前,box类不包含任何方法(但是随后将增加一些). class B ...

  4. Spring MVC:使用基于Java的配置创建一个简单的Controller

    这是我博客上与Spring MVC相关的第一篇文章. 开端总是令人兴奋的,因此我将尽量简洁明了. Spring MVC允许以最方便,直接和快速的方式创建Web应用程序. 开始使用这项技术意味着需要Sp ...

  5. java 应用分模块_在Java 11中创建一个简单的模块化应用教程

    模块化编程使人们能够将代码组织成独立的,有凝聚力的模块,这些模块可以组合在一起以实现所需的功能. 本文摘自Nick Samoylov和Mohamed Sanaulla撰写的一本名为Java 11 Co ...

  6. java 分析类_java--分析简单java类与反射的联系

    分析简单java类与反射的联系 web对反射的操作支持 在JSP之中有一种技术--javaBean.而且在jsp里面也配套有相应的操作方式,javaBean的核心在于简单java类,于是下面演示此操作 ...

  7. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  8. Java 百度AI 写一个简单的手势识别程序

    教程地址:请关注我的https://edu.csdn.net/course/detail/23001 Java写一个简单的手势识别程序,这里采用百度是AI,视觉技术中的人体分析中的手势识别,识别图片中 ...

  9. java后台 flex前台例子_flex+blazeds+java后台消息推送(简单示例)

    现在有个问题需要大家思考一下,有个已经上线了的项目,有好好几千甚至上万的客户在使用了.现在项目开发商想发布一个通知.在今天下午6点需要重新启动服务器,想让在线的人在在预定的时间内都收到消息,让大家做好 ...

最新文章

  1. Linux开机详细流程
  2. CountDownLatch 的使用 || enum 枚举使用的小技巧
  3. 生成树协议实验报告_STP生成树协议
  4. 3 useReducer及其实现
  5. 创业成功需早起?看看IT大佬们的作息时间
  6. vmware workstation17环境安装centos7
  7. 网络编程之如何通过URL获取网页代码
  8. NOIP 2005 过河
  9. CCF201312-3 最大的矩形(解法二)(100分)(废除!!!)
  10. recurdyn和matlab联合仿真,基于RecurDyn与Simulink的液压破碎锤联合仿真与试验分析
  11. java 常用缓存描述
  12. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_11使用骨架创建maven的java工程...
  13. Qt编程之mapx组件编程
  14. 文件处理技巧,如何快速复制并覆盖已存在的文件
  15. 【数据结构与算法】之深入解析“金字塔转换矩阵”的求解思路与算法示例
  16. gitbook 使用粘自csdn
  17. java qq开发_Ubuntu用户的福音:基于Java开发的开源QQ客户端iQQ
  18. 什么是语音通知 / 语音短信 / 语音外呼?
  19. k1658停运_2020厦门停运动车车次整理
  20. FairLex A Multilingual Benchmark for Evaluating Fairness in Legal Text Processing

热门文章

  1. 国家电网人工智能专利数量排名竟然靠前,腾讯,百度都不如国家电网
  2. 转行AI需要看的一些文章
  3. win8 网络受限解决
  4. c语言怎么打开已经保存的文件,保存打开文件之后,怎么也不能在显示函数中出来。。...
  5. python 只取年月日 字符串_Python基础:数据类型和变量amp;字符串和编码
  6. 6G尚处于早期研究阶段,长足发展需要时间和耐心
  7. 苹果下半年推出M2芯片MacBook Air 配色更多更轻薄
  8. 支付宝、微信收款码明年3月1日起将禁止商用?系误读!
  9. 联发科发布天玑5G开放架构 采用该定制芯片终端7月上市
  10. 华为Mate X2再曝光:全新向内折叠方案 有望彻底消除折痕