diff --git a/.gitignore b/.gitignore index 58e14c2..fd379b3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ local.properties .settings/ .loadpath .classpath -.project \ No newline at end of file +.project +.recommenders \ No newline at end of file diff --git a/HeatUp/src/de/heatup/audio/BackgroundSound.java b/HeatUp/src/de/heatup/audio/Main.java similarity index 55% rename from HeatUp/src/de/heatup/audio/BackgroundSound.java rename to HeatUp/src/de/heatup/audio/Main.java index 00f69d9..69ceb73 100644 --- a/HeatUp/src/de/heatup/audio/BackgroundSound.java +++ b/HeatUp/src/de/heatup/audio/Main.java @@ -1,8 +1,8 @@ package de.heatup.audio; -public class BackgroundSound { +public class Main { public static void main(String[] args) { - + new WavePlayer("").start(); } } diff --git a/HeatUp/src/de/heatup/audio/WavePlayer.java b/HeatUp/src/de/heatup/audio/WavePlayer.java new file mode 100644 index 0000000..3835596 --- /dev/null +++ b/HeatUp/src/de/heatup/audio/WavePlayer.java @@ -0,0 +1,99 @@ +package de.heatup.audio; + +import java.io.File; +import java.io.IOException; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.DataLine; +import javax.sound.sampled.FloatControl; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.UnsupportedAudioFileException; + +public class WavePlayer extends Thread { + + private String filename; + + private Position curPosition; + + private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb + + enum Position { + LEFT, RIGHT, NORMAL + }; + + public WavePlayer(String wavfile) { + filename = wavfile; + curPosition = Position.NORMAL; + } + + public WavePlayer(String wavfile, Position p) { + filename = wavfile; + curPosition = p; + } + + public void run() { + + File soundFile = new File(filename); + if (!soundFile.exists()) { + System.err.println("Wave file not found: " + filename); + return; + } + + AudioInputStream audioInputStream = null; + try { + audioInputStream = AudioSystem.getAudioInputStream(soundFile); + } catch (UnsupportedAudioFileException e1) { + e1.printStackTrace(); + return; + } catch (IOException e1) { + e1.printStackTrace(); + return; + } + + AudioFormat format = audioInputStream.getFormat(); + SourceDataLine auline = null; + DataLine.Info info = new DataLine.Info(SourceDataLine.class, format); + + try { + auline = (SourceDataLine) AudioSystem.getLine(info); + auline.open(format); + } catch (LineUnavailableException e) { + e.printStackTrace(); + return; + } catch (Exception e) { + e.printStackTrace(); + return; + } + + if (auline.isControlSupported(FloatControl.Type.PAN)) { + FloatControl pan = (FloatControl) auline + .getControl(FloatControl.Type.PAN); + if (curPosition == Position.RIGHT) + pan.setValue(1.0f); + else if (curPosition == Position.LEFT) + pan.setValue(-1.0f); + } + + auline.start(); + int nBytesRead = 0; + byte[] abData = new byte[EXTERNAL_BUFFER_SIZE]; + + try { + while (nBytesRead != -1) { + nBytesRead = audioInputStream.read(abData, 0, abData.length); + if (nBytesRead >= 0) + auline.write(abData, 0, nBytesRead); + } + } catch (IOException e) { + e.printStackTrace(); + return; + } finally { + auline.drain(); + auline.close(); + } + + } +} + \ No newline at end of file diff --git a/HeatUp/src/de/heatup/resources/audio/audiosample.wav b/HeatUp/src/de/heatup/resources/audio/audiosample.wav new file mode 100644 index 0000000..bf7fc00 Binary files /dev/null and b/HeatUp/src/de/heatup/resources/audio/audiosample.wav differ