java 实现循环播放wav文件
来源:互联网 发布:志村团藏 知乎 编辑:程序博客网 时间:2024/05/22 15:54
package com.hf.app.lucky.comm;
import java.io.File;
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;
import javazoom.jlgui.basicplayer.BasicPlayerEvent;
import com.hf.app.lucky.config.DesignPanelConfigTitle;
import com.hf.app.lucky.design.DesignPanelTitle;
public class PlayerWav {
// 播放器使用单例模式
private static PlayerWav instace = null;
public static PlayerWav getInstance() {
if (instace == null) {
instace = new PlayerWav();
}
return instace;
}
private PlayerWav() {
}
// PlayerCTL
private PlayerCTL playerCTL = null;
public PlayerCTL getPlayerCTL() {
if (playerCTL == null) {
playerCTL = new PlayerCTL();
}
return playerCTL;
}
// wav文件名
private String strSongFileName = null;
public String getSongFileName() {
return strSongFileName;
}
public void setSongFileName(String szSongFileName) {
if (strSongFileName == null) {
strSongFileName = new String(szSongFileName);
} else {
strSongFileName = szSongFileName;
}
}
public class PlayerCTL {
File wavFile = null;
// 打开文件
public void openSong(String strFileName) {
try {
wavFile = new File(getSongFileName());
} catch (Exception ex) {
ex.printStackTrace();
}
}
// 播放文件
public void play() {
try {
AudioInputStream ais = AudioSystem.getAudioInputStream(wavFile);
AudioFormat af = ais.getFormat();
SourceDataLine sdl = null;
DataLine.Info dinfo = new DataLine.Info(SourceDataLine.class,
af);
sdl = (SourceDataLine) AudioSystem.getLine(dinfo);
sdl.open(af);
byte[] lbytes = new byte[sdl.available()];
int lReadBytes = 0;
sdl.start();
while (lReadBytes != -1) {
lReadBytes = ais.read(lbytes, 0, lbytes.length);
if (lReadBytes > 0) {
sdl.write(lbytes, 0, lReadBytes);
}
}
// 是否持续播放
// 循环播放,只有在设置为循环播放时才使用循环播放功能
// 单次播放和不播放情况下均不进行循环动作
DesignPanelConfigTitle designPanelConfigTitle = DesignPanelTitle
.getInstance().getConfig();
int nPlayType = designPanelConfigTitle.getBakSndDisType();
switch (nPlayType) {
case LuckyChooserConst.SND_DIS_TYPE_DISVISIBLE:
break;
case LuckyChooserConst.SND_DIS_TYPE_SINGLE:
break;
case LuckyChooserConst.SND_DIS_TYPE_LOOP:
getPlayerCTL().openSong(getSongFileName());
getPlayerCTL().play();
break;
default:
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
public void playSong(String strFilePath) {
setSongFileName(strFilePath);
getPlayerCTL().openSong(getSongFileName());
getPlayerCTL().play();
}
}
- java 实现循环播放wav文件
- 实现播放WAV文件
- VC实现wav录音文件的播放
- java 播放wav格式语音文件
- Java实现播放wav格式的音乐文件
- 播放wav文件
- 播放WAV文件
- 播放WAV文件
- python 播放wav文件
- 播放 wav 文件
- gstreamer播放wav文件
- jmf 播放wav文件
- PSP播放wav文件
- linux 播放wav文件
- 如何播放 WAV 文件?
- IE 播放wav文件
- java.media类实现的可以播放WAV和MP3格式的文件
- JAVA 播放WAV格式文件
- Mantis Bug Tracker Administration Guide
- Activity/MessageQueue/Handler/Looper之间的关系
- Windows下动态内存分配方式
- Cygwin User's Guide
- JQuery实战:横向纵向菜单
- java 实现循环播放wav文件
- 语言的选择与方向的决定
- JXL
- JQuery实战:tab标签页
- [Three20] Three20 模組架構簡介(上)
- java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/TextUtils
- 系统集成项目管理工程师考试成绩出来了!
- Java 位运算符
- C++对象创建过程解密