Hallo liebes Forum,
[font="verdana, helvetica, sans-serif"]ich tue mich zur Zeit schwer mit ein paar Kleinigkeiten in Bezug auf das Projekt. Ich probiere gerade herum, und ich komme an ein paar Dingen nicht zurecht.[/font]
[font="verdana, helvetica, sans-serif"]Ich soll einen Musikplayer realisieren. Den Code habe ich unten angehängt. Ich benutze die Methode Clip um eine WAVE Datei zu öffnen. So, warum läuft der erste Clip() nicht vollständig ab? Wenn das Programm startet, wird der Sound zerstückelt wiedergegeben, und nicht durchgehend (stetig). Wenn ich Button2 drücke spielt zwar der zweite Clip auch ab, aber ich komme beim betätigen des Button1 nicht mehr zum ersten zurück...[/font]
[font="verdana, helvetica, sans-serif"]Ich hab schon probiert im Internet zu suchen, und auch in Foren zu durchsuchen, ich bin auch gut vorangekommen, aber ich verstehe nicht warum Button1 ignoriert wird wenn clip2 rennt...aber umgekehrt wenn Clip1 schon rennt, er durch den Button2 unterbrochen wurde und Clip2 rennt.[/font]
[font="verdana, helvetica, sans-serif"]Natürlich habe ich noch vor das ganze zu verbessern und die Dateien in eine Liste aufzunehmen, etc...aber vorerst möchte ich einfach nur ein Play/Stop Vor/Zurück realisieren.[/font]
[font="verdana, helvetica, sans-serif"]Ich bedanke mich für die Hilfe...[/font]
[font="verdana, helvetica, sans-serif"]lg Ethernut[/font]
package raspberry;
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.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;
import com.pi4j.component.switches.SwitchListener;
import com.pi4j.component.switches.SwitchState;
import com.pi4j.component.switches.SwitchStateChangeEvent;
import com.pi4j.device.piface.PiFace;
import com.pi4j.device.piface.PiFaceLed;
import com.pi4j.device.piface.PiFaceRelay;
import com.pi4j.device.piface.PiFaceSwitch;
import com.pi4j.device.piface.impl.PiFaceDevice;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.wiringpi.Spi;
public class MultipleSoundExample
{
public static int i = 0;
public static void main(String[] args) throws InterruptedException,
LineUnavailableException, UnsupportedAudioFileException,
IOException
{
final PiFace piface = new PiFaceDevice(PiFace.DEFAULT_ADDRESS,
Spi.CHANNEL_0);
final Clip myClip = AudioSystem.getClip();
File file = new File("Test3.wav");
AudioInputStream audioInStream = AudioSystem.getAudioInputStream(file);
myClip.open(audioInStream);
final Clip myClip2 = AudioSystem.getClip();
File file2 = new File("Test4.wav");
AudioInputStream audioInStream2 = AudioSystem.getAudioInputStream(file2);
myClip2.open(audioInStream2);
myClip.start();// Playback of clip starts in background
while (true)
{
piface.getSwitch(PiFaceSwitch.S2).addListener(new SwitchListener() {
@Override
public void onStateChange(SwitchStateChangeEvent event)
{
if (event.getNewState() == SwitchState.ON)
{
piface.getLed(PiFaceLed.LED5).on();
myClip.stop();// Stop clip if not already stopped
// myClip.close();
myClip2.start();
}
}
});
piface.getSwitch(PiFaceSwitch.S1).addListener(new SwitchListener() {
@Override
public void onStateChange(SwitchStateChangeEvent event)
{
if (event.getNewState() == SwitchState.ON)
{
System.out.println("!!Switch1!!");
piface.getLed(PiFaceLed.LED5).off();
piface.getLed(PiFaceLed.LED4).on();
myClip2.stop();// Stop clip if not already stopped
// myClip2.close();
myClip.start();
}
}
});
}
}
}
Alles anzeigen