Just if anyone cares, here's the source code! Of course the device needs enough memory to have one *gasp* 640*480 bitmap stored, but once you free up enough it should work for a while! It'll work for FOSCAMs and similar IP cameras that output 640x480 jpegs via
(very insecure
) GET transmission of your credentials
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.MalformedURLException;
import java.net.URL;
class IPCamViewer extends Frame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private MediaTracker mediatracker;
private ImageCanvas imageCanvas;
private Image image;
private String host;
private int port;
private String username;
private String password;
private String url;
private int refreshRate = 5000; // refresh rate in ms
IPCamViewer(String host_, int port_, String username_, String password_) {
super("IP Cam Viewer - "+host_+":"+port_);
this.host = host_;
this.port = port_;
this.username = username_;
this.password = password_;
url= "http://"+host+":"+port+"/snapshot.cgi?user="+username+"&pwd="+password;
// Setup
setLayout(new BorderLayout());
setSize(640, 480);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowevent) {
System.exit(0);
}
});
show();
// create Image Canvas
imageCanvas = new ImageCanvas();
mediatracker = new MediaTracker(imageCanvas);
image = null;
//updateImage();
while(true){
try {
updateImage();
Thread.sleep(refreshRate);
} catch (InterruptedException e) {
System.out.println("Interrupted");
return;
}
}
}
public void updateImage(){
if(image!= null){
mediatracker.removeImage(image, 0);
image = null;
System.gc();
}
try {
image = getToolkit().getImage(new URL(url));
} catch (MalformedURLException e) {
System.out.println("Bad url");
}
if (image == null) {
System.out.println("Error loading image");
return;
}
mediatracker.addImage(image, 0);
try {
mediatracker.waitForAll();
} catch (Exception exception) {
exception.printStackTrace();
}
imageCanvas.setImage(image);
add(imageCanvas, "Center");
show();
}
public static void main(String args[]) {
new IPCamViewer("<hostname of IP cam>",<port>,"<username>","<password>"); // fill in data here
}
public void actionPerformed(ActionEvent actionevent) {
System.out.println(actionevent.getActionCommand());
if (actionevent.getActionCommand().equals("Close"))
System.exit(0);
}
}