java中的for循环,避免一次播放音频文件

java中的for循环,避免一次播放音频文件,java,loops,for-loop,Java,Loops,For Loop,仅当我传递一个文件名时,此代码才起作用。如果通过调用此程序传递多个文件名,则两个音频文件同时播放。有没有可能让我一个接一个地打 我将此audio2文件称为以下文件 public static void Audio2(String filename) { // String filename = "chaithurest"; if (filename.equals("test1")) { String test1= System.getProperty("use

仅当我传递一个文件名时,此代码才起作用。如果通过调用此程序传递多个文件名,则两个音频文件同时播放。有没有可能让我一个接一个地打

我将此audio2文件称为以下文件

 public static void Audio2(String filename) {
    // String filename = "chaithurest";
    if (filename.equals("test1")) { 
        String test1= System.getProperty("user.dir")+"//test1.wav";
        filename = test1;
    }
    else if (filename.equals("test2")) { 
        String test2=System.getProperty("user.dir")+"//test2.wav";
        filename = test2;
    }
    else
        filename  = filename;
    try {
        InputStream in = new FileInputStream(new File(filename ));
        AudioStream audioStream = new AudioStream(in);
        AudioPlayer.player.start(audioStream);
    }
    catch (Exception e) {
        throw new RuntimeException(e);
    }
}

sun.audio.AudioPlayer
提供了一种
停止(InputStream)
方法。为了防止播放多个文件,您可以在
Audio2()
中添加一些逻辑,例如:

向类中添加
audioStream
成员,并在播放时进行设置:

if (!ARRAY.contains(filename)) {    
    Audio2(filename);
}
//在类中
静态音频流currentAudioStream=null;
公共静态void Audio2(字符串文件名){
//...
试一试{
如果(currentAudioStream!=null){
AudioPlayer.player.stop(音频流);
}
InputStream in=新文件InputStream(新文件(文件名));

currentAudioStream=new AudioStream(in);//使用wait()或delay停止几秒钟我不明白。如何将
2
文件名传递给只接受一个文件名的方法?我尝试了这一点。但它只播放第一个文件,而不播放第二个文件:(如果数组不包含文件名,它将通过传递文件名来调用音频。。如果数组包含多个值,则它会导致@Prashant建议的问题,一个选项是放入等待()。问题是,您需要知道程序运行前需要等待多长时间。这对您的测试来说很好(例如,您知道test1.wav的长度为20秒)但对未知文件不起作用。在当前设置中,您真正需要的是一种事件机制,它在一个文件播放完毕时发出信号,您可以移动到下一个文件。
 // In the class
 static AudioStream currentAudioStream = null;

 public static void Audio2(String filename) {
    //...
    try {
        if (currentAudioStream != null) {
           AudioPlayer.player.stop(audioStream);
        }
        InputStream in = new FileInputStream(new File(filename ));
        currentAudioStream = new AudioStream(in); // <= set member
        AudioPlayer.player.start(audioStream);
    }
    //...
 }
public static void Audio2(String filename) {
// String filename = "chaithurest";
if (filename.equals("test1")) { 
    String test1= System.getProperty("user.dir")+"//test1.wav";
    filename = test1;
}
else if (filename.equals("test2")) { 
    String test2=System.getProperty("user.dir")+"//test2.wav";
    filename = test2;
}
else
    filename  = filename;
try {
    InputStream in = new FileInputStream(new File(filename ));
    AudioStream audioStream = new AudioStream(in);
    AudioPlayer.player.start(audioStream);
     AudioPlayer.player.join(6000);
}
catch (Exception e) {
    throw new RuntimeException(e);
}
}