我正在使用基於Java的軟件進行短信處理,並希望在收到消息時發出嗶聲/警報聲。我試着看着java.sound庫並找不到任何東西。我不知道在Java應用程序中播放聲音的applet方式是否可行!是否有任何預定義的聲音在我們可以在應用程序中調用的任何Java庫中?任何指針將不勝感激!如何在Java應用程序中播放聲音(提醒)?
14
A
回答
6
你可以看看Toolkit類中的蜂鳴方法,如圖here
2
applet的路徑應該是罰款(和非常簡單)。爲避免創建Applet實例,您可以使用靜態newAudioClip
方法,然後在創建的AudioClip
上調用play()
。
URL url = getClass().getResource("/foo/bar/sound.wav");
AudioClip clip = Applet.newAudioClip(url);
clip.play();
37
1
如果你想使用的聲音包打一個任意聲音文件,你可以使用javax.sound.sampled
包。下面是代碼,將播放聲音文件:
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(); } }
23
您可以生成自己的聲音,如果你在尋找比嘟不那麼無聊的東西()無需外部聲音文件。
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);
}
}
更完善的實驗在這裏:Produce special sound effect
相關問題
- 1. 在Java程序中聲音播放
- 2. 如何在Windows Phone 7中的提醒類中播放聲音
- 3. Java應用程序如何播放聲音片段?
- 4. 在Java桌面應用程序中播放聲音
- 5. 如何在Windows 10 UWP應用程序中播放(MIDI)聲音?
- 6. 如何在iPhone應用程序中錄製和播放聲音?
- 7. 如何在iPhone應用程序中播放聲音
- 8. 在java中播放聲音
- 9. 如何在Java中播放聲音?
- 10. iOS:在播放其他應用程序時播放聲音
- 11. 我的Java應用程序不能播放任何聲音
- 12. 從應用程序播放音樂時在Xcode中播放聲音
- 13. 通知聲音如何從應用程序資源中播放?
- 14. 如何在打開應用程序時自動播放聲音?
- 15. 如何在應用程序啓動時播放聲音Windows Phone
- 16. 如何使用java播放聲音
- 17. 如何在iOS應用程序中播放聲音以及背景音樂?
- 18. 當應用程序在後臺播放音頻或聲音
- 19. 的Java應用程序崩潰播放聲音
- 20. 使用UILocalNotification播放不在應用程序包中的聲音
- 21. 在Web應用程序中使用HTML 5播放聲音
- 22. 在使用Javascript的iPhone Web應用程序中播放聲音?
- 23. iOS:如何在我的應用程序中設置鈴聲和提醒音量
- 24. 語音不播放在聲音播放安卓程序
- 25. 在應用程序中播放音樂
- 26. 如何停止播放聲音時關閉應用程序
- 27. 如何循環播放iPhone應用程序的聲音?
- 28. 在DirectX中播放聲音Windows 8應用程序
- 29. 在背景中播放聲音的同時應用程序
- 30. 在Windows Phone 8中播放聲音效果應用程序
任何想法,爲什麼這個答案沒有被廣泛使用?它看起來非常簡單和有用... – RaKXeR 2017-09-20 16:09:22