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.