# Soundeffekt in Applikation von Festplatte laden



## therocker (27. September 2007)

Hi allerseits ich bin neu hier, wollte nur mal fragen ob mir vielleicht jemand helfen könnte. Ich schreibe gerade an einer Java Applikaiton in deren verlauf ich eine Sound Effekt abspielen lassen will. laut: Java ist auch eine Insel (hat mir schon viel geholfen das Buch) geht das ganz einfach: 

http://www.rz.uni-hohenheim.de/anw/...el_19_007.htm#Rxx365java19007040007E01F04B100 

so hab ich dann geschrieben 




```
File f = new File( "drop.wav" ); 
       
      try{ 
       
             URL url=f.toURL();    
             AudioClip sound = Applet.newAudioClip( url ); 
       
      //System.out.println(url);    
       
             sound.play(); 
       
      } catch(Exception e1){ 
            e1.printStackTrace();    
      }
```



wenn ich das in einer Methode verwende lässt sich das ganze zwar starten nur hören tu ich nichts. Wenn ich aber die Sounddatei vom Internet hole, also einfach eine url aus dem Internet angebe ohne eine File() zu erzeugen, dann geht höre ich den Sound, aber das will ich ja nicht, es soll von der Festplatte laden. Wenn ich die oben auskommentierte Anweisung stehenlass so wird mir der exakte Pfad der audiodatei angezeigt, d.h. sie wird gefunden, aber nicht abgespielt, vielleicht hat jemand von euch eine Idee. Übrigens ich starte das ganze aus dem Eclipse aus. 

vielen Dank im Voraus 

wildhias


----------



## Florian Strienz (28. September 2007)

Check mal mit 

f.exists(); 

ob es das wav File überhaupt findet. Ich tippe da ist das Problem, dass Java es nicht da findet wo du es ihm gibst.

So sucht Java es nämlich im aktuellen Arbeitsverzeichnis.

Probiere mal den absoluten Pfad zu deinem file anzugeben.

Ich habe diese Soundausgabe so auch schon verwendet. Sollte so gehen.

Gruß
Flo


----------



## programer85 (12. April 2008)

ich sitz grad vor nem allgemeinerem problem ich will auch sound absielen nur check ich das beispiel da oben nich...
also ich checks schon...
aba wenn ich das so einbaue kommt immer das er 
1. die klasse URL nicht kennt
und 2.
gibt er ne warnung ab

```
Player2.java:44:23: warning: [deprecation] toURL() in java.io.File has been deprecated
             URL url=f.toURL();
                      ^
```
könntet ihr mir vlt helfen?
thx


----------



## Ryu20 (13. April 2008)

hi

ich kenn mich zwar nich super mit sound in java aus aber du hast folgendes Problem:

wenn du sound.play() machst wird das abspielen in einem neuem Thread gestartet. damit läuft dein jetziger Thread weiter und wird natürlich beendet, somit läuft dein Sound auch maximal einen Bruchteil einer Sekunde.

Schau dir das an das zeigt dir was ich mein:


```
import java.applet.Applet;
import java.applet.AudioClip;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.URL;

public class SoundTest {

    public SoundTest(){
        File urlFile = new File("C:\\WINDOWS\\Media\\Windows XP-Startvorgang.wav");

        try{ 
            if (!urlFile.exists()){
                throw new FileNotFoundException(urlFile.toString());
            }
            URL url = urlFile.toURI().toURL(); 
            AudioClip sound = Applet.newAudioClip( url);   

            sound.play(); 
        Thread.sleep(2000);
        } catch(Exception e1){ 
            e1.printStackTrace();    
        }
    }

    public static void main(String[] args) {
        new SoundTest();
    }
}
```
@programer85:

importiere alle benötigten Biblitheken und benutze nicht .tURL() sonder .toURI().toURL()

Beispiel warum du nicht nur toURL() verwenden solltest:

```
File file = new File("C:\\Dokumente und Einstellungen");
            System.out.println(file.toURL());  //file:/C:/Dokumente und Einstellungen/
            System.out.println(file.toURI().toURL());:  //file:/C:/Dokumente%20und%20Einstellungen/
```


----------



## programer85 (13. April 2008)

Hey Danke! 
jetzt klappts^^
*freu*
viiielen dank...


----------

