Avatar billede lirekassemanden Nybegynder
07. december 2003 - 21:36 Der er 9 kommentarer og
1 løsning

Applet.newAudioClip() returnere noget når denne er færdig

Jeg er ked af at forstyre igen :/

Sidder og knokler med noget Afspilling af wav filer.
Jeg afspiller således:

//------ afspiller
  public void afspil()
  {
    try
    {
      lyd = Applet.newAudioClip(getFil().toURL());
      lyd.play();
    }
    catch (Exception e)
    {
      System.out.println(e.getMessage());
    }
  }

//--

Det virker også helt fint. Nu er det bare at jeg har et problem. Jeg skal have et eller andet return når den er færdig med at afspille denne lyd. Hvordan kan dette laves?
Avatar billede _carsten Nybegynder
07. december 2003 - 21:46 #1
Kan ikke bare ændre til nedenstående

  public boolean afspil()
  {
    try
    {
      lyd = Applet.newAudioClip(getFil().toURL());
      lyd.play();
      return true;
    }
    catch (Exception e)
    {
      System.out.println(e.getMessage());
      return false;
    }
  }
Avatar billede lirekassemanden Nybegynder
07. december 2003 - 21:49 #2
jamen så får jeg jo bare smidt "true" i hovedet med det samme.. der ventes ikke til lyd afspillingen er færdig..
Avatar billede _carsten Nybegynder
07. december 2003 - 21:52 #3
Ja, det kan jeg se nu i dokumentation
Avatar billede lirekassemanden Nybegynder
07. december 2003 - 21:53 #4
spørgsmålet er om der overhovedet er en løsning på det :(
Avatar billede arne_v Ekspert
07. december 2003 - 21:56 #5
AudioClip interfacet har jo ikke ligefrem mange metodet at gøre godt med.

Der er nok ikke nogen standard løsning på det.

Men muligvis kan du type caste til den rigtige klasse og kalde
noge metoder i den.
Avatar billede lirekassemanden Nybegynder
07. december 2003 - 22:00 #6
det er fordi at jeg har et array af filer der skal afspilles efter hinanden.. men lige nu afspilles de alle på samme tid.. det lyder total sjovt..
Avatar billede ulrikm Nybegynder
08. december 2003 - 00:38 #7
Jeg har en mistanke om at det kun kan lade sig gøre med Java Sound API'en, så jeg rodede lidt med den og fik nedenstående (Der er et par uklarheder - hvilken mixer skal man vælge - og på hvilket grundlag? Kan Clip ikke oprettes lidt nemmere? Er listen af ikke-understøttede formater endeløs?). Men følgende virker da:

public class Sound
{
  public static void main( String[] args ) throws Exception
  {
    //hent fil som skal afspilles 
    java.net.URL url
      = new java.net.URL("http://www.jokes.thefunnybone.com/waves/Darth.wav");
    java.io.DataInputStream stream
      = new java.io.DataInputStream(url.openConnection().getInputStream());
    byte[] data = new byte[18000];//ahem!
    stream.readFully( data );
    stream.close();
    // find formatet
    javax.sound.sampled.AudioFormat format
      = javax.sound.sampled.AudioSystem.getAudioFileFormat(url).getFormat();
    // En mixer skal man have, så vi kan sende lyd ud gennem
    // en af dens kanaler
    javax.sound.sampled.Mixer.Info[] mixerInfos
      = javax.sound.sampled.AudioSystem.getMixerInfo();
    // vi skriver lige mixerne ud
    for( int i = 0; i < mixerInfos.length; i++ )
    {
      System.out.println( "mixer " + i + "=" + mixerInfos[i]);
    }
    //whatever, vi prøver med den første mixer (og håber en sådan findes..)
    javax.sound.sampled.Mixer mixer
      = javax.sound.sampled.AudioSystem.getMixer(mixerInfos[0]);
    // opret et clip som kan spille lyd gennem mixeren (en kanal)
    javax.sound.sampled.Clip clip
      = (javax.sound.sampled.Clip)mixer.getLine(
          new javax.sound.sampled.Line.Info(
            Class.forName("javax.sound.sampled.Clip")) );
    // clip initialiseres med data fra filen
    clip.open( format, data, 0, data.length);
    // vi vil gerne vide, hvornår afspilning stopper
    clip.addLineListener
      (
        new javax.sound.sampled.LineListener()
        {
          public void update( javax.sound.sampled.LineEvent e )
          {
            if( e.getType() == javax.sound.sampled.LineEvent.Type.STOP )
            {
              System.out.println("Sound has stopped");
            }
          }
        }
      );
    // play it, sam
    clip.start();
  }
}
Avatar billede lirekassemanden Nybegynder
09. december 2003 - 22:23 #8
tak, ulrikm
Lig lige et svar
Avatar billede ulrikm Nybegynder
09. december 2003 - 22:46 #9
Svar
Avatar billede lirekassemanden Nybegynder
19. februar 2004 - 20:21 #10
takker og lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester