Persönlicher Wecker mit Sprüchen - soll im Hintergrund laufen

Es ist eigentlich egal ob die Methode start( ) .. startGUI( ) oder was sonst heisst ..

Wichtig ist, dass der Thread mit dem Timer halt alleine läuft .. und erst endet und die andere Methode aufruft , wenn der gewünschte Zeitpkt eintritt ..
 
Original geschrieben von Jasi
Also in der Applikation sieht man ein Bild und ein gif, das durchs Bild läuft. Zudem wird ein sehr unangenehmer 'Aufwach Sound' abgespielt... DAS ist die Applikation.
Aber die soll ja nicht die ganze Zeit laufen. ;) Wie ich sie nun im Hintergrund laufen kann weiß ich nicht. Reicht das echt, wenn ich einfach im run ne Schleife einbau die erst die Uhrzeit checkt und dann zu der gewissen Uhrzeit in die 'run' Funktion wechselt und die Applikation DANN erst richtig startet?

Für die Eingabe der gewünschten Zeit x brauch ich ja erstmal keine gui. Das soll ja erstmal überhaupt laufen.

Also in der run() läuft die Warteschleife, die dann über start() die eigentliche Applikation startet!?

Hallo Jasi,

ich glaube, Du bringst viele Sachen durcheinander:

1. Das Starten von einem Programm bedeutet nicht automatisch, dass man eine GUI anzeigt. Öffne mal den Task-Manager unter Windows und schaue Dir die ganzen Programme an, die immer im Hintergrund laufen, von dennen Du nie was mitkriegst. ;)

2. Wann und ob überhaupt Du eine grafische Oberfläche anzeigst, ist Dir überlassen, denn ein Java-Programm ist nicht unbedingt ein Applet oder ein Fenster.

3. Die run() Methode in meinem letzten Beitrag soll eben im Hintergrund laufen (ohne die GUI anzuzeigen) und in bestimmten Zeitabständen die checkTime() Methode aufrufen (die musst Du dann selbst implementieren). Wenn die checkTime() Methode feststellt: "Aha, es ist soweit", ruft sie halt eine weitere Methode auf, die dann eine Oberfläche zusammenbaut und anzeigt (das kann z.B. ein JFrame sein). Du kannst natürlich die Oberfläche gleich beim Starten des Programms zusammenbauen und dann nur auf "visible" setzen, wenn's soweit ist.;)

Also, ich hoffe, ich konnte Dir helfen :)

Gruß
Vincent
 
JAA JUHUU

:) tuts.

Aber da ich ja eine Frau bin, bin ich längst noch nicht befreidigt. Allerdings stell ich mich irgendwie blöder an als ich eigentlich bin.

Wie spiel ich denn nun sound ab solange das fenster offen ist soll einfach ein sound gespielt werden. Die Funktion ist play() (oder loop) aber ich bekommte schon die Initialisierung nicht hin. Hab noch nie Sounds eingebaut.

import javax.sound.sampled.AudioFileFormat;

Mein Sound Example hatte ich von hier
Aber das bezieht sich ja alles auf ein Applet und keine Applikation...
Was muss ich also importieren wenn ich ein wav abspielen möchte? Wie initialisiere ich ein soundFile ?
 
Hier ist aber wieder nur die Applet version... Obwohl ich das aus der Applikation - Beschreibung kopiert hab meckert der . Ich müsste warscheinlich java Applet importen... Weil: er kennt AudioClip nicht.

AudioClip clip;
clip = Applet.newAudioClip(newAudioClip(new URL("file:/sound/clip.au"));

Importiert habe ich folgende Sachen:

import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.sound.sampled.AudioFileFormat;

In der Reference stehen nur so komische Sachen drin von wegen Audio FormatFile...

Direkter Linke hier
.
 
Ich bin leicht schockiert. Ist das echt so aufwendig n sound abzuspielen?
Ich dachte ich müsste nur den Typ importieren, ein Objekt erstellen und könnte direkt 'play' sagen.
 
Ich schaffs auch nicht das komplette Programm das da als Beispiel steht in mein Weckerprogramm eizubinden. Weil beide ja ne main methode haben und diese try und catch sachen...
Da mein Wecker aber so keine Funktion hat, werde ich dieses Programm wohl einfach verwerfen. Weckt er halt nur taube.
Klar, als Applet wär das ganze realisierbar. Aber nicht so wie ich mir das denke, dass es ein eigenständiges Programm ist und so.

Trotzdem danke, dass ihr mir geholfen habt.

:(

*edit* zu erwähnen wäre noch gewesen, dass das mein erstes Projekt war. Alles vorher waren im Kurs nur so Programmfetzen wo man mal ne Schleife macht oder so, aber nichts zusammenhängendes. Schade.
 
Halt, nicht sofort aufgeben! :)

Ich habe das Beispiel soweit wie möglich vereinfacht. Nimm diese Methode hier:
Code:
private static void playSampleFile(String name) throws Exception {
        //AudioInputStream öffnen
        AudioInputStream ais = AudioSystem.getAudioInputStream(new File(name));
        AudioFormat format = ais.getFormat();
        //Clip erzeugen und öffnen
        DataLine.Info info = new DataLine.Info(Clip.class, format);
        Clip clip = (Clip) AudioSystem.getLine(info);
        clip.open(ais);
        //Clip abspielen
        clip.start();
        while (true) {
            try {
                Thread.sleep(100);
            } catch (Exception e) {
                //nothing
            }
            if (!clip.isRunning()) {
                break;
            }
        }
        clip.stop();
        clip.close();
    }
Also noch einfacher geht es nicht. ;)

Gruß
Vincent
 
Zurück