运行时播放背景音乐

调用方法

     new Thread(()->{while(true) {playMusic();}}).start();// Lambda表达式
//      new Thread(new Runnable() {
//
//          @Override
//          public void run() {
//              while (true) {
//                  playMusic();
//              }
//          }
//      }).start();// 开启一个线程用来播放音乐

方法体

static void playMusic() {// 背景音乐播放try {AudioInputStream ais = AudioSystem.getAudioInputStream(new File("文件路径必须是绝对路径"));AudioFormat aif = ais.getFormat();final SourceDataLine sdl;DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);sdl = (SourceDataLine) AudioSystem.getLine(info);sdl.open(aif);sdl.start();FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN);// value可以用来设置音量,从0-2.0double value = 2;float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0);fc.setValue(dB);int nByte = 0;int writeByte = 0;final int SIZE = 1024 * 64;byte[] buffer = new byte[SIZE];while (nByte != -1) {nByte = ais.read(buffer, 0, SIZE);sdl.write(buffer, 0, nByte);}sdl.stop();} catch (Exception e) {e.printStackTrace();}}

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

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

新增暂停功能

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

 static void playMusic() {// 背景音乐播放try {AudioInputStream ais = AudioSystem.getAudioInputStream(new File("E:\\Eclipse\\学生管理系统\\src\\image\\测试2.wav"));AudioFormat aif = ais.getFormat();final SourceDataLine sdl;DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);sdl = (SourceDataLine) AudioSystem.getLine(info);sdl.open(aif);sdl.start();FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN);// value可以用来设置音量,从0-2.0double value = 2;float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0);fc.setValue(dB);int nByte = 0;int writeByte = 0;final int SIZE = 1024 * 64;byte[] buffer = new byte[SIZE];while (nByte != -1) {// 判断 播放/暂停 状态if(flag) {nByte = ais.read(buffer, 0, SIZE);sdl.write(buffer, 0, nByte);}else {nByte = ais.read(buffer, 0, 0);}}sdl.stop();} catch (Exception e) {e.printStackTrace();}}

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

static boolean flag = true;

Java中添加背景音乐【更新 播放/暂停】相关推荐

  1. Java 中添加背景音乐

    Java 中添加背景音乐 GUI 中添加背景音乐 添加循环播放的背景音乐 背景音乐音量调节 好了,以上主要是多放几个 关键词,方便能让需要的人都能搜到 以下就是可直接使用的方法, 之后按提示导包就 o ...

  2. Word处理控件Aspose.Words功能演示:使用 Java 在 Word 中添加或更新目录

    Word 文档中的目录(TOC) 为您提供了文档内容的概述.此外,它还允许导航到文档的特定部分.在本文中,将学习如何以编程方式处理 Word 文档中的目录.特别地,本文介绍了如何使用 Java 在 W ...

  3. java创建的窗口无法关闭_在Java中添加canvas后无法关闭窗口(Can't close window after adding canvas in Java)...

    在Java中添加canvas后无法关闭窗口(Can't close window after adding canvas in Java) public class Screen extends Ca ...

  4. Fedora 21 中添加及更新源的命令

    原文: Fedora 21 中添加及更新源的命令 fedora的软件源信息文件(*.repo)都是放在 /etc/yum.repos.d 目录下的.可以通过# ls -l /etc/yum.repos ...

  5. java soap 头_如何在Java中添加Soap标头

    我有一个来自oracle的NO.net Web服务,要访问,我需要添加soap标头.如何在Java中添加soap标头? Authenticator.setDefault(new ProxyAuthen ...

  6. UE4 学习记录八 给场景中添加背景音乐和动画音效,运动加速效果

    这只是用来记录我学习UE4过程的,可能帮不到你,先说声抱歉.为了防止误导他人,请勿转载,请勿转载,请勿转载. 本文的主题是给场景中添加背景音乐和动画的音效.总章目录(https://blog.csdn ...

  7. java 如何添加背景音乐_Java JFrame 中添加背景音乐方法

    在想让音乐开始播放的时候 调用该方法就可以,如:如果想在一打开JFrame的时候就播放,那么在JFrame的构造方法中添加该方法即可.以此类推. import java.applet.AudioCli ...

  8. java编写添加背景音乐代码_java代码中简单添加背景音乐(亲测有效)

    在做java贪吃蛇游戏课设时,想添加背景音乐,用了以下很简单的步骤即可完成,亲测有效哦! 调用方法: new Thread(()->{while(true) {Data.playMusic(); ...

  9. Android中添加背景音乐的两种方法

    前些天在尝试自己写一个Android小游戏--flybird 基本功能实现了,就想添加声音,然后上网查了查,大多是一样,可是用到我这,有些却不可以用,所以我还用了两种方法. 下面谈谈这两种方法. 方法 ...

最新文章

  1. 与年轻人的“要疯”五年,安踏如何保持新鲜感与吸引力?
  2. 1线程概念:线程和进程之间的关系,线程间可共享资源,线程间非共享资源,线程的优缺点
  3. 嵌入式成长轨迹34 【嵌入式学习阶段】【ARM环境调试】【QT 移植环境及简单程序示例】---补充《ok6410 Qt移植百科全书》...
  4. wav音量和分贝转换关系_Permute 3 for mac(音视频格式转换器) 最新版
  5. leetcode232. 用栈实现队列
  6. ajax应用中如何禁止缓存
  7. java如何用反射把具体方法抽象_如何在Java 中使用泛型或反射机制对DAO进行抽象...
  8. signature=d66576fde8d472a0c1dddd8b37be6b72,Signature process
  9. 为什么所请求的剪切操作失败_MIUI12.5上手体验:给操作系统做了点“加法”,为用户多加了层防护...
  10. ZigBee-CC2530单片机 - 1路硬件PWM控制舵机角度(精度为1us)
  11. 卡尔曼滤波器python_特征工程:利用卡尔曼滤波器处理时间序列(快速入门+python实现)...
  12. 调音台docker教程_Docker菜鸟教程 - Docker入门教程 - Docker基础教程 - 动力节点
  13. Java学习-基础篇(1)
  14. 第五届山东理工大学ACM网络编程擂台赛
  15. 必应每日一图php,轻量必应每日一图HTML源码
  16. 从0到1:朋友圈爆款背后的计算机视觉技术与应用 | 百万人学AI
  17. IOB寄存器的使用:IOB= TRUE 属性
  18. “京东红”托起“松石绿” 湖北十堰让世界发现中国珠宝之美
  19. java php python校园通知事项打卡 微信小程序系统
  20. H5 vue单页面 活体检测

热门文章

  1. Samba服务器搭建
  2. python算法:回文数
  3. 基金业的数字化转型:用户是第一突破口
  4. PyCharmMac键盘符
  5. 音视频开发---ffmpeg rtmp拉流
  6. HGST_DATA60 IOM固件更新方法
  7. 哪个品牌的运动耳机比较好、好用的运动耳机推荐
  8. Android之手机通知栏Notification的使用(二)
  9. python中zip()函数的用法_Python zip()函数用法实例分析
  10. 品达物流TMS项目_第12章 项目总结