2015-09-21 2 views
0

Я сделал обратный отсчет, который работает, но я хочу, чтобы он воспроизводил звук, отсчет которого завершен. Моя проблема в том, что я получаю исключение NullPointerException, и я не знаю, как его решить. Вот код, без импорта:Воспроизведение .wav-файла при завершении подсчета

public class ReminderBeep { 
Toolkit toolkit; 

private String Path_to_sound = "sirenpolice5.wav"; 
public AudioClip audioclip; 

Timer timer; 

public ReminderBeep(int seconds) { 
    toolkit = Toolkit.getDefaultToolkit(); 
    timer = new Timer(); 
    timer.schedule(new RemindTask(), seconds * 1000); 
} 

class RemindTask extends TimerTask { 
    public void run() { 
     System.out.println("Time's up!"); 
     try { 
      URL url = this.getClass().getClassLoader().getResource(Path_to_sound); 
      AudioInputStream audioIn = AudioSystem.getAudioInputStream(url); 

      Clip clip = AudioSystem.getClip(); 
      clip.open(audioIn); 
      clip.start(); 
      } catch (MalformedURLException murle) { 
      System.out.println(murle); 
      } catch (LineUnavailableException e) { 

       e.printStackTrace(); 
      } catch (IOException e) { 

       e.printStackTrace(); 
      } catch (UnsupportedAudioFileException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     System.exit(0); 
    } 
} 

public static void main(String args[]) { 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Welcome to countdown clock. Please type how many seconds you wanna count down from"); 
    int sec = scan.nextInt(); 
    new ReminderBeep(sec); 
    System.out.println("Counting"); 
} 
} 
+0

Где происходит нулевой указатель? Я предполагаю переменную URL. Вы должны опубликовать трассировку стека. –

+0

@MathieuFortin Устранила проблему, но она не воспроизводит звук. Программа работает нормально, но не воспроизводит звуковой файл – Bob

ответ

0

Обнаружили проблему, я пропускал Thread.sleep(clip.getMicrosecondLength()/1000);