Java Jlayer Mp3 Player - 如何重复和停止歌曲

标签 java netbeans mp3 jlayer

<分区>

我的 mp 3 播放器有问题。我正在使用 jLayer。 这是我的代码

private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  

new Thread (){
  public void run(){  
          try
{

Player prehravac;
 FileInputStream buff = new FileInputStream(Okno.filename);
            prehravac = new Player(buff);
            prehravac.play();
            if (prehravac != null)
            {
                prehravac.play();
            }
            }
catch(Exception e)
        {

        } 
         }

}.start();
 }  

在我的应用程序中,我需要从头到尾播放歌曲。所以当歌曲结束时我需要重新开始它,当窗口关闭时我想停止这首歌......

最佳答案

JLayer 不支持连续播放,老播放器播放完后需要循环反复启动新播放器。例如:

尝试 { 做 { FileInputStream buff = new FileInputStream(Okno.filename); prehravac = new AdvancedPlayer(buff); prehravac .play(); }而(循环); } catch (异常ioe) { //TODO错误处理 }

loop 是一个 boolean 值,您可以使用不同的方法设置 true 或 false,具体取决于您是希望它只播放一次还是重复播放。

如果你想稍后访问线程,你至少应该将它声明为一个变量。更好的是编写一个单独的类来扩展线程。这样做,您可以将方法添加到稍后可以调用的线程。

对于您的代码,它可能看起来像这样:

import java.io.*;
import javazoom.jl.player.*;

public class MyAudioPlayer extends Thread {

    private String fileLocation;
    private boolean loop;
    private Player prehravac;

    public MyAudioPlayer(String fileLocation, boolean loop) {
        this.fileLocation = fileLocation;
        this.loop = loop;
    }

    public void run() {

        try {
            do {
                FileInputStream buff = new FileInputStream(fileLocation);
                prehravac = new Player(buff);
                prehravac.play();
            } while (loop);
        } catch (Exception ioe) {
            // TODO error handling
        }
    }

    public void close(){
        loop = false;
        prehravac.close();
        this.interrupt();
    }
}

有了它,您可以随时随地像这样简单地创建线程:

private MyAudioPlayer thePlayer;

    [... some class code here...]

    public void yourMethod(){
        thePlayer = new MyAudioPlayer("path of the music file", true);
        thePlayer.start();
    }

如果您想在某个时候摆脱它,请调用 thePlayer.close(); 请注意,thePlayer 应该是一个实例变量,以便您可以再次使用它。如果你只在一个方法中声明它,它会在方法结束后消失。

希望这对您有所帮助。

关于Java Jlayer Mp3 Player - 如何重复和停止歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032381/

相关文章:

Android - 从 byte[] 数组播放 mp3

Java 频谱图图像 : mp3 and microphone

java - 使用 JPA 创建多个对象

java - 无法运行路径设置为 Java 6 的 Grails 2.1

java - 有什么方法可以让 Netbeans 在 Maven 项目中编译和保存类吗?

java - 无法将 EJB 模块部署到 Glassfish

java - Spring 事务中 REQUIRES_NEW 和 NESTED 传播行为的差异

java - nextLine 忽略输入,但 next() 不忽略 - 为什么我要清除扫描仪?

java - JTree:有人能找出这段代码有什么问题吗

java - 在 Java 中清理文件名