java播放声音类和一个简单示例
播放声音的类
importjava.io.File;
importjava.io.IOException;
importjavax.sound.sampled.AudioFormat;
importjavax.sound.sampled.AudioInputStream;
importjavax.sound.sampled.AudioSystem;
importjavax.sound.sampled.DataLine;
importjavax.sound.sampled.SourceDataLine;
//播放声音的类
publicclassPlaySoundsextendsThread{
privateStringfilename;
publicPlaySounds(Stringwavfile){
filename=System.getProperty("user.dir")+wavfile;
}
publicvoidrun(){
FilesoundFile=newFile(filename);
AudioInputStreamaudioInputStream=null;
try{
audioInputStream=AudioSystem.getAudioInputStream(soundFile);
}catch(Exceptione1){
e1.printStackTrace();
return;
}
AudioFormatformat=audioInputStream.getFormat();
SourceDataLineauline=null;
DataLine.Infoinfo=newDataLine.Info(SourceDataLine.class,format);
try{
auline=(SourceDataLine)AudioSystem.getLine(info);
auline.open(format);
}catch(Exceptione){
e.printStackTrace();
return;
}
auline.start();
intnBytesRead=0;
//这是缓冲
byte[]abData=newbyte[512];
try{
while(nBytesRead!=-1){
nBytesRead=audioInputStream.read(abData,0,abData.length);
if(nBytesRead>=0)
auline.write(abData,0,nBytesRead);
}
}catch(IOExceptione){
e.printStackTrace();
return;
}finally{
auline.drain();
auline.close();
}
}
}
下面是一个java播放声音的应用程序,可以单次播放声音、循环播放声音
MusicPalymyMusicPlay=newMusicPlay(getClass().getResource("/music/button.wav"));
myMusicPlay.start();//播放一次
myMusicPlay.stop();//停止
myMusicPlay.continuousStart();//循环播放
myMusicPlay.continuousStop();//停止
//文件名:MuiscPlay.java
importjava.io.*;
importjava.net.URL;
importsun.audio.*;
/**
*
*@authorwuhuiwen
*播放音频文件,产生音效
*/
publicclassMusicPlay{
privateAudioStream as;//单次播放声音用
ContinuousAudioDataStreamcas;//循环播放声音
//构造函数
publicMusicPlay(URLurl)
{
try{
//打开一个声音文件流作为输入
as=newAudioStream(url.openStream());
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
//一次播放开始
publicvoidstart()
{
if(as==null){
System.out.println("AudioStreamobjectisnotcreated!");
return;
}else{
AudioPlayer.player.start(as);
}
}
//一次播放停止
publicvoidstop()
{
if(as==null){
System.out.println("AudioStreamobjectisnotcreated!");
return;
}else{
AudioPlayer.player.stop(as);
}
}
//循环播放开始
publicvoidcontinuousStart()
{
//CreateAudioDatasource.
AudioDatadata=null;
try{
data=as.getData();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
//CreateContinuousAudioDataStream.
cas=newContinuousAudioDataStream(data);
//Playaudio.
AudioPlayer.player.start(cas);
}
//循环播放停止
publicvoidcontinuousStop()
{
if(cas!=null)
{
AudioPlayer.player.stop(cas);
}
}
}
相关文章
- java cglib_CGlib简单介绍
- java 怎样卸载一个类_Java 动态卸载类[通俗易懂]
- java数组排序去重_JAVA数组去重排序
- java从入门到精通_Java 入门到精通的过程
- java笔试题_一道简单的 Java 笔试题,但值得很多人反思
- java实现编译器_实现一个简单的编译器
- java工作流_Java 实现简单工作流
- java图书馆新地址_值得你关注的16个顶级 Java 开源项目!小白必看
- Java学习day086 部署Java程序(三)(applet:一个简单的applet、applet HTML标记属性、使用参数向applet传递信息)
- eclipse创建一个java项目目录_Eclipse创建JAVA项目
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java网页安全提示_win7系统打开网页提示“应用程序已被JAVA安全阻止”的解决方法…
- java常量池在方法区还是堆_JAVA常量池
- rtsp 获取视频流 java_Java获取rtsp视频流,实现rtsp流预览功能,并将视频流每帧保存成图片…
- 【Java技术指南】「Unirest编程专题」一起认识一下一个“灰常”优秀的Http工具,让Http开发变得如此简单
- Java一个简单的线程池实现详解编程语言
- Java连接PostgreSQL数据库详解编程语言
- java JNative 一个最简单的示例代码详解编程语言
- java截屏简单例子详解编程语言
- Java学习笔记之四java进制转化详解编程语言
- Linux环境下编译Java程序的指南(linux编译java)
- 服务Linux启动Java服务:一步步去完成(linux启动java)
- Java封装MySQL让编程更简单(java封装mysql)
- 使用Java连接Linux服务器的简单方法(java连接linux)
- Linux下快速安装Java开发环境(linux安装java)
- Java连接Oracle实现简单快捷的数据传输(java联结oracle)
- 收购Oracle收购Java重新定义软件开发未来(java被oracle)
- java使用线程做的一个简单的ATM存取款实例代码