1
resposta

Reprodutor de música com JAVA 2025

Boa tarde pessoal, o desafio do curso não era esse, mas achei bem interessante a parte de aúdio do Java e decidi criar um pequeno programa para explorar essa parte.

OBS:
1 - O java por padrão não reproduz aúdio no formato MP3, tem que ser WAV.
2 - Eu criei uma pasta na raiz do projeto chamada "resources" e coloquei o arquivo lá dentro.

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import java.io.File;
import java.util.Scanner;

public class ReprodutorSom {

    private Clip clip;
    private String status;

    public ReprodutorSom() {
        try {
            carregarAudio();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        exibirMenu();
    }

    private void carregarAudio() {
        try {
            // Busco o arquivo que será executado.
            File arquivo = new File("resources/oceans.wav").getAbsoluteFile();

            // Atribuo o arquivo ao Input de audio.
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(arquivo);

            // Inicializo a classe responsável pela reprodução.
            clip = AudioSystem.getClip();

            // Abre o aúdio para ser tocado.
            clip.open(audioInputStream);
        } catch (Exception ex) {
            IO.println("Erro ao carregar o áudio: " + ex.getMessage());
        }
    }

    private void exibirMenu() {
        try (Scanner scanner = new Scanner(System.in)) {
            int opcao = 0;
            while (opcao != 4) {
                IO.println(
                        """
                                1 - Play
                                2 - Pause
                                3 - Stop
                                4 - Exit""");
                IO.print("Digite sua opção: ");
                opcao = scanner.nextInt();
                acaoEscolha(opcao);
            }
        }
    }

    private void acaoEscolha(int opcao) {
        switch (opcao) {
            case 1 -> play();
            case 2 -> pause();
            case 3 -> stop();
            default -> IO.println("Opção inválida!");
        }
    }

    private void play() {
        // Executa o audio.
        clip.start();
        status = "PLAY";
    }

    private void pause() {
        // Caso a música já esteja pausada, não faz nada.
        if (this.status.equals("PAUSED")) return;
        clip.stop();
        status = "PAUSED";
    }

    private void stop() {
        if (this.status.equals("STOPPED")) return;
        clip.stop();
        clip.close();
        status = "STOPPED";
        this.carregarAudio();
    }

}

Na minha classe Main, só preciso instanciar o objeto:

void main() {
    ReprodutorSom reprodutor = new ReprodutorSom();
}

Achei bem legal mexer com essa parte de som e decidi compartilhar com vocês, toda dica é sempre bem vinda.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Muito boa a tua ideia, tenta dividir mais o teu código e criar mais uma classe e uma interface para criar metodos e sempre deixa as funções como public, assim tu consegue privar os atributos e so modificar eles com base nas funções e nas regras que tu estabelecer.