2015-04-18 2 views
1

Так в настоящее время, это «сигнал» (на самом деле не подает звуковой сигнал на некоторых ОС) звук в Java:Как играть звук, отличный от звукового сигнала в Java?

Toolkit.getDefaultToolkit().beep(); 

Но код использует/звуковой сигнал «бип» моего компьютера ...

Есть ли способ заменить его?

+1

Вы действительно хотите заменить это или сыграть другой звук по вашему выбору? – ChiefTwoPencils

+0

Больше похоже на другой звук по моему выбору или есть ли какие-либо звуки от Java? –

ответ

4

Существует interesting code here, который я нашел, и который использует другой звук, кроме звукового сигнала:

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); 

    } 
} 
0

Просто создать функцию как таковые, и назвать его где угодно, такими как нажатие кнопки или слушатель.

public void alert() { 

    try{ 

     InputStream inputStream = getClass().getResourceAsStream("/sounds/sms.wav"); //Note this is path to whatever wav file you want 
      AudioStream audioStream = new AudioStream(inputStream); 
      AudioPlayer.player.start(audioStream); 
     } 
    catch (IOException e) { 
     // Whatever exception you please; 
    } 
     // return inputStream; 

} 

Также Примечание: аудиопоток класса является собственностью Java, и если его длинный звук байт и нужно, чтобы остановить его в любое время, вы можете позвонить AudioPlayer.player.stop (аудиопоток) в любом месте либо с помощью таймера, поток прерывание или нажатие кнопки.

Смежные вопросы