Hey leute,
habe da ein kleines Applet-Programm geschrieben, dass mir alle 500 ms ein neus bild lädt und anzeigt. Klappt auch wunderbar im Applet-Viewer. Jedoch wenn ich das Applet in eine HTML-Seite einbinde und im Browser starte (FF und IE) wird das Bild nur am anfang geladen und nicht mehr aktualisiert. dieses Problem tritt jedoch nur mit der jre 1.6 auf. mit 1.5 hat das Aktualisieren im Browser geklappt.
die einziegste Lösung, die mir bis jetzt eingefallen ist, biem anfordern des bildes eine zufallszahl hintendranzuhängen. dadurch wird das Bild im Browser zwar aktualisiert, aber max. alle 2 sec. (obwohl Interval auf 500 ms gesetzt ist) und mit einer hohen CPU-Auslastung.
Hat jeman eine Idee was da los ist???
habe da ein kleines Applet-Programm geschrieben, dass mir alle 500 ms ein neus bild lädt und anzeigt. Klappt auch wunderbar im Applet-Viewer. Jedoch wenn ich das Applet in eine HTML-Seite einbinde und im Browser starte (FF und IE) wird das Bild nur am anfang geladen und nicht mehr aktualisiert. dieses Problem tritt jedoch nur mit der jre 1.6 auf. mit 1.5 hat das Aktualisieren im Browser geklappt.
Code:
import java.awt.*;
import java.applet.*;
import java.net.URL;
import java.text.DateFormat;
import java.util.Date;
public class LiveCam extends Applet implements Runnable
{
private static final long serialVersionUID = 1L;
Image img;
Thread liveThread;
int timeInterval=500;
String time="";
public void destroy()
{
liveThread.stop();
}
public void run()
{
while (true)
{
try
{
// lege den Thread schlafen
Thread.sleep(timeInterval);
// das Image in den Buffer ablegen
img.flush();
img = getImage(new URL("http://localhost/live.jpg"));
// warte bis Image geladen ist
MediaTracker mediaTracker_track = new MediaTracker(this);
mediaTracker_track.addImage(img, 1);
mediaTracker_track.waitForID(1);
// zeichne neues Image
repaint();
}
catch (Exception e)
{
System.out.println("Caught:"+e.toString());
}
}
}
public void init()
{
try
{
//img = getImage(getCodeBase(),"live.jpg");
img = getImage(new URL("http://localhost/live.jpg"));
MediaTracker mediaTracker_track = new MediaTracker(this);
mediaTracker_track.addImage(img, 1);
mediaTracker_track.waitForID(1);
}
catch(Exception e)
{
showStatus("Problem getting initial image: "+e.toString());
return;
}
liveThread = new Thread(this);
liveThread.start();
}
public void paint(Graphics g)
{
try
{
DateFormat dateInstance = DateFormat.getDateTimeInstance();
time = dateInstance.format( new Date() );
}
catch ( Exception e )
{
e.printStackTrace();
}
g.drawImage(img, 0,0, this);
g.drawString("Time:", 0,300);
g.drawString(time, 40,300);
}
}
die einziegste Lösung, die mir bis jetzt eingefallen ist, biem anfordern des bildes eine zufallszahl hintendranzuhängen. dadurch wird das Bild im Browser zwar aktualisiert, aber max. alle 2 sec. (obwohl Interval auf 500 ms gesetzt ist) und mit einer hohen CPU-Auslastung.
Hat jeman eine Idee was da los ist???