package com.usc.base.Bgm;
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.FloatControl;
import javax.sound.sampled.SourceDataLine;
/**
*
* @author Sky_in_night
* @modification time 2017年12月24日下午11:08:29
* @fileName BaseBgm.java
* @packageName BaseBgm
* @projectName Calculator
* @className BaseBgm
*/
public class BaseBgm {
public BaseBgm() {
}
private static SourceDataLine sdl;// 音乐播放读取函数
private static boolean start = true;// 是否音乐开始播放
private static int STEP = 64;// 按多少byte读取音频文件
/**
* 播放音乐的函数,传入音频的地址
*
* @param fileurl
*/
public static void play_music(String fileurl) {
try {
AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));// 打开一个音频文件文件搜索
AudioFormat af = ais.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class, af);// 仿照百度。。。。。
sdl = (SourceDataLine) AudioSystem.getLine(info);
sdl.open(af);
sdl.start();// 开始播放,一次播放
FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN);
// value可以用来设置音量,从0-2.0
double value = 2;
float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0);
fc.setValue(dB);
int end = 0;// 用来判断此音频是否播放完毕
int size = 1024 * STEP;// 设置每次读取64kb的数据帧
byte[] buffer = new byte[size];
while (end != -1)// 当还没读取完继续读取
{
end = ais.read(buffer, 0, size);
if (end == -1)// 防止下溢
break;
sdl.write(buffer, 0, end);
}
start = false;
sdl.stop();// 结束播放
} catch (Exception e) {
e.printStackTrace();
}
}
// interrupt 结束线程的方法
public static void StopMusic() {
sdl.stop();
start = false;
sdl.close();
}
public static void PlayStart(String fileurl) {
/**
* 防止还有音乐还在播放
*/
if (sdl != null && sdl.isOpen()) {
sdl.stop();
sdl.close();
}
play_music(fileurl);
sdl.close();
}
public static void ChangeStart(String fileurl) {
if (start)
StopMusic();
start = true;
play_music(fileurl);
}
}
最近下载更多
阿远远 LV8
2019年12月12日
simple丶余心 LV21
2019年10月30日
dengss LV11
2019年5月10日
ZKsrw丶 LV4
2018年10月28日
caiyingwenwang LV18
2018年8月16日
陌上花开AAA LV4
2018年7月11日
Dvvvv123qwe LV6
2018年7月3日
hongdalao LV1
2018年5月4日
1165343269 LV1
2018年4月21日
yangbiao LV5
2018年4月13日

最近浏览