Je travaille avec un logiciel de gestion de SMS, basé sur Java et je veux jouer un bip/alerte sonore chaque fois que nous recevons un message. J'ai essayé de regarder les bibliothèques java.sound et je n'ai rien trouvé. Je ne sais pas si aller à l'applet façon de jouer un son sera bien dans une application Java! Existe-t-il des sons prédéfinis dans les bibliothèques Java que nous pouvons appeler dans une application? Tous les pointeurs seront appréciés!Comment jouer un son (alerte) dans une application java?
Répondre
Vous pouvez jeter un oeil à la méthode bip dans la classe de boîte à outils, comme le montre here
La route de l'applet doit être fine (et est très simple). Pour éviter de créer une instance d'applet, vous pouvez utiliser la méthode statique newAudioClip
, puis appeler le play()
sur le AudioClip
créé.
URL url = getClass().getResource("/foo/bar/sound.wav");
AudioClip clip = Applet.newAudioClip(url);
clip.play();
Si vous voulez utiliser le package audio pour lire un fichier son arbitraire, vous pouvez utiliser le package javax.sound.sampled
. Voici le code qui va jouer un fichier sonore:
private void playSound(File f) { Runnable r = new Runnable() { private File f; public void run() { playSoundInternal(this.f); } public Runnable setFile(File f) { this.f = f; return this; } }.setFile(f); new Thread(r).start(); } private void playSoundInternal(File f) { try { AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(f); try { Clip clip = AudioSystem.getClip(); clip.open(audioInputStream); try { clip.start(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } clip.drain(); } finally { clip.close(); } } catch (LineUnavailableException e) { e.printStackTrace(); } finally { audioInputStream.close(); } } catch (UnsupportedAudioFileException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
Pouvez-vous expliquer pourquoi nous avons besoin du thread pour dormir après avoir appelé clip.start()? – lucks
Cela fait un moment que j'ai écrit ce code, mais je suppose qu'il fonctionnerait probablement aussi bien avec un 'Thread.yield()'. –
Je parlais de pourquoi nous devons bloquer en premier lieu, mais je me suis rendu compte que c'est probablement parce que nous fermions la ligne avant qu'elle ne finisse de jouer – lucks
Vous pouvez générer votre propre son, si vous cherchez quelque chose de moins ennuyeux qu'un bip() sans fichier audio 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);
}
}
Des expériences plus sonores ici: Produce special sound effect
- 1. Comment jouer un son dans une application Web JSF?
- 2. Comment jouer un son en C#, .NET
- 3. Jouer un son pendant une certaine durée
- 4. Comment jouer iPhone Tap son?
- 5. Comment jouer un son sur l'iPhone
- 6. Jouer un son avec Monotouch
- 7. Jouer le son dans un navigateur mobile?
- 8. Comment jouer son et animations dans MVVM
- 9. Comment jouer un son dans Silverlight sans XAML
- 10. Comment puis-je jouer un son dans WinForms?
- 11. Jouer le son sans onClickListener
- 12. Jouer le son Javascript/Jquery
- 13. Jouer du son avec OpenAL
- 14. Jouer un son dans un add-on Firefox
- 15. iPhone - Comment jouer un son sur un bouton tactile?
- 16. Jouer le son sur un événement tactile?
- 17. ALSA: Comment savoir quand un son est fini de jouer
- 18. Comment pourrais-je jouer un son d'alarme en python?
- 19. Comment jouer un son sous Linux en utilisant C?
- 20. Jouer simultanément son en C#
- 21. Comment jouer un son toutes les 2 secondes?
- 22. Jouer du son en C++
- 23. alerte bip son nouvel utilisateur vient
- 24. Jouer le son sur l'iPhone sans ressources
- 25. Jouer le son qu'une oscillation/vibration ferait
- 26. comment afficher une alerte dans un groupe d'activités?
- 27. Comment jouer un son lorsque l'utilisateur touche une zone particulière de l'écran
- 28. Désactiver le son dans une application iPhone
- 29. lorsque le son montouch détecter fini de jouer
- 30. pour jouer son programme en utilisant un bouton sur l'iPhone
toute idée pourquoi cette réponse n'est pas largement utilisé? Il semble extrêmement simple et utile ... – RaKXeR