<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://uberthings.com/teaching/wiki/index.php?action=history&amp;feed=atom&amp;title=CameraMidlet</id>
	<title>CameraMidlet - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://uberthings.com/teaching/wiki/index.php?action=history&amp;feed=atom&amp;title=CameraMidlet"/>
	<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=CameraMidlet&amp;action=history"/>
	<updated>2026-05-30T12:29:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=CameraMidlet&amp;diff=1779&amp;oldid=prev</id>
		<title>Deprimer at 10:56, 8 February 2007</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=CameraMidlet&amp;diff=1779&amp;oldid=prev"/>
		<updated>2007-02-08T10:56:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* This MIDlet consists of two classes: CameraMidlet and CameraCanvas. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
import javax.microedition.media.*;&lt;br /&gt;
import javax.microedition.media.control.*;&lt;br /&gt;
import javax.microedition.midlet.MIDlet;&lt;br /&gt;
import javax.microedition.media.control.VideoControl;&lt;br /&gt;
&lt;br /&gt;
public class CameraMidlet extends MIDlet implements CommandListener {&lt;br /&gt;
    &lt;br /&gt;
    private Display display;&lt;br /&gt;
    private Form form;&lt;br /&gt;
    private Command exit,back,capture,camera;&lt;br /&gt;
    private Player player;&lt;br /&gt;
    private VideoControl videoControl;&lt;br /&gt;
    private Video video;&lt;br /&gt;
    &lt;br /&gt;
    public CameraMidlet() {&lt;br /&gt;
        &lt;br /&gt;
        exit = new Command(&amp;quot;Exit&amp;quot;, Command.EXIT, 0);&lt;br /&gt;
        camera = new Command(&amp;quot;Camera&amp;quot;, Command.SCREEN, 0);&lt;br /&gt;
        back = new Command(&amp;quot;Back&amp;quot;, Command.BACK, 0);&lt;br /&gt;
        capture = new Command(&amp;quot;Capture&amp;quot;, Command.SCREEN, 0);&lt;br /&gt;
        &lt;br /&gt;
        form = new Form(&amp;quot;Capture Video&amp;quot;);&lt;br /&gt;
        form.addCommand(camera);&lt;br /&gt;
        form.setCommandListener(this);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void startApp() {&lt;br /&gt;
        display = Display.getDisplay(this);&lt;br /&gt;
        display.setCurrent(form);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void pauseApp() {}&lt;br /&gt;
    &lt;br /&gt;
    public void destroyApp(boolean unconditional) {}&lt;br /&gt;
    &lt;br /&gt;
    public void commandAction(Command c, Displayable s) {&lt;br /&gt;
        if (c == exit) {&lt;br /&gt;
            destroyApp(true);&lt;br /&gt;
            notifyDestroyed();&lt;br /&gt;
        } else if (c == camera) {&lt;br /&gt;
            showCamera();&lt;br /&gt;
        } else if (c == back)&lt;br /&gt;
            display.setCurrent(form);&lt;br /&gt;
        else if (c == capture) {&lt;br /&gt;
            video = new Video(this);&lt;br /&gt;
            video.start();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void showCamera() {&lt;br /&gt;
        try {&lt;br /&gt;
            player = Manager.createPlayer(&amp;quot;capture://video&amp;quot;);&lt;br /&gt;
            player.realize();&lt;br /&gt;
            &lt;br /&gt;
            videoControl = (VideoControl)player.getControl(&amp;quot;VideoControl&amp;quot;);&lt;br /&gt;
            Canvas canvas = new CameraCanvas(this, videoControl);&lt;br /&gt;
            canvas.addCommand(back);&lt;br /&gt;
            canvas.addCommand(capture);&lt;br /&gt;
            canvas.setCommandListener(this);&lt;br /&gt;
            display.setCurrent(canvas);&lt;br /&gt;
            player.start();&lt;br /&gt;
        } catch (IOException ioe) {} catch (MediaException me) {}&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    class Video extends Thread {&lt;br /&gt;
        CameraMidlet midlet;&lt;br /&gt;
        public Video(CameraMidlet midlet) {&lt;br /&gt;
            this.midlet = midlet;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        public void run() {&lt;br /&gt;
            captureVideo();&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        public void captureVideo() {&lt;br /&gt;
            try { &lt;br /&gt;
                byte[] raw = videoControl.getSnapshot(null);&lt;br /&gt;
                Image image = Image.createImage(raw, 0, raw.length);&lt;br /&gt;
                form.append(image);&lt;br /&gt;
                display.setCurrent(form);&lt;br /&gt;
                &lt;br /&gt;
                player.close();&lt;br /&gt;
                player = null;&lt;br /&gt;
                videoControl = null;&lt;br /&gt;
                raw = null;&lt;br /&gt;
            } catch (MediaException me) { }&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import javax.microedition.lcdui.*;&lt;br /&gt;
import javax.microedition.media.MediaException;&lt;br /&gt;
import javax.microedition.media.control.VideoControl;&lt;br /&gt;
&lt;br /&gt;
public class CameraCanvas extends Canvas {&lt;br /&gt;
    private CameraMidlet midlet;&lt;br /&gt;
    &lt;br /&gt;
    public CameraCanvas(CameraMidlet midlet, VideoControl videoControl) {&lt;br /&gt;
        int width = getWidth();&lt;br /&gt;
        int height = getHeight();&lt;br /&gt;
        this.midlet = midlet;&lt;br /&gt;
        &lt;br /&gt;
        videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);&lt;br /&gt;
        try {&lt;br /&gt;
            videoControl.setDisplayLocation(2, 2);&lt;br /&gt;
            videoControl.setDisplaySize(width - 4, height - 4);&lt;br /&gt;
        } catch (MediaException me) {}&lt;br /&gt;
        videoControl.setVisible(true);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void paint(Graphics g) {&lt;br /&gt;
        int width = getWidth();&lt;br /&gt;
        int height = getHeight();&lt;br /&gt;
        &lt;br /&gt;
        g.setColor(0x00ff00);&lt;br /&gt;
        g.drawRect(0, 0, width - 1, height - 1);&lt;br /&gt;
        g.drawRect(1, 1, width - 3, height - 3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Deprimer</name></author>
	</entry>
</feed>