[java] 자바에서 랜덤으로 음악 재생하기

랜덤하게 음악을 재생하는 기능을 자바로 구현하려면 먼저 랜덤한 음악 파일을 선택한 뒤 해당 음악을 재생하는 방법을 구현해야 합니다. 아래는 해당 작업을 수행하는 방법에 관한 가이드입니다.

랜덤 음악 파일 선택

랜덤 음악 파일을 선택하기 위해 프로젝트 폴더에서 음악 파일들의 경로를 가져와야 합니다. Java에서는 이를 위해 파일과 디렉터리를 다루는데 사용되는 java.io.File 클래스를 활용할 수 있습니다.

아래는 폴더 내의 음악 파일들을 읽어오는 코드입니다.

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class MusicPlayer {
    private List<String> musicFiles;
    private Random random;

    public MusicPlayer(String folderPath) {
        musicFiles = new ArrayList<>();
        random = new Random();
        File folder = new File(folderPath);
        File[] files = folder.listFiles();
        for (File file : files) {
            if (file.isFile() && file.getName().endsWith(".mp3")) {
                musicFiles.add(file.getAbsolutePath());
            }
        }
    }

    public String getRandomMusic() {
        int index = random.nextInt(musicFiles.size());
        return musicFiles.get(index);
    }

    public static void main(String[] args) {
        MusicPlayer player = new MusicPlayer("/path/to/music/folder");
        String randomMusic = player.getRandomMusic();
        System.out.println("Now playing: " + randomMusic);
    }
}

위 코드는 지정된 폴더에서 .mp3 확장자를 가진 음악 파일들을 불러와 List에 저장한 후, getRandomMusic 메서드를 통해 랜덤 음악 파일을 선택합니다.

음악 재생

랜덤으로 선택된 음악 파일을 재생하기 위해서는 Java에서 지원하는 오디오 재생 라이브러리를 활용할 수 있습니다. 예를 들어, Java에서는 Java Sound API를 사용하여 음악 파일을 재생할 수 있습니다.

아래는 Java Sound API를 사용하여 음악을 재생하는 예제 코드입니다.

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.File;
import java.io.IOException;

public class MusicPlayer {
    // ... (이전 코드 생략)

    public void playMusic(String filePath) {
        try {
            File musicFile = new File(filePath);
            AudioInputStream audioInput = AudioSystem.getAudioInputStream(musicFile);
            Clip clip = AudioSystem.getClip();
            clip.open(audioInput);
            clip.start();
            Thread.sleep(clip.getMicrosecondLength() / 1000); // 재생이 끝날 때까지 대기
        } catch (UnsupportedAudioFileException | LineUnavailableException | IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        MusicPlayer player = new MusicPlayer("/path/to/music/folder");
        String randomMusic = player.getRandomMusic();
        System.out.println("Now playing: " + randomMusic);
        player.playMusic(randomMusic);
    }
}

이 코드는 선택된 음악 파일을 재생하는 playMusic 메서드를 구현하고 있습니다. 지정된 파일 경로로부터 AudioInputStream을 얻은 뒤, 이를 Clip에 열고 재생합니다.

마치며

이제 음악 파일을 랜덤하게 선택하여 재생하는 Java 프로그램을 작성하는 방법을 알아보았습니다. 원하는 폴더에 음악 파일을 넣고 위의 예제 코드를 참고하여 자신만의 음악 플레이어를 작성해 보세요!