r570 - in trunk: sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/validation
Author: fdesbois Date: 2012-09-11 15:10:44 +0200 (Tue, 11 Sep 2012) New Revision: 570 Url: http://forge.codelutin.com/repositories/revision/sammoa/570 Log: fixes #1473 : clean AudioCheck Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioPositionListener.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/SammoaAudioReader.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/SammoaAudioRecorder.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/AudioCheck.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/validation/SoundPlayer.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioPositionListener.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioPositionListener.java 2012-09-11 10:08:46 UTC (rev 569) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioPositionListener.java 2012-09-11 13:10:44 UTC (rev 570) @@ -38,12 +38,4 @@ * @param audioPosition la nouvelle position en milliseconds */ public void positionChanged(AudioReader source, long audioPosition); - - /** - * @param source La source de l'evenement - * @param audioLength la nouvelle taille en milliseconds - * @deprecated no longer used - */ - @Deprecated - public void audioChanged(AudioReader source, long audioLength); } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/SammoaAudioReader.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/SammoaAudioReader.java 2012-09-11 10:08:46 UTC (rev 569) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/SammoaAudioReader.java 2012-09-11 13:10:44 UTC (rev 570) @@ -182,10 +182,7 @@ } // Get the clip length in microseconds and convert to milliseconds audioLength = (int)(clip.getMicrosecondLength( )/1000); - for (AudioPositionListener l : audioPositionListener) { - l.audioChanged(this, audioLength); - } - this.startDate = recordingDate; + startDate = recordingDate; setState(DeviceState.READY); logger.debug(String.format("Sound file '%s' loaded", file)); Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/SammoaAudioRecorder.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/SammoaAudioRecorder.java 2012-09-11 10:08:46 UTC (rev 569) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/SammoaAudioRecorder.java 2012-09-11 13:10:44 UTC (rev 570) @@ -25,16 +25,17 @@ package fr.ulr.sammoa.application.device.audio; import com.google.common.base.Preconditions; +import com.google.common.base.Throwables; import com.google.common.collect.Sets; import fr.ulr.sammoa.application.device.DeviceState; import fr.ulr.sammoa.application.device.DeviceStateEvent; import fr.ulr.sammoa.application.device.DeviceStateListener; import fr.ulr.sammoa.application.device.DeviceTechnicalException; -import java.io.File; -import java.io.IOException; -import java.util.Set; -import java.util.Timer; -import java.util.TimerTask; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; @@ -42,10 +43,11 @@ import javax.sound.sampled.DataLine; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.TargetDataLine; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.IOException; +import java.util.Set; +import java.util.Timer; +import java.util.TimerTask; /** * Classe permettant l'enregistrement d'un fichier audio. Par defaut la @@ -289,8 +291,14 @@ targetDataLine.open(audioFormat); targetDataLine.start(); stream = new AudioInputStream(targetDataLine); - stream = AudioSystem.getAudioInputStream(encoding, stream); - + try { + stream = AudioSystem.getAudioInputStream(encoding, stream); + } catch (Exception eee) { + // Clean TargetDataLine if error occurs on audioInputStream + targetDataLine.stop(); + targetDataLine.close(); + throw Throwables.propagate(eee); + } } /** Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/AudioCheck.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/AudioCheck.java 2012-09-11 10:08:46 UTC (rev 569) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/AudioCheck.java 2012-09-11 13:10:44 UTC (rev 570) @@ -24,7 +24,6 @@ * #L% */ -import com.google.common.base.Throwables; import fr.ulr.sammoa.application.device.audio.SammoaAudioReader; import fr.ulr.sammoa.application.device.audio.SammoaAudioRecorder; import fr.ulr.sammoa.ui.swing.flight.bar.validation.SoundPlayer; @@ -47,6 +46,8 @@ import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.io.File; import java.io.IOException; import java.util.Date; @@ -192,9 +193,11 @@ new ActionListener(){ public void actionPerformed( ActionEvent e){ - captureBtn.setEnabled(false); - stopBtn.setEnabled(true); - captureAudio(); + boolean audioRecording = captureAudio(); + if (audioRecording) { + captureBtn.setEnabled(false); + stopBtn.setEnabled(true); + } } }); @@ -216,16 +219,36 @@ playerPanel.getAudioReader().load(file, new Date()); } }); + + addWindowListener(new WindowAdapter() { + + @Override + public void windowClosed(WindowEvent e) { + if (recorder != null) { + recorder.close(); + } + } + }); } - protected void captureAudio(){ - try{ - File file = new File(filenameField.getText()); - recorder = new SammoaAudioRecorder( - getSampleRate(), getSampleSizeInBits(), getCompression(), 0); + protected boolean captureAudio(){ + File file = new File(filenameField.getText()); + if (recorder != null) { + recorder.close(); + } + recorder = new SammoaAudioRecorder( + getSampleRate(), getSampleSizeInBits(), getCompression(), 0); + try { recorder.record(file, true); - }catch (Exception eee) { + return true; + + } catch (Exception eee) { + // Close only on error, otherwise no recording will be launch + recorder.close(); + logger.error("Can't capture audio", eee); + SammoaUtil.showErrorMessage(this, "Can't capture audio : " + eee.getMessage()); + return false; } } @@ -278,19 +301,27 @@ r1.stop(); r2.stop(); delay = 5; - SammoaUtil.showSuccessMessage(this, "The recording delay is set to " + - "5 seconds between each recording, " + - "you can update this value from" + - " configuration interface"); + if (logger.isInfoEnabled()) { + logger.info("The recording delay is set to 5 seconds between " + + "each recording, you can update this value from" + + " configuration interface"); + } + } catch(IOException ex) { - throw Throwables.propagate(ex); + if (logger.isErrorEnabled()) { + logger.error("Can't check audio line", ex); + } + SammoaUtil.showErrorMessage(this, "Can't check audio line : " + ex.getMessage()); } catch(LineUnavailableException ex) { delay = 0; - logger.error("Can't record multiple file in same time", ex); - SammoaUtil.showErrorMessage(this, "Can't record multiple file in " + - "same time, 0 second delay " + - "between recording must be used"); + if (logger.isDebugEnabled()) { + logger.debug("Can't record multiple file at the same time", ex); + } + if (logger.isInfoEnabled()) { + logger.info("Can't record multiple file at the same time, 0 " + + "second delay between recording must be used"); + } } finally { r1.close(); Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/validation/SoundPlayer.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/validation/SoundPlayer.java 2012-09-11 10:08:46 UTC (rev 569) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/validation/SoundPlayer.java 2012-09-11 13:10:44 UTC (rev 570) @@ -32,8 +32,6 @@ import fr.ulr.sammoa.application.device.audio.SammoaAudioReader; import org.apache.commons.lang3.time.FastDateFormat; -import javax.sound.sampled.LineUnavailableException; -import javax.sound.sampled.UnsupportedAudioFileException; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; @@ -48,7 +46,6 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; -import java.io.IOException; import java.util.Date; import java.util.Hashtable; @@ -73,7 +70,7 @@ protected AudioReader reader; // le fichier charge acutellement au niveau de l'ui (config du slider - protected File currentFile; +// protected File currentFile; // The following fields are for the GUI protected JButton play; // The Play button @@ -323,8 +320,7 @@ } // The main method just creates a SoundPlayer in a Frame and displays it - public static void main(String[] args) - throws IOException, UnsupportedAudioFileException, LineUnavailableException { + public static void main(String[] args) { SoundPlayer player; File file; @@ -347,8 +343,4 @@ f.pack(); f.setVisible(true); } - - public void audioChanged(AudioReader source, long audioLength) { - // A SUPPRIMER - } } \ No newline at end of file
participants (1)
-
fdesbois@users.forge.codelutin.com