Maison  >  Article  >  Java  >  Comment puis-je lire un fichier .WAV en cliquant sur un bouton dans mon application Java ?

Comment puis-je lire un fichier .WAV en cliquant sur un bouton dans mon application Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-14 11:20:02653parcourir

How can I play a .WAV file with a button click in my Java application?

Lecture de fichiers .WAV avec Java en un clic de bouton

Lors du développement d'applications Java, il est souvent nécessaire d'incorporer des effets sonores ou une lecture audio dans l’expérience utilisateur. Cet article montre comment émettre un court bip .wav lorsque vous cliquez sur un bouton.

Extrait de code pour la lecture de fichiers .WAV

L'extrait de code suivant fournit une solution détaillée à le problème :

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;

public class PlayWAVFileOnClick {

    private static final int BUFFER_SIZE = 128000;
    private File soundFile;
    private AudioInputStream audioStream;
    private AudioFormat audioFormat;
    private SourceDataLine sourceLine;

    public static void main(String[] args) {
        // Instantiate a new PlayWAVFileOnClick object
        PlayWAVFileOnClick player = new PlayWAVFileOnClick();

        // Specify the path to the .wav file
        String soundFilepath = "path/to/beep.wav";

        // Play the sound
        player.playSound(soundFilepath);

        // Close resources after playback
        player.closeResources();
    }

    public void playSound(String filename) {
        try {
            soundFile = new File(filename);
            audioStream = AudioSystem.getAudioInputStream(soundFile);
            audioFormat = audioStream.getFormat();
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
            sourceLine = (SourceDataLine) AudioSystem.getLine(info);
            
            sourceLine.open(audioFormat);
            sourceLine.start();
            
            byte[] data = new byte[BUFFER_SIZE];
            int readSize = 0;
            
            while ((readSize = audioStream.read(data)) != -1) {
                sourceLine.write(data, 0, readSize);
            }
            
        } catch (IOException | LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    public void closeResources() {
        try {
            sourceLine.drain();
            sourceLine.close();
            audioStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Explication

  • la méthode playSound(String filename) prend le chemin d'accès au fichier .wav en entrée et lit l'audio.
  • La méthode closeResources() ferme toutes les ressources utilisées pour la lecture audio, telles que le flux audio et la ligne source.
  • BUFFER_SIZE est spécifié pour plus d'efficacité afin d'éviter de créer trop de petits tampons pour la lecture audio.

Conclusion

Grâce à ce code, les développeurs Java peuvent facilement intégrer la lecture sonore .wav dans leurs applications, leur permettant d'améliorer l'expérience utilisateur avec des effets sonores et des notifications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn