/* * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package net.java.sip.communicator.impl.notification; import net.java.sip.communicator.service.audionotifier.*; import net.java.sip.communicator.service.notification.*; /** * An implementation of the SoundNotificationHandlerImpl interface. * * @author Yana Stamcheva */ public class SoundNotificationHandlerImpl implements SoundNotificationHandler { private String soundFileDescriptor; /** * By default we don't play sounds in loop. */ private int loopInterval = -1; private SCAudioClip audio; /** * Creates an instance of SoundNotificationHandlerImpl by * specifying the sound file descriptor. * * @param soundDescriptor the sound file descriptor */ public SoundNotificationHandlerImpl(String soundDescriptor) { this.soundFileDescriptor = soundDescriptor; } /** * Creates an instance of SoundNotificationHandlerImpl by * specifying the sound file descriptor and the loop interval. * * @param soundDescriptor the sound file descriptor * @param loopInterval the loop interval */ public SoundNotificationHandlerImpl( String soundDescriptor, int loopInterval) { this.soundFileDescriptor = soundDescriptor; this.loopInterval = loopInterval; } /** * Returns the loop interval. This is the interval of milliseconds to wait * before repeating the sound, when playing a sound in loop. By default this * method returns -1. * * @return the loop interval */ public int getLoopInterval() { return loopInterval; } /** * Plays the sound given by the containing soundFileDescriptor. The * sound is played in loop if the loopInterval is defined. */ public void start() { AudioNotifierService audioNotifService = NotificationActivator.getAudioNotifier(); if(audioNotifService == null) return; audio = audioNotifService.createAudio(soundFileDescriptor); if(loopInterval > -1) audio.playInLoop(loopInterval); else audio.play(); } /** * Stops the sound. */ public void stop() { AudioNotifierService audioNotifService = NotificationActivator.getAudioNotifier(); if(audioNotifService == null) return; if(audio == null) return; audio.stop(); audioNotifService.destroyAudio(audio); } /** * Returns the descriptor pointing to the sound to be played. * * @return the descriptor pointing to the sound to be played. */ public String getDescriptor() { return soundFileDescriptor; } }