Je travaille avec un SMS manipulation, Java logiciel basé et je veux jouer un bip/alerte chaque fois que nous recevons un message. J'ai essayé de regarder le Java bibliothèques .sound et je n'ai rien trouvé. Je ne sais pas si le mode applet de jouer un son sera correct dans une application Java! Y a-t-il des sons prédéfinis dans une Java que nous pouvons appeler dans une application? Tout pointeur sera apprécié!
Si vous voulez juste un bip ou une alerte rapide, essayez
Toolkit.getDefaultToolkit().beep();
Vous pouvez générer votre propre son si vous recherchez quelque chose de moins ennuyeux qu'un bip () sans fichier son externe.
import javax.sound.sampled.*;
public class SoundUtils {
public static float SAMPLE_RATE = 8000f;
public static void tone(int hz, int msecs)
throws LineUnavailableException
{
tone(hz, msecs, 1.0);
}
public static void tone(int hz, int msecs, double vol)
throws LineUnavailableException
{
byte[] buf = new byte[1];
AudioFormat af =
new AudioFormat(
SAMPLE_RATE, // sampleRate
8, // sampleSizeInBits
1, // channels
true, // signed
false); // bigEndian
SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
sdl.open(af);
sdl.start();
for (int i=0; i < msecs*8; i++) {
double angle = i / (SAMPLE_RATE / hz) * 2.0 * Math.PI;
buf[0] = (byte)(Math.sin(angle) * 127.0 * vol);
sdl.write(buf,0,1);
}
sdl.drain();
sdl.stop();
sdl.close();
}
public static void main(String[] args) throws Exception {
SoundUtils.tone(1000,100);
Thread.sleep(1000);
SoundUtils.tone(100,1000);
Thread.sleep(1000);
SoundUtils.tone(5000,100);
Thread.sleep(1000);
SoundUtils.tone(400,500);
Thread.sleep(1000);
SoundUtils.tone(400,500, 0.2);
}
}
Plus d'expériences sonores ici: Produire un effet sonore spécial
Vous pouvez jeter un œil à la méthode du bip dans la classe Toolkit, comme indiqué ici
La route de l'applet devrait être correcte (et très simple). Pour éviter de créer une instance d'applet, vous pouvez utiliser la méthode statique newAudioClip
, puis appeler play()
sur le AudioClip
créé.
URL url = getClass().getResource("/foo/bar/sound.wav");
AudioClip clip = Applet.newAudioClip(url);
clip.play();
Ici le sound.wav
le fichier est regroupé dans le fichier jar
dans le fichier foo/bar
package que vous créez. Une classe entièrement fonctionnelle (où le fichier wav
est dans le package sounds
) ressemblerait à ceci:
package sounds;
import Java.applet.Applet;
import Java.applet.AudioClip;
public class PlaySound {
public void PlayBeep() {
AudioClip clip = Applet.newAudioClip(getClass().getResource("/sounds/beep3.wav"));
clip.play();
}
}
Ici, le chemin d'accès est donné comme /sounds/
car lorsque vous extrayez le jar
, vous verrez que le fichier wav
se trouve dans le premier dossier du jar
, qui est sounds
.
Si vous souhaitez utiliser le package audio pour lire un fichier son arbitraire, vous pouvez utiliser le javax.sound.sampled
paquet. Voici le code qui jouera un fichier son:
privé void playSound (Fichier f) { Runnable r = nouveau Runnable () { Fichier privé f; public void run () { playSoundInternal (this.f); } public Runnable setFile (File f) { this.f = f; retourner ceci; } } .setFile (f); nouveau Thread (r) .start (); } privé vide playSoundInternal (Fichier f) { essayez { AudioInputStream audioInputStream = AudioSystem.getAudioInputStream (f); essayez { .] Clip clip = AudioSystem.getClip (); Clip.open (audioInputStream); Essayez { Clip.start (); Essayez { Thread.sleep (100); } Catch (InterruptedException e) { E.printStackTrace (); } clip.drain (); } enfin { clip.close (); } } catch (LineUnavailableException e) { e. printStackTrace (); } enfin { audioInputStream.close (); } } catch (UnsupportedAudioFileException e) { e.printStackTrace ( ); } catch (FileNotFoundException e) { e.printStackTrace (); } catch (IOException e) { e.printStackTrace (); } }