Noch immer Threat-Problem

Status
Nicht offen für weitere Antworten.
Hallo!

Bin nun schon seit langem am gleichen Problem und komme einfach nicht weiter.
Habe einen Threat in dem eine Audio-Datei abgespielt wird. Den will ich per Knopfdruck stoppen. Habe meine Vorgehensweise mal in ein anderes Beispiel übertragen, in dem der Threat problemlos stoppt, nicht aber in meinem Programm - woran könnte das denn liegen?

Code:
    public void actionPerformed(ActionEvent e) {
         Object source = e.getSource();
        if (source == btPlay) {
            // es wird abgespielt
            if (audioFile != null) { 
                if (play == true) {
                    System.out.println(t.isAlive());
                    t.start();
                    System.out.println("jetzt müsste die musik starten");
                    btPlay.setIcon(PauseIcon);
                    play = false;
                } else {
                    // Pause...
                    if (play == false) {                  
                        try {
                            t.wait(1000);
                            System.out.println("alive:" + t.isAlive());
                        } catch (Exception x) {                           
                        }               
                        btPlay.setIcon(StartIcon);
                        play = true;
                    }
                }
            } else {
                // Ausgabe eines Fehlers:
            }
        }
        if (source == btStop) {
            // es wird gestoppt  
           	t.stopThread();       
        }
}
    class MyThread extends Thread {        
        private volatile boolean isRunning = true; 
        
        public void run() {            
            while(isRunning){ 
                play();                
                try { 
                    Thread.sleep(500); 
                  } 
                  catch(InterruptedException ie){ 
                     interrupt(); 
                  } 
                  if ( isInterrupted() )
                      break;
            }
        }
        public void stopThread() 
        { 
            this.isRunning = false; 
            t.interrupt();
        } 
    }

    MyThread t = new MyThread();
 

André Uhres

Top Contributor
Liebhaberstück hat gesagt.:
..Habe einen Threat in dem eine Audio-Datei abgespielt wird. Den will ich per Knopfdruck stoppen.
Habe meine Vorgehensweise mal in ein anderes Beispiel übertragen, in dem der Threat problemlos stoppt,
nicht aber in meinem Programm - woran könnte das denn liegen?
Wenn der Audioplayer intern einen eigenen Thread gestartet hat, dann läuft der natürlich weiter.
 
also hier starte ich den audio-thread...
wie kann ich den denn dann beenden?

Code:
        if (source == btPlay) {
            // es wird abgespielt
            if (audioFile != null) { 
                if (play == true) {
                    t.start();
                } else {
                    // Pause...
                          } catch (Exception x) {                           
                        }        
                    }
                }
            } else {
                // Ausgabe eines Fehlers:
              }
        }
 
das ist die audio-player funktion die in der public void run() gestartet wird

Code:
    private void play() {
        try {
            // create a stream from the file
            AudioInputStream audioInputStream = AudioSystem
                    .getAudioInputStream(audioFile);

            // ************************* PLAY AUSDIOSTREAM
            // ***************************************
            AudioFormat audioFormat = audioInputStream.getFormat();
            System.out.println("audioFormat: " + audioFormat);

            DataLine.Info info = new DataLine.Info(SourceDataLine.class,
                    audioFormat);
            //
            if (!AudioSystem.isLineSupported(info)) {
                System.out
                        .println("Das Format wird nicht unterstützt: " + info);
                return;
            }

            // Jetzt wird abgespielt
            try {
                SourceDataLine dataLine = (SourceDataLine) AudioSystem
                        .getLine(info);
                dataLine.open(audioFormat);
                // Allows the line to move data in and out
                // to a port
                dataLine.start();
                // Create a buffer for moving data from the
                // audio stream to the line
                int bufferSize = (int) audioFormat.getSampleRate()
                        * audioFormat.getFrameSize();
                byte[] buffer = new byte[bufferSize];

                // Move the data until done or there is an
                // error
                try {
                    int bytesRead = 0;
                    while (bytesRead >= 0) {
                        bytesRead = audioInputStream.read(buffer, 0,
                                buffer.length);
                        if (bytesRead >= 0)
                            dataLine.write(buffer, 0, bytesRead);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // Continues data line I/O until its buffer drained
                dataLine.drain();

                // Closes the data line, freeing any resources such
                // as the audio device
                dataLine.close();
            } catch (LineUnavailableException e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            System.err.println("Problem beim Wiedergeben der Datei "
                    + audioFile.getAbsolutePath());
            e.printStackTrace();
        }
    } // end-play()
 

André Uhres

Top Contributor
Ich würde sagen mit dataLine.stop() müsste es gehen
(zusätzlich zum stop von deinem eigenen Thread).
Um deinen Thread neu zu starten musst du ihn
zuerst neu instanziieren.
 
ich müsste dann wahrschienlich hier

Code:
                // Move the data until done or there is an 
                // error 
                try { 
                    int bytesRead = 0; 
                    while (bytesRead >= 0) { 
                        bytesRead = audioInputStream.read(buffer, 0, 
                                buffer.length); 
                        if (bytesRead >= 0) 
                            dataLine.write(buffer, 0, bytesRead); 
                    } 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                }

eine abbruchbedingung mit dataLine.stop() einfügen, oder?
weiß aber nicht so genau wie - hab nun schon einige varianten ausprobiert, kriege das lied aber einfach nicht zum stoppen
 
ich korrigiere mich - es klappt doch...
hast du denn vielleicht auch einen tipp, wie ich den stream auf "pause setzen" kann, wie bei einem normalen audioplayer?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
M Untersuchen ob ein Graph nach entfernen einer Kante immer noch zusammenhängend ist Java Basics - Anfänger-Themen 70
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Noch immer Probleme mit exec Java Basics - Anfänger-Themen 15
M immer noch usedelimiter Java Basics - Anfänger-Themen 4
N Ich habs immer noch nicht hinbekommen :( Java Basics - Anfänger-Themen 3
J objektorientiert - noch immer nicht begriffen Java Basics - Anfänger-Themen 6
G Trotz Abfrage immer noch Zahlen doppelt Java Basics - Anfänger-Themen 3
D Interfaces von Interfaces macht das noch Sinn? Java Basics - Anfänger-Themen 21
F Hat es noch einen Sinn, alte Versionen zu lernen Java Basics - Anfänger-Themen 45
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
S Ist das noch Insertionsort? Java Basics - Anfänger-Themen 3
O Warum will die MEthode noch am Ende einr eturn Java Basics - Anfänger-Themen 10
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
CptK Vererbung Attributtyp in Super-Klasse noch nicht festlegen Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
marcooooo einmal noch schnell hilfe bitte:/ Java Basics - Anfänger-Themen 2
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
A Kann man eine Methode als Variable speichern und danach noch verändern? Java Basics - Anfänger-Themen 6
P Cäsear verschlüsselung irgendwas passt noch nicht Java Basics - Anfänger-Themen 2
B java.util.Date noch zeitgemäß? Java Basics - Anfänger-Themen 6
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
S Noch eine Frage zur Rekursion... Java Basics - Anfänger-Themen 11
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
M Variable noch erstellen oder lieber so? Java Basics - Anfänger-Themen 1
V Bin eigentlich noch VOR dem Anfang .... Java Basics - Anfänger-Themen 9
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
A Wie kann ich mein Programm noch effizienter machen? Java Basics - Anfänger-Themen 1
O Starte Timer, während anderer Timer noch läuft. Ruft dies Schwierigkeiten hervor? Java Basics - Anfänger-Themen 0
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
P Geht dieser Code noch einfacher? Java Basics - Anfänger-Themen 16
I fertige xml-datein in eine noch aufzubauende xml-datei einfügen Java Basics - Anfänger-Themen 4
M Java von kopf bis Fuß noch zeitgemäß ? Java Basics - Anfänger-Themen 18
S noch ein ArrayIndexOutOfBoundsException Fehler Java Basics - Anfänger-Themen 2
Q queue.remove Element trotzdem noch vorhanden. Java Basics - Anfänger-Themen 10
S Musik einfügen funktioniert noch nicht Java Basics - Anfänger-Themen 6
P Noch zum Thema Arrays Java Basics - Anfänger-Themen 13
K Wofür wird heute noch die Stack Klasse in Java genutzt Java Basics - Anfänger-Themen 4
O Noch einmal Methoden Java Basics - Anfänger-Themen 9
T socket.close aber verbindung besteht noch Java Basics - Anfänger-Themen 4
C Threads Auffindung noch laufender Programmteile Java Basics - Anfänger-Themen 2
M Weder Consolenausgabe noch Fehlermeldung! Java Basics - Anfänger-Themen 5
E Prüfen, ob entfernte JVM noch aktiv ist? Java Basics - Anfänger-Themen 5
S ArrayList nur ergänzen wenn Element noch nicht vorhanden Java Basics - Anfänger-Themen 4
J Wie java programm noch schneller machen? Java Basics - Anfänger-Themen 30
C Umsteiger hat noch ein paar Fragen Java Basics - Anfänger-Themen 11
M file löschen, streams evtl noch offen Java Basics - Anfänger-Themen 7
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
K Bestehenden Chat modifizieren (noch ein Anfänger!) Java Basics - Anfänger-Themen 7
C Hilfe!!! Ich werd noch wahnsinnig... Java Basics - Anfänger-Themen 3
I Module und Testumgebung noch nicht verstanden... Java Basics - Anfänger-Themen 6
G Weder IE noch Firefox zeigen mir Java Applets an Java Basics - Anfänger-Themen 5
K Scrollpane - versteh nur noch Fragezeichen Java Basics - Anfänger-Themen 6
K Alle noch nicht umgedrehte Karten umdrehen ? Java Basics - Anfänger-Themen 2
S @ override + noch was Java Basics - Anfänger-Themen 3
D Kann noch fast nichts, funktioniert auch fast nichts! Java Basics - Anfänger-Themen 8
K Hier noch ein Konstruktor aufbauen Java Basics - Anfänger-Themen 6
G Threads prüfen, ob diese noch laufen. Java Basics - Anfänger-Themen 3
S Wie runden man noch mal auf bestimmte stellen? Java Basics - Anfänger-Themen 8
D noch ein kleines Problem Java Basics - Anfänger-Themen 4
M OOP und ich - irgendwie verträgt sich das noch nicht. Java Basics - Anfänger-Themen 6
F jbutton and noch was^^ Java Basics - Anfänger-Themen 15
R Noch ein paar Anfängerfragen. Java Basics - Anfänger-Themen 4
R Noch eine Frage: Breite des Applets im Browser ermitteln Java Basics - Anfänger-Themen 7
G Array-Länge bei Erzeugung noch unbekannt - wie erzeugen? Java Basics - Anfänger-Themen 12
T Binärbaum - noch ein "klitzekleiner Fehler" Java Basics - Anfänger-Themen 4
P Textdateischreiben, etwas fehlt noch bzw. 1 error kommt Java Basics - Anfänger-Themen 4
J referenz auf noch nicht erzeugte objekte? Java Basics - Anfänger-Themen 2
J Noch ein Parser Problem Java Basics - Anfänger-Themen 7
M Noch eins: TextFeldArray hinzufügen Java Basics - Anfänger-Themen 7
M Zufallszahlen fertig! aber nice to have noch offen Java Basics - Anfänger-Themen 5
C Abfragen, ob Objekt noch existiert Java Basics - Anfänger-Themen 5
A wieviel platz ist noch frei? Java Basics - Anfänger-Themen 2
A Noch ne kleine Beanshell Frage Java Basics - Anfänger-Themen 7
S Testen ob ein Char Array noch nicht belegt ist! Java Basics - Anfänger-Themen 3
M Testen ob ein Sample noch abgespielt wird Java Basics - Anfänger-Themen 6
N Mittelwert (fast fertig, nur noch 2 fehler ;-) ) Java Basics - Anfänger-Themen 14
N Und noch eine Frage über getRuntime() Java Basics - Anfänger-Themen 4
D Programm läuft - trotzdem noch ein Fehler drin. Java Basics - Anfänger-Themen 21
S Noch ungelöst ! Klasse JTable und Klasse Drucken verknüpfen. Java Basics - Anfänger-Themen 8
A Noch ein Anfänger..... Java Basics - Anfänger-Themen 7
M Und noch eine Java Basics - Anfänger-Themen 2
G Fenster maximieren? Suche genutzt geht aber noch nich :( Java Basics - Anfänger-Themen 16
A noch mal bitoperater Java Basics - Anfänger-Themen 2
A Sind JDK immer abwärts komatibel? Java Basics - Anfänger-Themen 17
krgewb Immer dieselbe Zufallszahl Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
F Warum muss ich ein SSL cert immer manuell hinzufügen? Java Basics - Anfänger-Themen 46
J Componente immer in Front halten, wie? Java Basics - Anfänger-Themen 5
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
D Codeblöcke, die immer wieder im Programmverlauf benötigt werden Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben