Soundeffekt in Applikation von Festplatte laden

therocker

Grünschnabel
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



Code:
   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
 
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
 
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
Code:
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
 
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:

Code:
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:
Code:
            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/
 
Zurück