Ergebnis 1 bis 4 von 4

Java -> Sound abspielen, relativer Pfad

  1. #1 Zitieren
    Sergej Petrow
    Gast
    Nachdem es mir mittlerweile auch gelungen ist, mit Java einen Soundclip abzuspielen, fehlt mir jetzt noch die Möglichkeit, das ganze von einem relativen Pfad zu starten.

    PHP-Code:
    private void soundausgabe(int i)
        {
        switch (
    i)
            {
            case 
    1:
                  
    File f=new File("d:/eclipse\\WorkspaceEclipse\\Snakezzz_3_9\\Sounds\\cash_register_x.au");
               
    //File f=new File("cash_register_x.au");//funktioniert nicht
                  
    URL url;
              
              try {
                 
    url = new URL("file:/" f.getPath());
                 
    AudioClip clip Applet.newAudioClip(url);
                 
    //AudioClip clip = Applet.newAudioClip(getDocumentBase(),
                   //      "Sounds\\cash_register_x.au");//funktioniert auch nicht
                  
    clip.play();
                  try {
                      
    Thread.sleep(1000);
                       } 
                  catch (
    InterruptedException e
                         { }
                  
                   } 
    //end try
              
                      
    catch (MalformedURLException e1
                       {
                    
    System.out.println("Mist");//gottseidank landet er nicht mehr hier
                
    e1.printStackTrace();
                       }
                       break;    
                       }
    //end case
        

       
    }//end soundausgabe 
    Von einem festen Pfad aus, wie hier jetzt in der Methode, funktioniert das ganze.
    Nur nutzt das nicht viel, wenn man das Programm u.U. auch woanders laufen lassen will.

    (Es hat schon ganz schön Nerven gekostet, rauszufinden, dass *.wav nicht funktioniert und ich eine *.au Datei brauche.)
    Geändert von Sergej Petrow (17.02.2013 um 14:43 Uhr)

  2. #2 Zitieren
    Held Avatar von Satans Krümelmonster
    Registriert seit
    Aug 2007
    Beiträge
    5.797
    du könntest dir den pfad über System.getProperty('user.dir') zusammenbauen. aber ich wieß nicht, ob das funktioniert.
    und wenn ich das richtig interpretiere, ist die ausführbare datei doch eh nicht gleichen verzeichnis, wie der sound. hast du schonmal File f=new File("Sounds\\cash_register_x.au"); versucht?
    Satans Krümelmonster ist offline

  3. #3 Zitieren
    Sergej Petrow
    Gast
    Zitat Zitat von Satans Krümelmonster Beitrag anzeigen
    du könntest dir den pfad über System.getProperty('user.dir') zusammenbauen. aber ich wieß nicht, ob das funktioniert.
    und wenn ich das richtig interpretiere, ist die ausführbare datei doch eh nicht gleichen verzeichnis, wie der sound. hast du schonmal File f=new File("Sounds\\cash_register_x.au"); versucht?
    Yep, habe ich. Hat alles nicht gefunzt.
    Der Sound ist nicht direkt im gleichen Verzeichnis. Aber auf der gleichen Ebene.

    //workspaceeclipse/snakezzz_3_9 ist die Hauptebene des Programms. Ab da gibt es unter Sounds die abspielbaren au-Dateien, unter src den programmcode, usw..

    Es soll so sein, dass wenn ich nachher aus dem Programm eine jar-Datei erstelle, entweder die Musikdatei mit eingebunden wird oder aber der Soundfile im gleichen Verzeichnis, wie die jar-Datei ist. Am liebsten wäre es mir, wenn die Datei gleich eingebunden wird.

  4. #4 Zitieren
    Sergej Petrow
    Gast
    Hab es

    Dieser Teil war mein Tod.
    url = new URL("file:/" + f.getPath());
    Mit diesem file:/ musste ich immer von ganz vorne anfangen.

    Hab das jetzt über einem kleinen Umweg geschafft.

    File f;
    URI uri;//Ist ein Format, damit auch Pfade mit Leerzeichen und anderen Sonderzeichen funktionieren.

    f=new File("Sounds\\coin2.au");//der relative Pfad zur Datei
    uri=f.toURI();//File wird umgewandelt in URI
    AudioClip clip = Applet.newAudioClip(uri.toURL());//und zum Schluss die Umwandlung in eine URL.

    Man könnte auch den Umweg über URI lassen und direkt
    AudioClip clip = Applet.newAudioClip(f.toURL());
    nehmen. Aber das ist wohl veraltet und würde im extremsten Fall, wenn es Pfade
    mit Sonderzeichen oder Leerzeichen sind, nicht funktionieren.

    So sieht das ganze jetzt aus und es funktioniert. Zwei Stunden Pause wirkten wunder.

    PHP-Code:
    //Sound abspielen bei bestimmten Ereignissen
        
    private void soundausgabe(int i)
        {
        
    File f;
        
    URI uri;
      
        switch (
    i)
        {
        case 
    1:
            
    f=new File("Sounds\\coin2.au");
            try {
                
    uri=f.toURI();
                 
    AudioClip clip Applet.newAudioClip(uri.toURL());
                  
    clip.play();
                 }
    //end try 
                  
    catch (MalformedURLException e1
                  {
                  
    e1.printStackTrace();
                  }
              break;
              
        case 
    2:
            
    f=new File("Sounds\\walk.au");
            try {
                
    uri=f.toURI();
                 
    AudioClip clip Applet.newAudioClip(uri.toURL());
                  
    clip.play();
                  
    verzoegern();
                 }
    //end try 
              
                  
    catch (MalformedURLException e1
                  {
                 
    e1.printStackTrace();
                  }
              break;    

        }
    //end case
     
    }// end soundausgabe 

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •