JavaのAudioSystemの曲が終了する前に、繰り返しのループを防ぎます

warherolion:

私は、彼らが利用できる曲のリストのうち、再生すると、曲が終わる一度ユーザーを一つ選択した後に、それは彼らが再び再生したい曲をユーザに要求する曲をユーザーに求められますプログラムを持っています。私の質問は、私は、彼らが選択した曲が終了するまで、彼らは繰り返しませんので、再生したい曲をユーザに尋ねるからループを防ぐどうすればよいのですか?

public class Main {
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String[] pathnames;
    File MusicFileChosen;
    String musicDir;
    boolean songComplete = false;

    pathnames = ProgramMap.musicDir.list();

    // Print the names of files and directories
    for (int ListNum = 0; ListNum < pathnames.length; ListNum++) {
        System.out.println(ListNum + 1 + ". " + pathnames[ListNum]);
    }


   for (int playlistLength = 0; playlistLength < pathnames.length; playlistLength++){
        if (!songComplete) {
            System.out.println("Which Song would you like to play?");
            int musicChoice = input.nextInt();
            musicDir = ProgramMap.userDir + "\\src\\Music\\" + pathnames[musicChoice - 1];
            MusicFileChosen = new File(musicDir);
            PlaySound(MusicFileChosen, pathnames[musicChoice - 1]);

        }
    }
}
public static void PlaySound(File sound, String FileName){
    try{
        // Inits the Audio System
        Clip clip = AudioSystem.getClip();

        AudioInputStream AudioInput = AudioSystem.getAudioInputStream(sound);

        //Finds and accesses the clip
        clip.open(AudioInput);

        //Starts the clip
        clip.start();

        System.out.println("Now Playing " + FileName);

        clip.drain();


    }catch (Exception e){
        System.out.println("Error playing music");
    }
}
}
フィルFreihofner:

あなたは使用することができLineListenerをその後、登録しをリッスンLineEvent.Type.CLOSE

ところで、あなたは使用することをお勧めするかもしれないSourceDataLineよりClipそうでないかもしれない大したことが、あなたはコード化されたもの、ファイルのサイズ、あなたがクリップを開いて、メモリに完全なファイルをロードするたびに応じて、可聴遅れがある可能性が与えられた(これは、缶を再生する前に完了する必要があります開始)。SourceDataLineほとんどすぐに(プレーを開始する前にのみ負荷1のバッファ)を再生開始し、唯一の代わりにサウンドファイル全体のメモリの一つのバッファを消費します。

新しく追加された多くの人々がjavax.sound.sampled使用しての警戒しているSourceDataLineが、それは本当にはるかに難しいコードに比べてではないClip、とあなたが表示されている使用のために、それはより良いフィット感だろう。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=364873&siteId=1