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日