首页 > 编程语言 >使用java实现音乐播放

使用java实现音乐播放

时间:2023-04-13 21:12:29浏览次数:43  
标签:java void 音乐 bgm 暂停 播放 public

使用java实现音乐播放的具体代码

  1. 调用有参构造器,构造器中传入需要播放的音乐路径,文件需要是.wav格式
  2. 调用start方法播放音乐,设置为从头开始循环播放
  3. 暂停调用pause方法暂停,暂停保存当前播放进度的毫秒值
  4. 继续播放调用recommence方法,会读取刚才保存的音乐播放进度的毫秒值
  5. 调用stop方法暂停播放,关流
点击查看代码
import javax.sound.sampled.*;
import java.io.File;
/**
 * @ClassName AudioPlay
 * @Description TODO
 * @Author 阡陌
 * @Date 2023/4/13 20:27
 * @Version 1.0
 * @PackageName com.itheima.Test
 */

public class AudioPlay {
    //音频文件输入流
    private  AudioInputStream aio;
    //控制器
    private Clip bgm;
    //在暂停和继续音乐时保存文件的毫秒数
    private Long microsecondPosition;

    private AudioPlay(){};
    /*
        构造器,传入要播放的音乐地址
        filePath=音频文件的地址,用于创建file对象,以及后续的音频流对象
     */
    public AudioPlay(String filePath) {
        try {
            //创建音频对象
            this.bgm=AudioSystem.getClip();
            //创建流
            this.aio = AudioSystem.getAudioInputStream(new File(filePath));
            //开启流
            bgm.open(aio);
        } catch (Exception e) {
            System.err.println("音频文件初始化失败");
        }
    }
    /**
        播放音乐
     */
    public void start(){
        //播放音乐
        bgm.setMicrosecondPosition(0);
        bgm.start();
        bgm.loop(Clip.LOOP_CONTINUOUSLY);
    }

    /**
        暂停音乐
     */
    public void pause(){
        //保存当前时间点
       microsecondPosition= bgm.getMicrosecondPosition();
       //暂停音乐
       bgm.stop();
    }
    /**
        继续播放
     */
    public void recommence(){
        //设置上一次暂停位置的毫秒值
        bgm.setMicrosecondPosition(microsecondPosition);
        //从设置位置继续播放
        bgm.start();
    }
    /**
        结束播放
     */
    public void stop(){
        //中断播放
        bgm.stop();
        //关闭流
        bgm.close();
    }

}

标签:java,void,音乐,bgm,暂停,播放,public
From: https://www.cnblogs.com/shmilyqaq/p/17316394.html

相关文章

  • JAVAWEB-项目搭建准备工作八步骤-2023-04-13
    第一步:生成一个javamavenweb项目第二步:配置TOMCAT第三步:测试项目是否可以跑起来第四步:导入maven各个jar包+增加build解决资源导出问题<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://ww......
  • Java面试题
    面试题面向过程和面向对象的区别面向过程和面向对象的主要区别在于思想方式和实现方法。面向过程重视步骤和函数,通过分解问题并设计函数来解决问题;面向对象则更注重对象和类之间的关系,将程序中的各种元素组织成一个有机整体,在实现上更加灵活和可扩展。同时,面向对象的程序具......
  • java数据类型
    标志符标志符就是类名、方法(函数)名、变(常)量名、包名等的名字。Java规定,标识符是由字母、下划线(“”)或美元符“$”)开头,后面跟0个或多个字母、下划线(“”)、美元符(“$”)或数字组成的符号序列。根据此定义,下列单词都是合法的标识符:icountnumdayScollLock$a789a89J......
  • java -- 线程
    线程与进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:是进程中的一个执行单元,负责当前进程中程序的执......
  • Java POI 拆分excel单元格并填充内容
    publicvoidtest(Sheetsheet){intnumMergedRegions=sheet.getNumMergedRegions();for(intz=0;z<numMergedRegions;z++){CellRangeAddressmerge=sheet.getMergedRegion(z);//System.out.println("Numbe......
  • 【Java】wait、await、sleep的区别和联系
     (200条消息)Java之wait、await、sleep的区别和联系_javawait和await区别_wotu__的博客-CSDN博客 一、wait()notify()notifyAll()调用wait()使得线程等待某个条件满足,线程在等待时会被挂起,当其他线程运行时使得这个条件满足时,其他线程会调用notify()或者notifyAll()来唤......
  • Java | 一分钟掌握JDK命令行工具 | 2- 分类
     作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我!JDK命令行工具分类命令行工具按照功能可以分为以下几个重要的大类:主要工具主要工具是用来完成主要工作的(废话),比如:编译、反编译、打包等等,以下是常见的:javac:您可以使用......
  • Java GC基础知识
    1对象存活判断1.1引用计数在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的引用计数法的缺陷:publicclassReferenceCountingGC{publicObjectinstance=null;priv......
  • Java基础
    cmd打开Java代码//代码编译javacHello.java//运行编译码javaHelloJDK、JRE和JVM的关系JDK=JRE+开发工具集(如Javac、java编译工具等)JRE=JVM+JavaSE标准类库只测试只需要JRE即可Java八大数据类型数据转换自动转换规则容量大的类型能......
  • 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并
    场景目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca等。1、SRShttps://github.com/ossrs/srs2、EasyDarwinhttps://github.com/EasyDarwin/EasyDarwin3、Monibucahttps://github.com/Monibuca4、ZLMediaKithttps://github.co......