Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Javazoom mp3: Musik stoppen

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Javazoom mp3: Musik stoppen

    Hallo Leute,

    kennt jemand diese Bibliothek? Sie erweitert Java um mp3-Fähigkeiten.

    Auch hier brauche ich eine Hintergrundmusik, die auf Knopfdruck ein/ und ausgeschaltet werden kann.

    Unterschied zur Sun-Bibliothek: die play-Loop scheint atomar/synchronized zu sein: wenn man sie normal anschubst, blockiert sie das Programm. Man muss sie also in einen Extra-Thread packen.

    Und nun kommen die Probleme:
    stoppen soll das Gedudel anhalten, cont an der Stelle wieder aufsetzen.

    play:
    Code:
    // braucht javazoom.jl.player.Player, player ist Typ Player
    // als Thread starten, mp3thread und player sind global zur class:
      public void starten()
      { try
        { mp3thread=new Thread()
          { public void run()
            { try { player.play(); }
              catch (Exception e) { System.out.println(e); }
            }
          };
          mp3thread.start();
        }
        catch (Exception e) { System.out.println("mp3 nicht spielbar!"); }
      }
    Variante 1:
    Code:
    public void stoppen()
      { if (mp3thread!=null) mp3thread.suspend();
        System.out.println("gestoppt");
      }
    
      public void conti()
      { if (mp3thread!=null) mp3thread.resume(); else starten();
        System.out.println("weiter");
      }
    funktioniert wunderbar, ist aber deprecated.

    Variante 2:

    Code:
     
    public void stoppen_neu()
     { if (mp3thread!=null)
        { try { posi=player.getPosition(); mp3thread.interrupt(); }
          catch (Exception e) { }
          System.out.println("Stop2"+posi);
        }
      }
    
      public void conti_neu()
      { if (mp3thread!=null)
        { if (mp3thread.isInterrupted()) mp3thread.notify();
          System.out.println("conti2");
        }
        else starten(); // generiert den Thread nochmal 
      }
    funktioniert nur auf dem Papier, der mp3thread denkt gar nicht daran, zu stoppen!

    Player selbst hat keine Funktion dafür.

    Hier noch der Output der Funktionen nach start/pause/conti:

    run:
    conti2
    Stop26797
    conti2
    BUILD SUCCESSFUL (total time: 21 seconds)
    aber genudelt wird pausenlos. Natürlich ist der Thread auch nicht interrupted.

    Wo muss ich da eingreifen so dass es wie im deprecated Beispiel funktioniert?

    Gruß,
    Ulrike

    Zusatzfrage: das Ganze läuft unter Windows XP, ist die Bibliothek auch Linux-kompatibel?
    Geändert von BlueJay (24-10-2010 um 11:37 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Generell dürfte die Sache mit deprecated nicht so schlimm sein, es sei denn man will die Warnungen beim Build wegkriegen.

    Aber hast du es schon mit der AdvancedPlayer Klasse aus dem Paket versucht? Die scheint eine stop() Methode zu haben.
    http://www.javazoom.net/javalayer/do...yer.html#stop()

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Mit der AdvancedPlayer habe ich auch herumgespielt, die habe ich hier gar nicht erst zum Dudeln bekommen, obwohl die Methoden der Klasse vielversprechend aussahen. Irgendwo stand auch, dass die noch nicht ganz abgesegnet ist.

    Zudem reagieren die Parameter in den Methoden anders als in dem einfachen Player, Beispiel: play (int). Einmal gibt es die Startposition an, in der anderen Klasse die Anzahl Frames, die dudeln sollen.

    Die eine Klasse hat eine Methode, die Frames abzufragen, die andere eine, um den Start zu setzen, aber keine hat beides. Sonst hätte ich schon mit rigorosem Abwürgen gearbeitet.

    Gruß,
    Ulrike
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

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