首页>代码>java awt字体桌面淡入小程序>/FadeInFont/src/com/usc/base/Bgm/BaseBgm.java
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日
最近浏览更多
1112WHQ  LV7 2023年11月3日
Hachi6  LV13 2023年4月20日
xsxtxbb  LV8 2022年10月10日
kingoneyang  LV13 2022年5月18日
sephirex  LV5 2022年5月3日
liuyu-zui  LV4 2021年8月25日
wang277946486 2021年8月12日
暂无贡献等级
purplesun  LV1 2021年6月11日
1111qqwd  LV1 2021年2月2日
1194837897  LV5 2020年7月25日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友