当前位置:   article > 正文

Java中添加背景音乐【更新 播放/暂停】_在java中怎么加入歌曲呢

在java中怎么加入歌曲呢

运行时播放背景音乐

 

调用方法

  1. new Thread(()->{while(true) {playMusic();}
  2. }).start();// Lambda表达式
  3. // new Thread(new Runnable() {
  4. //
  5. // @Override
  6. // public void run() {
  7. // while (true) {
  8. // playMusic();
  9. // }
  10. // }
  11. // }).start();// 开启一个线程用来播放音乐

 

方法体

  1. static void playMusic() {// 背景音乐播放
  2. try {
  3. AudioInputStream ais = AudioSystem.getAudioInputStream(new File("文件路径必须是绝对路径"));
  4. AudioFormat aif = ais.getFormat();
  5. final SourceDataLine sdl;
  6. DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);
  7. sdl = (SourceDataLine) AudioSystem.getLine(info);
  8. sdl.open(aif);
  9. sdl.start();
  10. FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN);
  11. // value可以用来设置音量,从0-2.0
  12. double value = 2;
  13. float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0);
  14. fc.setValue(dB);
  15. int nByte = 0;
  16. int writeByte = 0;
  17. final int SIZE = 1024 * 64;
  18. byte[] buffer = new byte[SIZE];
  19. while (nByte != -1) {
  20. nByte = ais.read(buffer, 0, SIZE);
  21. sdl.write(buffer, 0, nByte);
  22. }
  23. sdl.stop();
  24. } catch (Exception e) {
  25. e.printStackTrace();
  26. }
  27. }

 

在调用时使用while语句可以实现背景音乐循环播放,

 

-------------------------------------------------------------------------------------------------------------------------------------------

 

新增暂停功能

修改方法体,加入状态判断

  1. static void playMusic() {// 背景音乐播放
  2. try {
  3. AudioInputStream ais = AudioSystem.getAudioInputStream(new File("E:\\Eclipse\\学生管理系统\\src\\image\\测试2.wav"));
  4. AudioFormat aif = ais.getFormat();
  5. final SourceDataLine sdl;
  6. DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);
  7. sdl = (SourceDataLine) AudioSystem.getLine(info);
  8. sdl.open(aif);
  9. sdl.start();
  10. FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN);
  11. // value可以用来设置音量,从0-2.0
  12. double value = 2;
  13. float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0);
  14. fc.setValue(dB);
  15. int nByte = 0;
  16. int writeByte = 0;
  17. final int SIZE = 1024 * 64;
  18. byte[] buffer = new byte[SIZE];
  19. while (nByte != -1) {// 判断 播放/暂停 状态
  20. if(flag) {
  21. nByte = ais.read(buffer, 0, SIZE);
  22. sdl.write(buffer, 0, nByte);
  23. }else {
  24. nByte = ais.read(buffer, 0, 0);
  25. }
  26. }
  27. sdl.stop();
  28. } catch (Exception e) {
  29. e.printStackTrace();
  30. }
  31. }

 

之后在使用此方法的类中定义boolean用来指定状态即可

static boolean flag = true;

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/759672
推荐阅读
相关标签
  

闽ICP备14008679号