<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>J2ME Codes</title>
	<link>http://j2me-codes.inhandlearning.com</link>
	<description>J2ME Source Code Examples, sample, midlet, multimedia, rms, video, graphics, game</description>
	<pubDate>Thu, 11 Jun 2009 03:29:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>Google Translate API in JavaME (J2ME)</title>
		<link>http://j2me-codes.inhandlearning.com/?p=43</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=43#comments</comments>
		<pubDate>Wed, 27 May 2009 08:29:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[library]]></category>

		<category><![CDATA[j2me google translate library]]></category>

		<category><![CDATA[j2me library]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=43</guid>
		<description><![CDATA[Google Translate API in JavaME (J2ME)
J2ME users now can instantly use Google Translator using a simple API to use Google Translate in JavaME (J2ME) platform. It uses the Google AJAX Language API to do the translation via a HTTP connection.
Requirements: CLDC-1.1 MIDP-1.0
To Install it, simply include the google-api-translate-javame.jar file in your application&#8217;s classpath.
Download google-api-translate-javame 1.0
Try [...]]]></description>
			<content:encoded><![CDATA[<p>Google Translate API in JavaME (J2ME)<br />
J2ME users now can instantly use Google Translator using a simple API to use Google Translate in JavaME (J2ME) platform. It uses the Google AJAX Language API to do the translation via a HTTP connection.</p>
<p>Requirements: CLDC-1.1 MIDP-1.0</p>
<p>To Install it, simply include the google-api-translate-javame.jar file in your application&#8217;s classpath.</p>
<p>Download <a href="http://google-api-translate-javame.googlecode.com/files/google-api-translate-javame-1.0.jar" rel="nofollow">google-api-translate-javame 1.0</a></p>
<p>Try the sample midlet below for getting started:</p>
<pre class="prettyprint"><span class="kwd">import</span><span class="pln"> com</span><span class="pun">.</span><span class="pln">google</span><span class="pun">.</span><span class="pln">api</span><span class="pun">.</span><span class="pln">javame</span><span class="pun">.*;</span><span class="pln">

</span><span class="kwd">import</span><span class="pln"> javax</span><span class="pun">.</span><span class="pln">microedition</span><span class="pun">.</span><span class="pln">lcdui</span><span class="pun">.</span><span class="typ">Display</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">import</span><span class="pln"> javax</span><span class="pun">.</span><span class="pln">microedition</span><span class="pun">.</span><span class="pln">lcdui</span><span class="pun">.</span><span class="typ">TextBox</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">import</span><span class="pln"> javax</span><span class="pun">.</span><span class="pln">microedition</span><span class="pun">.</span><span class="pln">lcdui</span><span class="pun">.</span><span class="typ">TextField</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">import</span><span class="pln"> javax</span><span class="pun">.</span><span class="pln">microedition</span><span class="pun">.</span><span class="pln">midlet</span><span class="pun">.</span><span class="typ">MIDlet</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> TestMidlet1 </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">MIDlet</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">TextBox</span><span class="pln"> tb</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> startApp</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        tb </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">TextBox</span><span class="pun">(</span><span class="str">&#8220;Google Translate API for JavaME&#8221;</span><span class="pun">,</span><span class="pln"> </span><span class="str">&#8220;&#8221;</span><span class="pun">,</span><span class="pln"> </span><span class="lit">500</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TextField</span><span class="pun">.</span><span class="pln">ANY</span><span class="pun">);</span><span class="pln">

        </span><span class="kwd">try</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

            </span><span class="typ">String</span><span class="pln"> translatedText </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Translate</span><span class="pun">.</span><span class="pln">translate</span><span class="pun">(</span><span class="str">&#8220;How are you&#8221;</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Language</span><span class="pun">.</span><span class="pln">ENGLISH</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Language</span><span class="pun">.</span><span class="pln">FRENCH</span><span class="pun">);</span><span class="pln">

            tb</span><span class="pun">.</span><span class="pln">setString</span><span class="pun">(</span><span class="pln">translatedText</span><span class="pun">);</span><span class="pln">

            </span><span class="typ">Display</span><span class="pun">.</span><span class="pln">getDisplay</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">).</span><span class="pln">setCurrent</span><span class="pun">(</span><span class="pln">tb</span><span class="pun">);</span><span class="pln">

        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Exception</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> pauseApp</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> destroyApp</span><span class="pun">(</span><span class="kwd">boolean</span><span class="pln"> unconditional</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=43</wfw:commentRss>
		</item>
		<item>
		<title>J2ME Encryption with Bouncy Castle</title>
		<link>http://j2me-codes.inhandlearning.com/?p=41</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=41#comments</comments>
		<pubDate>Thu, 22 Nov 2007 06:50:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=41</guid>
		<description><![CDATA[import org.bouncycastle.crypto.*;import org.bouncycastle.crypto.engines.*;import org.bouncycastle.crypto.modes.*;import org.bouncycastle.crypto.params.*;
public class Encryptor {
private BufferedBlockCipher cipher;private KeyParameter key;
// inisialisasi engine kriptografi.// array key paling sedikit 8 bytes.public Encryptor( byte[] key ){cipher = new PaddedBlockCipher(new CBCBlockCipher(new DESEngine() ) );this.key = new KeyParameter( key );}
// inisialisasi engine kriptografi.// string paling sedikit 8 chars.public Encryptor( String key ){this( key.getBytes() );}
private byte[] callCipher( byte[] data [...]]]></description>
			<content:encoded><![CDATA[<p>import org.bouncycastle.crypto.*;<br />import org.bouncycastle.crypto.engines.*;<br />import org.bouncycastle.crypto.modes.*;<br />import org.bouncycastle.crypto.params.*;</p>
<p>public class Encryptor {</p>
<p>private BufferedBlockCipher cipher;<br />private KeyParameter key;</p>
<p>// inisialisasi engine kriptografi.<br />// array key paling sedikit 8 bytes.<br />public Encryptor( byte[] key ){<br />cipher = new PaddedBlockCipher(new CBCBlockCipher(new DESEngine() ) );<br />this.key = new KeyParameter( key );<br />}</p>
<p>// inisialisasi engine kriptografi.<br />// string paling sedikit 8 chars.<br />public Encryptor( String key ){<br />this( key.getBytes() );<br />}</p>
<p>private byte[] callCipher( byte[] data ) throws CryptoException {<br />int size = cipher.getOutputSize( data.length );<br />byte[] result = new byte[ size ];<br />int olen = cipher.processBytes( data, 0, data.length, result, 0 );<br />olen += cipher.doFinal( result, olen );<br />if( olen <><br />byte[] tmp = new byte[ olen ];<br />System.arraycopy( result, 0, tmp, 0, olen );<br />result = tmp;<br />}<br />return result;<br />}</p>
<p>// enkripsi arbitrary byte array<br />// mengembalikan data terenkripsi dalam bentuk yang berbeda<br />public synchronized byte[] encrypt( byte[] data ) throws CryptoException {<br />if( data == null || data.length == 0 ){<br />return new byte[0];<br />}</p>
<p>cipher.init( true, key );<br />return callCipher( data );<br />}</p>
<p>// enkripsi string.<br />public byte[] encryptString( String data ) throws CryptoException {</p>
<p>if( data == null || data.length() == 0 ){<br />return new byte[0];<br />}<br />return encrypt( data.getBytes() );<br />}</p>
<p>// Dekrip arbitrary data.<br />public synchronized byte[] decrypt( byte[] data )<br />throws CryptoException {<br />if( data == null || data.length == 0 ){<br />return new byte[0];<br />}</p>
<p>cipher.init( false, key );<br />return callCipher( data );<br />}</p>
<p>// Dekrip string<br />public String decryptString( byte[] data )<br />throws CryptoException {</p>
<p>if( data == null || data.length == 0 ){</p>
<p>return &#8220;&#8221;;</p>
<p>}<br />return new String( decrypt( data ) );<br />}<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=41</wfw:commentRss>
		</item>
		<item>
		<title>View PNG Image with Thread</title>
		<link>http://j2me-codes.inhandlearning.com/?p=40</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=40#comments</comments>
		<pubDate>Mon, 23 Jul 2007 11:10:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me multimedia]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=40</guid>
		<description><![CDATA[ 
/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
 * ViewPngThread.java
 *
 * Download and view a png file. The download is
 * done in the background with a separate thread 
 *
 * Example from the book:     Core J2ME Technology
 * Copyright John W. Muchow   http://www.CoreJ2ME.com
 * You may use/modify for any non-commercial purpose
 *&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/
 [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>* ViewPngThread.java<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>*<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>* Download and view a png file. The download is<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>* done in the background with a separate thread <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>*<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>* Example from the book:<span style="">     </span>Core J2ME Technology<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>* Copyright John W. Muchow<span style="">   </span>http://www.CoreJ2ME.com<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>* You may use/modify for any non-commercial purpose<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>import javax.microedition.midlet.*;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>import javax.microedition.lcdui.*;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>import javax.microedition.io.*;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>import java.io.*;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p><br /></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">public class ViewPngThread extends MIDlet implements CommandListener<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p><span style="">  </span>private Display display;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p><span style="">  </span>private TextBox tbMain;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p><span style="">  </span>private Alert alStatus;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p><span style="">  </span>private Form fmViewPng;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p><span style="">  </span>private Command cmExit;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p><span style="">  </span>private Command cmView;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p><span style="">  </span>private Command cmBack;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p><span style="">  </span>private static final int ALERT_DISPLAY_TIME = 3000;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>Image im = null;<span style="">  </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public ViewPngThread()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>display = Display.getDisplay(this);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Create the Main textbox with a maximum of 75 characters<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>tbMain = new TextBox(&#8221;Enter url&#8221;, &#8220;http://www.corej2me.com/midpbook_v1e1/ch14/bird.png&#8221;, 75, 0);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Create commands and add to textbox<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>cmExit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>cmView = new Command(&#8221;View&#8221;, Command.SCREEN, 2);<span style="">    </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>tbMain.addCommand(cmExit);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>tbMain.addCommand(cmView );<span style="">    </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Set up a listener for textbox<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>tbMain.setCommandListener(this);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Create the form that will hold the png image<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>fmViewPng = new Form(&#8221;");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Create commands and add to form<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>cmBack = new Command(&#8221;Back&#8221;, Command.BACK, 1);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>fmViewPng.addCommand(cmBack);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Set up a listener for form<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>fmViewPng.setCommandListener(this);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public void startApp()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>display.setCurrent(tbMain);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public void pauseApp()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{ }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public void destroyApp(boolean unconditional)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{ }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* Process events<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public void commandAction(Command c, Displayable s)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// If the Command button pressed was &#8220;Exit&#8221;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>if (c == cmExit)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>destroyApp(false);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>notifyDestroyed();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>else if (c == cmView)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// Show alert indicating we are starting a download.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// This alert is NOT modal, it appears for<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// approximately 3 seconds (see ALERT_DISPLAY_TIME)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>showAlert(&#8221;Downloading&#8221;, false, tbMain);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// Create an instance of the class that will<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// download the file in a separate thread<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>Download dl = new Download(tbMain.getString(), this);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// Start the thread/download<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>dl.start(); <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>} <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>else if (c == cmBack)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>display.setCurrent(tbMain);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* Called by the thread after attempting to download<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* an image. If the parameter is &#8216;true&#8217; the download<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* was successful, and the image is shown on a form. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* If<span style="">  </span>parameter is &#8216;false&#8217; the download failed, and<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* the user is returned to the textbox.<span style="">  </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>*<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* In either case, show an alert indicating the <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* the result of the download.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public void showImage(boolean flag)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Download failed&#8230; <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>if (flag == false)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// Alert followed by the main textbox<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>showAlert(&#8221;Download Failure&#8221;, true, tbMain);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>else<span style="">  </span>// Successful download&#8230;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>ImageItem ii = new ImageItem(null, im, ImageItem.LAYOUT_DEFAULT, null);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">          </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// If there is already an image, set (replace) it<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>if (fmViewPng.size() != 0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>fmViewPng.set(0, ii);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>else<span style="">  </span>// Append the image to the empty form<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>fmViewPng.append(ii);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// Alert followed by the form holding the image<span style="">      </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>showAlert(&#8221;Download Successful&#8221;, true, fmViewPng);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<span style="">      </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* Show an alert with the parameters determining<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* the type (modal or not) and the displayable to<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* show after the alert is dismissed<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public void showAlert(String msg, boolean modal, Displayable displayable)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">     </span>// Create alert, add text, associate a sound<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>alStatus = new Alert(&#8221;Status&#8221;, msg, null, AlertType.INFO);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Set the alert type<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>if (modal)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>alStatus.setTimeout(Alert.FOREVER);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>alStatus.setTimeout(ALERT_DISPLAY_TIME);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Show the alert, followed by the displayable<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>display.setCurrent(alStatus, displayable);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">* Class - Download<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">*<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">* Download an image file in a separate thread<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<span style="">  </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">class Download implements Runnable<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>private String url;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>private ViewPngThread MIDlet;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>private boolean downloadSuccess = false;<span style="">  </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public Download(String url, ViewPngThread MIDlet)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{ <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>this.url = url;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>this.MIDlet = MIDlet;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* Download the image<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public void run() <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>try<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>getImage(url);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>catch (Exception e)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{ <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>System.err.println(&#8221;Msg: &#8221; + e.toString());<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<span style="">      </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* Create and start the new thread<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<span style="">  </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>public void start()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>Thread thread = new Thread(this);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>try<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>thread.start();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>catch (Exception e)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>* Open connection and download png into a byte array.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>private void getImage(String url) throws IOException<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>ContentConnection connection = (ContentConnection) Connector.open(url);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// * There is a bug in MIDP 1.0.3 in which read() sometimes returns<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>//<span style="">   </span>an invalid length. To work around this, I have changed the <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>//<span style="">   </span>stream to DataInputStream and called readFully() instead of read()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">//<span style="">    </span>InputStream iStrm = connection.openInputStream();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>DataInputStream iStrm = connection.openDataInputStream();<span style="">    </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>ByteArrayOutputStream bStrm = null;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>Image im = null;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>try<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// ContentConnection includes a length method<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>byte imageData[];<span style="">      </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>int length = (int) connection.getLength();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>if (length != -1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>imageData = new byte[length];<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>// Read the png into an array<span style="">        </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">//<span style="">        </span>iStrm.read(imageData);<span style="">        </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>iStrm.readFully(imageData);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>else<span style="">  </span>// Length not available&#8230;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>{<span style="">       </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>bStrm = new ByteArrayOutputStream();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>int ch;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>while ((ch = iStrm.read()) != -1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">          </span>bStrm.write(ch);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>imageData = bStrm.toByteArray();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style=""> </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// Create the image from the byte array<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>im = Image.createImage(imageData, 0, imageData.length);<span style="">        </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>finally<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>// Clean up<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>if (connection != null)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>connection.close();<span style="">      </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>if (iStrm != null)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>iStrm.close();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>if (bStrm != null)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">        </span>bStrm.close();<span style="">                        </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>// Return to the caller the status of the download<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>if (im == null)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>MIDlet.showImage(false);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>MIDlet.im = im;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">      </span>MIDlet.showImage(true);<span style="">              </span><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">    </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><span style="">  </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: Verdana;">}<o:p></o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=40</wfw:commentRss>
		</item>
		<item>
		<title>Canvas for processing game actions</title>
		<link>http://j2me-codes.inhandlearning.com/?p=39</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=39#comments</comments>
		<pubDate>Thu, 19 Jul 2007 01:39:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=39</guid>
		<description><![CDATA[/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;* GameActions.java** Canvas for processing game actions** Example from the book:     Core J2ME Technology* Copyright John W. Muchow   http://www.CoreJ2ME.com* You may use/modify for any non-commercial purpose*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/  import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class GameActions extends MIDlet{  private Display  display;       // The display  [...]]]></description>
			<content:encoded><![CDATA[<p>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />* GameActions.java<br />*<br />* Canvas for processing game actions<br />*<br />* Example from the book:     Core J2ME Technology<br />* Copyright John W. Muchow   http://www.CoreJ2ME.com<br />* You may use/modify for any non-commercial purpose<br />*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/  <br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>public class GameActions extends MIDlet<br />{<br />  private Display  display;       // The display<br />  private GameActionCanvas canvas;   // Canvas </p>
<p>  public GameActions()<br />  {<br />    display = Display.getDisplay(this);<br />    canvas  = new GameActionCanvas(this);<br />  }</p>
<p>  protected void startApp()<br />  {<br />    display.setCurrent( canvas );<br />  }</p>
<p>  protected void pauseApp()<br />  { }</p>
<p>  protected void destroyApp( boolean unconditional )<br />  { }</p>
<p>  public void exitMIDlet()<br />  {<br />    destroyApp(true);<br />    notifyDestroyed();<br />  }<br />}</p>
<p>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />* GameActionCanvas.java<br />*<br />* Game action event handling<br />*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<br />class GameActionCanvas extends Canvas implements CommandListener<br />{<br />  private Command cmExit;          // Exit midlet<br />  private String keyText = null;    // Key code text<br />  private GameActions midlet;</p>
<p>  /*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />  * Constructor<br />  *&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<br />  public GameActionCanvas(GameActions midlet)<br />  {<br />    this.midlet = midlet;</p>
<p>    // Create exit command &#038; listen for events<br />    cmExit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);<br />    addCommand(cmExit);<br />    setCommandListener(this);<br />  } </p>
<p>  /*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />  * Paint the text representing the key code <br />  *&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<br />  protected void paint(Graphics g)<br />  {<br />    // Clear the background (to white)<br />    g.setColor(255, 255, 255);<br />    g.fillRect(0, 0, getWidth(), getHeight());</p>
<p>    // Set color and draw text<br />    if (keyText != null)<br />    {<br />      // Draw with black pen<br />      g.setColor(0, 0, 0);<br />      // Center the text<br />      g.drawString(keyText, getWidth()/2, getHeight()/2, Graphics.TOP | Graphics.HCENTER);<br />    }<br />  }</p>
<p>  /*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />  * Command event handling<br />  *&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/  <br />  public void commandAction(Command c, Displayable d)<br />  {<br />    if (c == cmExit)<br />      midlet.exitMIDlet();<br />  }</p>
<p>  /*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />  * Game action event handling<br />  * A game action will be converted into a key code <br />  * and handed off to this method<br />  *&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/  <br />  protected void keyPressed(int keyCode)<br />  {<br />    switch (getGameAction(keyCode))<br />    {<br />      // Place logic of each action inside the case<br />      case FIRE:<br />      case UP: <br />      case DOWN:<br />      case LEFT:<br />      case RIGHT:<br />      case GAME_A:<br />      case GAME_B:<br />      case GAME_C:<br />      case GAME_D:<br />      default:<br />        // Print the text of the game action<br />        keyText = getKeyName(keyCode);<br />    }        <br />    repaint();<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=39</wfw:commentRss>
		</item>
		<item>
		<title>Display Alert</title>
		<link>http://j2me-codes.inhandlearning.com/?p=38</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=38#comments</comments>
		<pubDate>Thu, 19 Jul 2007 01:28:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me multimedia]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=38</guid>
		<description><![CDATA[//jad file (please verify the jar size)/*MIDlet-Name: DisplayAlertMIDlet-Version: 1.0MIDlet-Vendor: MyCompanyMIDlet-Jar-URL: DisplayAlert.jarMIDlet-1: DisplayAlert, , DisplayAlertMicroEdition-Configuration: CLDC-1.0MicroEdition-Profile: MIDP-1.0MIDlet-JAR-SIZE: 100
*/import javax.microedition.lcdui.Alert;import javax.microedition.lcdui.AlertType;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;
public class DisplayAlert extends MIDlet implements CommandListener {  private Display display;
  private Alert alert;
  private Form form = new Form(&#8221;Throw Exception&#8221;);
  private Command exit = new [...]]]></description>
			<content:encoded><![CDATA[<p>//jad file (please verify the jar size)<br />/*<br />MIDlet-Name: DisplayAlert<br />MIDlet-Version: 1.0<br />MIDlet-Vendor: MyCompany<br />MIDlet-Jar-URL: DisplayAlert.jar<br />MIDlet-1: DisplayAlert, , DisplayAlert<br />MicroEdition-Configuration: CLDC-1.0<br />MicroEdition-Profile: MIDP-1.0<br />MIDlet-JAR-SIZE: 100</p>
<p>*/<br />import javax.microedition.lcdui.Alert;<br />import javax.microedition.lcdui.AlertType;<br />import javax.microedition.lcdui.Command;<br />import javax.microedition.lcdui.CommandListener;<br />import javax.microedition.lcdui.Display;<br />import javax.microedition.lcdui.Displayable;<br />import javax.microedition.lcdui.Form;<br />import javax.microedition.midlet.MIDlet;<br />import javax.microedition.midlet.MIDletStateChangeException;</p>
<p>public class DisplayAlert extends MIDlet implements CommandListener {<br />  private Display display;</p>
<p>  private Alert alert;</p>
<p>  private Form form = new Form(&#8221;Throw Exception&#8221;);</p>
<p>  private Command exit = new Command(&#8221;Exit&#8221;, Command.SCREEN, 1);</p>
<p>  private boolean exitFlag = false;</p>
<p>  public DisplayAlert() {<br />    display = Display.getDisplay(this);<br />    form.addCommand(exit);<br />    form.setCommandListener(this);<br />  }</p>
<p>  public void startApp() {<br />    display.setCurrent(form);<br />  }</p>
<p>  public void pauseApp() {<br />  }</p>
<p>  public void destroyApp(boolean unconditional) throws MIDletStateChangeException {<br />    if (unconditional == false) {<br />      throw new MIDletStateChangeException();<br />    }<br />  }</p>
<p>  public void commandAction(Command command, Displayable displayable) {<br />    if (command == exit) {<br />      try {<br />        if (exitFlag == false) {<br />          alert = new Alert(&#8221;Busy&#8221;, &#8220;Please try again.&#8221;, null, AlertType.WARNING);<br />          alert.setTimeout(Alert.FOREVER);<br />          display.setCurrent(alert, form);<br />          destroyApp(false);<br />        } else {<br />          destroyApp(true);<br />          notifyDestroyed();<br />        }<br />      } catch (Exception exception) {<br />        exitFlag = true;<br />      }<br />    }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=38</wfw:commentRss>
		</item>
		<item>
		<title>Accessing Commands</title>
		<link>http://j2me-codes.inhandlearning.com/?p=37</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=37#comments</comments>
		<pubDate>Thu, 19 Jul 2007 01:26:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me multimedia]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=37</guid>
		<description><![CDATA[/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;* AccessingCommands.java** Example from the book:     Core J2ME Technology* Copyright John W. Muchow   http://www.CoreJ2ME.com* You may use/modify for any non-commercial purpose*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class AccessingCommands extends MIDlet implements CommandListener{  private Display display;      // Reference to Display object  private Form fmMain;   [...]]]></description>
			<content:encoded><![CDATA[<p>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />* AccessingCommands.java<br />*<br />* Example from the book:     Core J2ME Technology<br />* Copyright John W. Muchow   http://www.CoreJ2ME.com<br />* You may use/modify for any non-commercial purpose<br />*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>public class AccessingCommands extends MIDlet implements CommandListener<br />{<br />  private Display display;      // Reference to Display object<br />  private Form fmMain;         // A Form  <br />  private Command cmExit;      // A Command to exit the MIDlet</p>
<p>  public AccessingCommands()<br />  {<br />    display = Display.getDisplay(this);</p>
<p>    cmExit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);</p>
<p>    fmMain = new Form(&#8221;Core J2ME&#8221;);<br />    fmMain.addCommand(cmExit);<br />    fmMain.setCommandListener(this);<br />  }</p>
<p>  // Called by application manager to start the MIDlet.<br />  public void startApp()<br />  {<br />    display.setCurrent(fmMain);<br />  }</p>
<p>  // A required method<br />  public void pauseApp()<br />  { }</p>
<p>  // A required method<br />  public void destroyApp(boolean unconditional)<br />  { }</p>
<p>  // Check to see if our Exit command was selected<br />  public void commandAction(Command c, Displayable s)<br />  {<br />    if (c == cmExit)<br />    {<br />      destroyApp(false);<br />      notifyDestroyed();<br />    }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=37</wfw:commentRss>
		</item>
		<item>
		<title>Sample of graphics, commands, and event handling.</title>
		<link>http://j2me-codes.inhandlearning.com/?p=36</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=36#comments</comments>
		<pubDate>Thu, 19 Jul 2007 01:23:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=36</guid>
		<description><![CDATA[/* * @(#)Sample.java  1.9 01/06/08 * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved. */
import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
/* * A quick sample of graphics,  commands, and event handling. */public class SampleCanvasMIDlet extends MIDlet implements CommandListener {    Display display;    Command exitCommand;    Command backCommand;   [...]]]></description>
			<content:encoded><![CDATA[<p>/*<br /> * @(#)Sample.java  1.9 01/06/08<br /> * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.<br /> */</p>
<p>import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>/*<br /> * A quick sample of graphics,  commands, and event handling.<br /> */<br />public class SampleCanvasMIDlet extends MIDlet implements CommandListener {<br />    Display display;<br />    Command exitCommand;<br />    Command backCommand;<br />    Command okCommand;<br />    SampleCanvas sample; // Instance of sample canvas</p>
<p>    List itemMenu;<br />    List exclusiveList;<br />    List multipleList;<br />    TextBox textbox;<br />    Ticker ticker;<br />    Alert alert;<br />    Form form;<br />    StringItem stringItem;<br />    ImageItem imageItem;<br />    Image image;<br />    TextField textItem;<br />    ChoiceGroup choiceItem;<br />    DateField dateItem;<br />    Gauge gaugeItem;</p>
<p>    public SampleCanvasMIDlet() {<br />        display = Display.getDisplay(this);<br />        exitCommand = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);<br />        backCommand = new Command(&#8221;Back&#8221;, Command.BACK, 2);<br />        okCommand = new Command(&#8221;OK&#8221;, Command.OK, 3);</p>
<p>        ticker = new Ticker(&#8221;Select an item to display&#8221;);<br />        itemMenu = new List(null, Choice.IMPLICIT);<br />        itemMenu.append(&#8221;Canvas&#8221;, null);<br />        itemMenu.append(&#8221;Form&#8221;, null);<br />        itemMenu.append(&#8221;Alert&#8221;, null);<br />        itemMenu.append(&#8221;TextBox&#8221;, null);<br />        itemMenu.append(&#8221;Exclusive List&#8221;, null);<br />        itemMenu.append(&#8221;Multiple Choice&#8221;, null);</p>
<p>        itemMenu.setCommandListener(this);<br />        itemMenu.addCommand(exitCommand);<br />        itemMenu.setTicker(ticker);<br />        display.setCurrent(itemMenu);<br />    }</p>
<p>    public void startApp () {<br />    }</p>
<p>    public void destroyApp (boolean unconditional) {<br />    }</p>
<p>    public void pauseApp () {<br />    }</p>
<p>    public void commandAction(Command c, Displayable s) {<br />        if (c == backCommand) {<br />            display.setCurrent(itemMenu);<br />        } else if (s == itemMenu) {<br />            if (c == List.SELECT_COMMAND) {<br />                // Handle the item sected to be displayed<br />                int i = itemMenu.getSelectedIndex();<br />                switch (i) {<br />                    case 0: // Show Sample canvas<br />                        display.setCurrent(getCanvas());<br />                        break;<br />                    case 1: // Show the form<br />                        display.setCurrent(getForm());<br />                        break;<br />                    case 2: // Show an alert<br />                        display.setCurrent(getAlert(&#8221;Warning&#8221;, <br />                                &#8220;This window will dismiss in two seconds.&#8221;));<br />                        break;<br />                    case 3: // Show TextBox<br />                        display.setCurrent(getTextBox());<br />                        break;<br />                    case 4: // Show Exclusive list<br />                        display.setCurrent(getExclusiveList());<br />                        break;<br />                    case 5: // Show Multiple List<br />                        display.setCurrent(getMultipleList());<br />                        break;<br />                }<br />            } else if (c == exitCommand) {<br />                notifyDestroyed();<br />            }<br />        } else if (s == exclusiveList) {<br />            int i = exclusiveList.getSelectedIndex();<br />            String value = exclusiveList.getString(i);<br />            alert = getAlert(&#8221;Border selected:&#8221;, value);<br />            display.setCurrent(alert, itemMenu);<br />        } else if (s == multipleList) {<br />            StringBuffer b = new StringBuffer();<br />            for (int i = 0; i <= 2; i++) {<br />                if (multipleList.isSelected(i)) {<br />                    b.append(multipleList.getString(i));<br />                    b.append(&#8221;\n&#8221;);<br />                }<br />            }<br />            alert = getAlert(&#8221;Colors selected:&#8221;, b.toString());<br />            display.setCurrent(alert, itemMenu);<br />        } else if (s == textbox) {<br />            String value = textbox.getString();<br />            alert = getAlert(&#8221;Text Entered:&#8221;, value);<br />            display.setCurrent(alert, itemMenu);<br />        } else if (s == form) {<br />            alert = getAlert(&#8221;Image options  saved&#8221;, &#8220;&#8221;);<br />            display.setCurrent(alert, itemMenu);<br />        }<br />    }</p>
<p>    SampleCanvas getCanvas() {<br />        if (sample == null) {<br />            sample = new SampleCanvas();<br />            sample.addCommand(backCommand);<br />            sample.setCommandListener(this);<br />        }<br />        return sample;<br />    }</p>
<p>    List getExclusiveList() {<br />        if (exclusiveList == null) {<br />            exclusiveList = new List(&#8221;Border Style&#8221;, Choice.EXCLUSIVE);<br />            exclusiveList.append(&#8221;None&#8221;, null);<br />            exclusiveList.append(&#8221;Plain&#8221;, null);<br />            exclusiveList.append(&#8221;Fancy&#8221;, null);<br />            exclusiveList.addCommand(backCommand);<br />            exclusiveList.addCommand(okCommand);<br />            exclusiveList.setCommandListener(this);<br />        }<br />        return exclusiveList;<br />    }</p>
<p>    List getMultipleList() {<br />        if (multipleList == null) {<br />            multipleList = new List(&#8221;Colors to mix&#8221;, Choice.MULTIPLE);<br />            multipleList.append(&#8221;Red&#8221;, null);<br />            multipleList.append(&#8221;Green&#8221;, null);<br />            multipleList.append(&#8221;Blue&#8221;, null);<br />            multipleList.addCommand(backCommand);<br />            multipleList.addCommand(okCommand);<br />            multipleList.setCommandListener(this);<br />        }<br />        return multipleList;<br />    }</p>
<p>    TextBox getTextBox() {<br />        if (textbox == null) {<br />            textbox = new TextBox(&#8221;Enter a phone number&#8221;,&#8221;", 40,<br />          TextField.PHONENUMBER);<br />            textbox.addCommand(backCommand);<br />            textbox.addCommand(okCommand);<br />            textbox.setCommandListener(this);<br />        }<br />        return textbox;<br />    }</p>
<p>    Alert getAlert(String title, String contents) {<br />        if (alert == null) {<br />            alert = new Alert(title);<br />            alert.setType(AlertType.WARNING);<br />            alert.setTimeout(2000);<br />      alert.setString(contents); <br />        } else {<br />            alert.setTitle(title);<br />            alert.setString(contents);<br />        }<br />        return alert;<br />    }</p>
<p>    Form getForm() {<br />         if (form == null) {<br />            form = new Form(&#8221;Options&#8221;);</p>
<p>            try {<br />                image = Image.createImage(&#8221;/images/PhotoAlbum.png&#8221;);<br />                imageItem = new ImageItem(&#8221;Preview:&#8221;, image, <br />                            ImageItem.LAYOUT_NEWLINE_BEFORE, &#8220;Mountain&#8221;);<br />                form.append(imageItem);<br />            } catch (java.io.IOException ex) {<br />            }</p>
<p>            textItem = new TextField(&#8221;Title:&#8221;, &#8220;Mountain&#8221;, 32,<br />             TextField.ANY);<br />            form.append(textItem);</p>
<p>            dateItem = new DateField(&#8221;Date:&#8221;, DateField.DATE);<br />            dateItem.setDate(new java.util.Date());<br />            form.append(dateItem);</p>
<p>            choiceItem = new ChoiceGroup(&#8221;Size:&#8221;, Choice.EXCLUSIVE);<br />            choiceItem.append(&#8221;Small&#8221;, null);<br />            choiceItem.append(&#8221;Large&#8221;, null);<br />            form.append(choiceItem);</p>
<p>            gaugeItem = new Gauge(&#8221;Speed:&#8221;, true, 10, 5);<br />            form.append(gaugeItem);</p>
<p>            form.addCommand(backCommand);<br />            form.addCommand(okCommand);<br />            form.setCommandListener(this);<br />        }<br />        return form;<br />    }<br />}</p>
<p>class SampleCanvas extends Canvas {<br />    int     x, y;           // Location of cross hairs<br />    String  event = &#8220;&#8221;;     // Last key event type<br />    int     keyCode;        // Last keyCode pressed<br />    Font    font;           // Font used for drawing text<br />    int     fh;             // height of the font<br />    int     w, h;           // width and height of the canvas<br />    int     titleHeight;    // Height of the title<br />    int     pieSize;        // Size of the Pie chart used for width and height<br />    int     barSize;        // Size of the Bar chart used for width and height<br />    int     eventHeight;    // Size of the event region<br />    int     pad;            // Padding used between items</p>
<p>    SampleCanvas() {<br />        w = getWidth();<br />        h = getHeight();<br />        font = Font.getFont(Font.FACE_SYSTEM,<br />          Font.STYLE_PLAIN, Font.SIZE_SMALL);<br />        fh = font.getHeight();</p>
<p>        /* Compute the sizes of the bar and pie charts<br />         * It should use all the space except for the title<br />   * and event regions.<br />         * Don&#8217;t let the charts get too small<br />         */<br />        pad = 2;<br />        titleHeight = fh + pad * 2;<br />        eventHeight = fh * 3;<br />        barSize = h - (titleHeight + pad) - (eventHeight + pad);<br />        if (barSize < 20)               // Don't let them get too small<br />            barSize = 20;<br />        if (barSize > (w - pad) / 2)    // Shrink to 1/2 width<br />            barSize = (w - pad) / 2;<br />        pieSize = barSize;<br />    }</p>
<p>    protected void keyPressed(int key) {<br />        keyCode = key;<br />        event = &#8220;Pressed&#8221;;<br />        handleActions(key);<br />        repaint();<br />    }</p>
<p>    protected void keyRepeated(int key) {<br />        keyCode = key;<br />        event = &#8220;Repeated&#8221;;<br />        handleActions(key);<br />        repaint();<br />    }</p>
<p>    protected void keyReleased(int key) {<br />        keyCode = key;<br />        event = &#8220;Released&#8221;;<br />        repaint();<br />    }</p>
<p>    protected void pointerPressed(int x, int y) {<br />        this.x = x;<br />        this.y = y;<br />        keyCode = 0;<br />        event = &#8220;Pressed&#8221;;<br />        repaint();<br />    }<br />    protected void pointerReleased(int x, int y) {<br />        this.x = x;<br />        this.y = y;<br />        keyCode = 0;<br />        event = &#8220;Released&#8221;;<br />        repaint();<br />    }</p>
<p>    protected void pointerDragged(int x, int y) {<br />        this.x = x;<br />        this.y = y;<br />        keyCode = 0;<br />        event = &#8220;Dragged&#8221;;<br />    }</p>
<p>    void handleActions(int keyCode) {<br />        int action = getGameAction(keyCode);<br />        switch (action) {<br />            case LEFT:<br />            x -= 1;<br />            break;<br />            case RIGHT:<br />            x += 1;<br />            break;<br />            case UP:<br />            y -= 1;<br />            break;<br />            case DOWN:<br />            y += 1;<br />            break;<br />        }<br />    }</p>
<p>    protected void paint(Graphics g) {</p>
<p>        g.setFont(font);<br />        g.setGrayScale(255);<br />        g.fillRect(0, 0, w, h);</p>
<p>        x = (x < 0) ? w - 1 : x;<br />        y = (y < 0) ? h - 1 : y;<br />        x = x % w;<br />        y = y % h;</p>
<p>        // Draw Fill and outline for background of title Text<br />        int swidth = pad * 2 + font.stringWidth(&#8221;Pie and Bar Samples&#8221;);<br />        int title_x = (w - swidth)/2;</p>
<p>        g.setGrayScale(128);<br />        g.fillRoundRect(title_x, 0, swidth, fh, 5, 5);<br />        g.setGrayScale(0);<br />        g.drawRoundRect(title_x, 0, swidth, fh, 5, 5);</p>
<p>        // Sample Text<br />        g.setColor(0, 0, 0);<br />        g.drawString(&#8221;Pie and Bar Samples&#8221;, <br />         title_x + pad, pad, Graphics.TOP|Graphics.LEFT);</p>
<p>  // Translate to below title text<br />        g.translate(0, titleHeight + pad);</p>
<p>        /*<br />   * Draw pie chart on the left side<br />   * using the barSize for width and height<br />   */<br />        g.setColor(255, 0, 0);<br />        g.fillArc(0, 0, pieSize, pieSize, 45, 270);<br />        g.setColor(0, 255, 0);<br />        g.fillArc(0, 0, pieSize, pieSize, 0, 45);<br />        g.setColor(0, 0, 255);<br />        g.fillArc(0, 0, pieSize, pieSize, 0, -45);<br />        g.setColor(0);<br />        g.drawArc(0, 0, pieSize, pieSize, 0, 360);</p>
<p>        // Draw Bar chart on right side of the display<br />        // scale the values to the pieSize maximum value<br />        int yorig = barSize;<br />        int h1 = barSize / 3, h2 = barSize / 2, h3 = barSize;<br />        int avg = (h1 + h2 + h3) / 3;</p>
<p>        // Move over to draw Bar chart<br />        g.translate((w + pad) / 2, 0);</p>
<p>        int bw = pieSize / 7;<br />        if (bw < 2)<br />             bw = 2;<br />        g.setColor(255, 0, 0);<br />        g.fillRect(bw*1, yorig-h1, bw+1, h1);<br />        g.setColor(0, 255, 0);<br />        g.fillRect(bw*3, yorig-h2, bw+1, h2);<br />        g.setColor(0, 0, 255);<br />        g.fillRect(bw*5, yorig-h3, bw+1, h3);<br />        g.setColor(0);<br />        g.drawRect(bw*1, yorig-h1, bw, h1);<br />        g.drawRect(bw*3, yorig-h2, bw, h2);<br />        g.drawRect(bw*5, yorig-h3, bw, h3);</p>
<p>        // Draw axis for bar chart.<br />        g.setGrayScale(0);<br />        g.drawLine(0, 0, 0, yorig);<br />        g.drawLine(0, yorig, barSize, yorig);<br />        g.setStrokeStyle(Graphics.DOTTED);<br />        g.drawLine(0, yorig - avg, barSize, yorig-avg);<br />        g.setStrokeStyle(Graphics.SOLID);</p>
<p>  // Restore to left and move down<br />        g.translate(-(w + pad) / 2, pieSize + pad);</p>
<p>        // Draw the key and pointer status<br />        g.setColor(128, 128, 128);<br />        int col1 = font.stringWidth(&#8221;Action:&#8221;);<br />        g.drawString(&#8221;Key: &#8220;,      col1,     0,<br />         Graphics.TOP|Graphics.RIGHT);<br />        g.drawString(keyString(keyCode), col1, 0,<br />         Graphics.TOP|Graphics.LEFT);<br />        g.drawString(&#8221;Action:&#8221;,    col1,     fh,<br />         Graphics.TOP|Graphics.RIGHT);<br />        g.drawString(actionString(keyCode), col1, fh,<br />         Graphics.TOP|Graphics.LEFT);<br />        g.drawString(&#8221;Event:&#8221;,     col1,     fh*2,<br />         Graphics.TOP|Graphics.RIGHT);<br />        g.drawString(event,        col1,     fh*2,<br />         Graphics.TOP|Graphics.LEFT);<br />        int col2 = 80;<br />        g.drawString(&#8221;x:&#8221;,         col2,     0,<br />         Graphics.TOP|Graphics.RIGHT);<br />        g.drawString(Integer.toString(x), col2, 0,<br />         Graphics.TOP|Graphics.LEFT);<br />        g.drawString(&#8221;y:&#8221;,         col2,     fh,<br />         Graphics.TOP|Graphics.RIGHT);<br />        g.drawString(Integer.toString(y), col2, fh,<br />         Graphics.TOP|Graphics.LEFT);</p>
<p>        // Restore the origin and draw the crosshairs on top<br />        g.translate(-g.getTranslateX(), -g.getTranslateY());</p>
<p>        g.setColor(0, 0, 0);<br />        g.drawLine(x, y - 5, x, y + 5);<br />        g.drawLine(x - 5, y, x + 5, y);<br />    }</p>
<p>    String keyString(int keyCode) {<br />        if (keyCode == 0) {<br />            return &#8220;&#8221;;<br />        }<br />        return Integer.toString(keyCode);<br />    }</p>
<p>    String actionString(int keyCode) {<br />        if (keyCode == 0) {<br />            return &#8220;&#8221;;<br />        }</p>
<p>  int action = getGameAction(keyCode);<br />  switch (action) {<br />  case FIRE:<br />      return &#8220;Fire&#8221;;<br />  case LEFT:<br />      return &#8220;Left&#8221;;<br />  case RIGHT:<br />      return &#8220;Right&#8221;;<br />  case DOWN:<br />      return &#8220;Down&#8221;;<br />  case UP:<br />      return &#8220;Up&#8221;;<br />  case GAME_A:<br />      return &#8220;Game A&#8221;;<br />  case GAME_B:<br />      return &#8220;Game B&#8221;;<br />  case GAME_C:<br />      return &#8220;Game C&#8221;;<br />  case GAME_D:<br />      return &#8220;Game D&#8221;;<br />  case 0:<br />      return &#8220;&#8221;;<br />  default:<br />      return Integer.toString(action);<br />  }<br />    }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=36</wfw:commentRss>
		</item>
		<item>
		<title>Thread Example in J2ME</title>
		<link>http://j2me-codes.inhandlearning.com/?p=35</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=35#comments</comments>
		<pubDate>Tue, 17 Jul 2007 11:57:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=35</guid>
		<description><![CDATA[/*
J2ME: The Complete Reference
James Keogh
Publisher: McGraw-Hill
ISBN 0072227109
*/
// jad file (Please verify the jar size first)
/*
MIDlet-Name: BackgroundProcessing
MIDlet-Version: 1.0
MIDlet-Vendor: MyCompany
MIDlet-Jar-URL: BackgroundProcessing.jar
MIDlet-1: BackgroundProcessing, , BackgroundProcessing
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
MIDlet-JAR-SIZE: 100
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
public class BackgroundProcessing extends MIDlet
implements CommandListener
{
private Display display;
private Form form;
private Command exit;
private Command start;
public BackgroundProcessing()
{
display = Display.getDisplay(this);
form = new Form(&#8221;Background Processing&#8221;);
exit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);
start = [...]]]></description>
			<content:encoded><![CDATA[<p>/*<br />
J2ME: The Complete Reference</p>
<p>James Keogh</p>
<p>Publisher: McGraw-Hill</p>
<p>ISBN 0072227109</p>
<p>*/<br />
// jad file (Please verify the jar size first)<br />
/*<br />
MIDlet-Name: BackgroundProcessing<br />
MIDlet-Version: 1.0<br />
MIDlet-Vendor: MyCompany<br />
MIDlet-Jar-URL: BackgroundProcessing.jar<br />
MIDlet-1: BackgroundProcessing, , BackgroundProcessing<br />
MicroEdition-Configuration: CLDC-1.0<br />
MicroEdition-Profile: MIDP-1.0<br />
MIDlet-JAR-SIZE: 100</p>
<p>*/<br />
import javax.microedition.midlet.*;<br />
import javax.microedition.lcdui.*;<br />
import javax.microedition.io.*;<br />
import java.io.*;</p>
<p>public class BackgroundProcessing extends MIDlet<br />
implements CommandListener<br />
{<br />
private Display display;<br />
private Form form;<br />
private Command exit;<br />
private Command start;<br />
public BackgroundProcessing()<br />
{<br />
display = Display.getDisplay(this);<br />
form = new Form(&#8221;Background Processing&#8221;);<br />
exit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);<br />
start = new Command(&#8221;Start&#8221;, Command.SCREEN, 2);<br />
form.addCommand(exit);<br />
form.addCommand(start );<br />
form.setCommandListener(this);<br />
}<br />
public void startApp()<br />
{<br />
display.setCurrent(form);<br />
}<br />
public void pauseApp()<br />
{<br />
}<br />
public void destroyApp(boolean unconditional)<br />
{<br />
}<br />
public void commandAction(Command command, Displayable displayable)<br />
{<br />
if (command == exit)<br />
{<br />
destroyApp(false);<br />
notifyDestroyed();<br />
}<br />
else if (command == start)<br />
{<br />
Process process = new Process(this);<br />
process.start();<br />
//Do foreground processing here<br />
}<br />
}<br />
}<br />
class Process implements Runnable<br />
{<br />
private BackgroundProcessing MIDlet;<br />
public Process(BackgroundProcessing MIDlet)<br />
{<br />
this.MIDlet = MIDlet;<br />
}<br />
public void run()<br />
{<br />
try<br />
{<br />
transmit ();<br />
}<br />
catch (Exception error)<br />
{<br />
System.err.println(error.toString());<br />
}<br />
}<br />
public void start()<br />
{<br />
Thread thread = new Thread(this);<br />
try<br />
{<br />
thread.start();<br />
}<br />
catch (Exception error)<br />
{<br />
}<br />
}<br />
private void transmit() throws IOException<br />
{<br />
//Place code here to receive or send transmission.<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=35</wfw:commentRss>
		</item>
		<item>
		<title>Storing Image into RMS</title>
		<link>http://j2me-codes.inhandlearning.com/?p=34</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=34#comments</comments>
		<pubDate>Mon, 16 Jul 2007 11:33:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me rms]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=34</guid>
		<description><![CDATA[import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.rms.*;
import java.io.*;
public class ImageStore extends MIDlet  implements CommandListener {
private Command CmdExit;
private Command CmdOpen;
private Command CmdBack;
private Command CmdSave;
private Display display;
RecordStore rStore;
Form form = null;
Image image = null;
InputStream is =null;
public ImageStore() {
rStore = null;
display = Display.getDisplay(this);
CmdExit = new Command(&#8221;Exit&#8221;, 1, 2);
CmdOpen = new Command(&#8221;Show&#8221;, 1, 3);
CmdBack = new Command(&#8221;Back&#8221;, 1, 3);
CmdSave = new [...]]]></description>
			<content:encoded><![CDATA[<p>import javax.microedition.lcdui.*;<br />
import javax.microedition.midlet.MIDlet;<br />
import javax.microedition.rms.*;<br />
import java.io.*;</p>
<p>public class ImageStore extends MIDlet  implements CommandListener {</p>
<p>private Command CmdExit;<br />
private Command CmdOpen;<br />
private Command CmdBack;<br />
private Command CmdSave;<br />
private Display display;<br />
RecordStore rStore;<br />
Form form = null;<br />
Image image = null;<br />
InputStream is =null;</p>
<p>public ImageStore() {</p>
<p>rStore = null;</p>
<p>display = Display.getDisplay(this);</p>
<p>CmdExit = new Command(&#8221;Exit&#8221;, 1, 2);<br />
CmdOpen = new Command(&#8221;Show&#8221;, 1, 3);<br />
CmdBack = new Command(&#8221;Back&#8221;, 1, 3);<br />
CmdSave = new Command(&#8221;Save&#8221;, 1, 3);</p>
<p>form = new Form(&#8221;Image Show&#8221;);</p>
<p>}</p>
<p>public void startApp() {<br />
try {<br />
rStore = RecordStore.openRecordStore(&#8221;imagefile&#8221;, true);<br />
} catch(RecordStoreException recordstoreexception) {<br />
recordstoreexception.printStackTrace();<br />
}<br />
try {</p>
<p>is = getClass().getResourceAsStream(&#8221;/leaf.jpg&#8221;);<br />
image = Image.createImage(is);<br />
form.append(image);</p>
<p>} catch(IOException ioexception) { }<br />
form.addCommand(CmdExit);<br />
form.addCommand(CmdSave);<br />
form.addCommand(CmdOpen);<br />
form.setCommandListener(this);<br />
display.setCurrent(form);<br />
}</p>
<p>public void pauseApp() {<br />
}</p>
<p>public void Close() {<br />
try {<br />
rStore.closeRecordStore();<br />
} catch(RecordStoreNotOpenException recordstorenotopenexception) {<br />
recordstorenotopenexception.printStackTrace();<br />
} catch(RecordStoreException recordstoreexception) {<br />
recordstoreexception.printStackTrace();<br />
}<br />
}</p>
<p>public void destroyApp(boolean flag) {<br />
Close();<br />
}</p>
<p>public Image load(int width,int height) {</p>
<p>byte[] b = null;<br />
String imagename = null;<br />
Image image = null;</p>
<p>try {</p>
<p>int i = rStore.getNumRecords();</p>
<p>for(int j = 1; j &lt; i + 1; j++) {</p>
<p>if(rStore.getRecord(j) != null) {</p>
<p>b = rStore.getRecord(j);<br />
ByteArrayInputStream  bin =<br />
new ByteArrayInputStream( b );</p>
<p>DataInputStream   din = new DataInputStream( bin );</p>
<p>imagename = din.readUTF();<br />
int remaining =<br />
(b.length-imagename.getBytes().length-2)/4;</p>
<p>int[] rawdata = new int[remaining];</p>
<p>for(int k =0 ;k &lt; rawdata.length ;k++) {<br />
rawdata[k] = din.readInt();<br />
}</p>
<p>image = Image.createRGBImage(rawdata,<br />
width, height, false);</p>
<p>bin.reset();<br />
din.close();<br />
din =null;<br />
}<br />
}<br />
} catch (IOException e) {</p>
<p>e.printStackTrace();</p>
<p>} catch(RecordStoreException recordstoreexception) {</p>
<p>recordstoreexception.printStackTrace();</p>
<p>}</p>
<p>return image;<br />
}</p>
<p>public boolean save(Image img, int width,<br />
int height, String imgName) {</p>
<p>if (img == null || width &lt; 0 || height &lt; 0 || imgName == null) {</p>
<p>throw new IllegalArgumentException(&#8221;Check arguments&#8221;);</p>
<p>}</p>
<p>int[] imgRgbData = new int[width * height];</p>
<p>try {</p>
<p>img.getRGB(imgRgbData, 0, width, 0, 0, width, height);</p>
<p>} catch (Exception e) {<br />
// Problem getting image RGB data<br />
return false;<br />
}<br />
try {<br />
// Write image data to output stream (in order to get<br />
// the record bytes in needed form)<br />
ByteArrayOutputStream baos = new ByteArrayOutputStream();<br />
DataOutputStream dos = new DataOutputStream(baos);<br />
dos.writeUTF(imgName);</p>
<p>for (int i = 0; i &lt; imgRgbData.length; i++) {<br />
dos.writeInt(imgRgbData[i]);<br />
}</p>
<p>// Open record store, create if it doesn&#8217;t exist<br />
rStore.addRecord(baos.toByteArray(), 0,<br />
baos.toByteArray().length);  // Add record</p>
<p>} catch (RecordStoreNotFoundException rsnfe) {<br />
// Record storage not found<br />
return false;<br />
} catch (RecordStoreException rse) {<br />
// Other record storage problem<br />
return false;<br />
} catch (IOException ioe) {<br />
// Problem writing data<br />
return false;<br />
}</p>
<p>return true; // We&#8217;ve successfuly done<br />
}</p>
<p>public void commandAction(Command command, Displayable displayable) {</p>
<p>if(command == CmdExit) {</p>
<p>destroyApp(true);<br />
notifyDestroyed();</p>
<p>}<br />
else if(command == CmdOpen) {</p>
<p>Form showform = new Form(&#8221;Image from DB&#8221;);<br />
Image i = load(image.getWidth(),image.getHeight());</p>
<p>if(i !=null ) {</p>
<p>Image img = Image.createImage(i);<br />
showform.append(img);</p>
<p>}</p>
<p>showform.addCommand(CmdBack);<br />
showform.setCommandListener(this);<br />
display.setCurrent(showform);</p>
<p>} else if(command == CmdBack) {</p>
<p>display.setCurrent(form);</p>
<p>} else  if(command == CmdSave) {</p>
<p>byte[] b = null;<br />
Alert a =new Alert(&#8221;Image saved&#8221;);</p>
<p>try {<br />
if(save(image,image.getWidth(),image.getHeight(),&#8221;leaf&#8221;))<br />
a.setString(&#8221;Success&#8221;);<br />
else<br />
a.setString(&#8221;Failed&#8221;);<br />
a.setTimeout(1000);<br />
} catch (Exception e) {<br />
e.printStackTrace();<br />
}<br />
display.setCurrent(a);<br />
}<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=34</wfw:commentRss>
		</item>
		<item>
		<title>Animation Midlet</title>
		<link>http://j2me-codes.inhandlearning.com/?p=33</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=33#comments</comments>
		<pubDate>Mon, 16 Jul 2007 11:26:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me multimedia]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=33</guid>
		<description><![CDATA[/*J2ME in a NutshellBy Kim TopleyISBN: 0-596-00253-X
*/
import java.util.Timer;import java.util.TimerTask;import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Gauge;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Item;import javax.microedition.lcdui.ItemStateListener;import javax.microedition.midlet.MIDlet;
public class AnimationMIDlet extends MIDlet                         implements CommandListener, ItemStateListener {
    [...]]]></description>
			<content:encoded><![CDATA[<p>/*<br />J2ME in a Nutshell<br />By Kim Topley<br />ISBN: 0-596-00253-X</p>
<p>*/</p>
<p>import java.util.Timer;<br />import java.util.TimerTask;<br />import javax.microedition.lcdui.Canvas;<br />import javax.microedition.lcdui.Command;<br />import javax.microedition.lcdui.CommandListener;<br />import javax.microedition.lcdui.Display;<br />import javax.microedition.lcdui.Displayable;<br />import javax.microedition.lcdui.Form;<br />import javax.microedition.lcdui.Gauge;<br />import javax.microedition.lcdui.Graphics;<br />import javax.microedition.lcdui.Item;<br />import javax.microedition.lcdui.ItemStateListener;<br />import javax.microedition.midlet.MIDlet;</p>
<p>public class AnimationMIDlet extends MIDlet <br />                        implements CommandListener, ItemStateListener {</p>
<p>    // The MIDlet&#8217;s Display object<br />    private Display display;</p>
<p>    // Flag indicating first call of startApp<br />    protected boolean started;</p>
<p>    // Exit command<br />    private Command exitCommand;</p>
<p>    // Setup command<br />    private Command setupCommand;</p>
<p>    // Run command<br />    private Command runCommand;</p>
<p>    // Configuration form<br />    private Form form;</p>
<p>    // Animation canvas<br />    private AnimationCanvas canvas;</p>
<p>    // Gauge for block count<br />    private Gauge blockGauge;</p>
<p>    // Gauge for frame rate<br />    private Gauge rateGauge;</p>
<p>    // Initial frame rate<br />    private static final int FRAME_RATE = 1;</p>
<p>    // Initial number of blocks<br />    private static final int BLOCK_COUNT = 1;</p>
<p>    protected void startApp() {<br />        if (!started) {<br />            display = Display.getDisplay(this);<br />            form = new Form(&#8221;Animation&#8221;);<br />            rateGauge = new Gauge(&#8221;Frame rate&#8221;, true, 10, FRAME_RATE);<br />            blockGauge = new Gauge(&#8221;Blocks&#8221;, true, 4, BLOCK_COUNT);<br />            form.append(rateGauge);<br />            form.append(blockGauge);<br />            form.setItemStateListener(this);</p>
<p>            canvas = createAnimationCanvas();            </p>
<p>            exitCommand = new Command(&#8221;Exit&#8221;, Command.EXIT, 0);<br />            setupCommand = new Command(&#8221;Setup&#8221;, Command.SCREEN, 0);<br />            runCommand = new Command(&#8221;Run&#8221;, Command.SCREEN, 0);</p>
<p>            canvas.addCommand(exitCommand);<br />            canvas.addCommand(setupCommand);<br />            form.addCommand(exitCommand);<br />            form.addCommand(runCommand);</p>
<p>            form.setCommandListener(this);<br />            canvas.setCommandListener(this);</p>
<p>            display.setCurrent(form);<br />            started = true;<br />        }<br />    }</p>
<p>    protected void pauseApp() {<br />    }</p>
<p>    protected void destroyApp(boolean unconditional) {<br />    }    </p>
<p>    public void commandAction(Command c, Displayable d) {<br />        if (c == exitCommand) {<br />            // Exit. No need to call destroyApp<br />            // because it is empty.<br />            notifyDestroyed();<br />        } else if (c == runCommand) {<br />            display.setCurrent(canvas);<br />        } else if (c == setupCommand) {<br />            display.setCurrent(form);<br />        }<br />    }</p>
<p>    public void itemStateChanged(Item item) {<br />        if (item == blockGauge) {<br />            int count = blockGauge.getValue();<br />            if (count < 1) {<br />                count = 1;<br />            }<br />            canvas.setBlockCount(count);<br />        } else if (item == rateGauge) {<br />            int count = rateGauge.getValue();<br />            if (count < 1) {<br />                count = 1;<br />            }<br />            canvas.setFrameRate(count);<br />        }            <br />    } </p>
<p>    // Creates the canvas that will draw the block<br />    protected AnimationCanvas createAnimationCanvas() {<br />        return new AnimationCanvas();<br />    }</p>
<p>    class AnimationCanvas extends Canvas {</p>
<p>        // Size of each block<br />        protected static final int SIZE = 4;</p>
<p>        // Initial speeds in the X direction<br />        protected final int[] xSpeeds = { 2, -2, 0, -2 };</p>
<p>        // Initial speeds in the Y direction<br />        protected final int[] ySpeeds = { 2, -2, 2, -0 };</p>
<p>        // Background color<br />        protected int background = display.isColor() ? 0 : 0xc0c0c0;</p>
<p>        // Foreground color<br />        protected int foreground = display.isColor() ? 0xffff00 : 0;</p>
<p>        // Width of screen<br />        protected int width = getWidth();</p>
<p>        // Height of screen<br />        protected int height = getHeight();</p>
<p>        // The screen update rate<br />        protected int frameRate;</p>
<p>        // The blocks to draw on the screen<br />        protected Block[] blocks;</p>
<p>        // The update timer<br />        protected Timer timer;</p>
<p>        // The update timer task<br />        protected TimerTask updateTask;</p>
<p>        // Gets the maximum number of blocks<br />        public int getMaxBlocks() {<br />            return blocks.length;<br />        }</p>
<p>        // Constructs a canvas with default settings<br />        AnimationCanvas() {<br />            setBlockCount(BLOCK_COUNT);<br />            setFrameRate(FRAME_RATE);<br />        }</p>
<p>        // Sets the number of blocks to draw<br />        public void setBlockCount(int count) {<br />            if (count > xSpeeds.length) {<br />                throw new IllegalArgumentException(&#8221;Cannot have more than &#8221; <br />                                + xSpeeds.length + &#8221; blocks&#8221;);<br />            }</p>
<p>            blocks = new Block[count];<br />            createBlocks();<br />        }</p>
<p>        // Gets the number of blocks to draw<br />        public int getBlockCount() {<br />            return blocks.length;<br />        }</p>
<p>        // Sets the number of updates per second<br />        public void setFrameRate(int frameRate) {<br />            if (frameRate < 1 || frameRate > 10) {<br />                throw new IllegalArgumentException(&#8221;Frame rate must be > 0 and <= 10");<br />            }<br />            this.frameRate = frameRate;<br />            if (isShown()) {<br />                startFrameTimer();<br />            }<br />        }</p>
<p>        // Gets the number of updates per second<br />        public int getFrameRate() {<br />            return frameRate;<br />        }  </p>
<p>        // Paint canvas background and all<br />        // of the blocks in their correct locations.<br />        protected void paint(Graphics g) {<br />            // Paint with the background color<br />            g.setColor(background);<br />            g.fillRect(0, 0, width, height);</p>
<p>            // Draw all of the blocks<br />            g.setColor(foreground);<br />            synchronized (this) {<br />                for (int i = 0, count = blocks.length; i < count; i++) {<br />                    g.fillRect(blocks[i].x, blocks[i].y, SIZE, SIZE);<br />                }<br />            }<br />        }</p>
<p>        // Notification that the canvas has been made visible<br />        protected void showNotify() {<br />            // Start the frame timer running<br />            startFrameTimer();<br />        }</p>
<p>        // Notification that the canvas is no longer visible<br />        protected void hideNotify() {<br />            // Stop the frame timer <br />            stopFrameTimer();<br />        }</p>
<p>        // Creates the blocks to be displayed<br />        private void createBlocks() {<br />            int startX = (width - SIZE)/2;<br />            int startY = (height - SIZE)/2;<br />            for (int i = 0, count = blocks.length; i < count; i++) {<br />                blocks[i] = new Block(startX, startY, xSpeeds[i], ySpeeds[i]);<br />            }<br />        }</p>
<p>        // Starts the frame redraw timer<br />        protected void startFrameTimer() {<br />            timer = new Timer();</p>
<p>            updateTask = new TimerTask() {<br />                public void run() {<br />                    moveAllBlocks();<br />                }<br />            };<br />            long interval = 1000/frameRate;<br />            timer.schedule(updateTask, interval, interval);<br />        }</p>
<p>        // Stops the frame redraw timer<br />        protected void stopFrameTimer() {<br />            timer.cancel();            <br />        }</p>
<p>        // Called on expiry of timer.<br />        public synchronized void moveAllBlocks() {<br />            // Update the positions and speeds<br />            // of all of the blocks<br />            for (int i = 0, count = blocks.length; i < count; i++) {<br />                blocks[i].move();</p>
<p>                // Request a repaint of the screen<br />                repaint();                <br />            }<br />        }</p>
<p>        // Inner class used to represent a block on the screen<br />        class Block {<br />            int x;      // X position<br />            int y;      // Y position<br />            int xSpeed; // Speed in the X direction<br />            int ySpeed; // Speed in the Y direction</p>
<p>            Block(int x, int y, int xSpeed, int ySpeed) {<br />                this.x = x;<br />                this.y = y;<br />                this.xSpeed = xSpeed;<br />                this.ySpeed = ySpeed;<br />            }</p>
<p>            void move() {<br />                x += xSpeed;<br />                if (x <= 0 || x + SIZE >= width) {<br />                    xSpeed = -xSpeed;<br />                }</p>
<p>                y += ySpeed;<br />                if (y <= 0 || y + SIZE >= height) {<br />                    ySpeed = -ySpeed;<br />                }                <br />            }            <br />        }<br />    }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=33</wfw:commentRss>
		</item>
		<item>
		<title>Multiple ChoiceGroup</title>
		<link>http://j2me-codes.inhandlearning.com/?p=32</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=32#comments</comments>
		<pubDate>Mon, 16 Jul 2007 11:25:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=32</guid>
		<description><![CDATA[/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;* MultipleChoiceGroup.java** Example from the book:     Core J2ME Technology* Copyright John W. Muchow   http://www.CoreJ2ME.com* You may use/modify for any non-commercial purpose*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class MultipleChoiceGroup extends MIDlet implements ItemStateListener, CommandListener{  private Display display;      // Reference to display object   private Form fmMain; [...]]]></description>
			<content:encoded><![CDATA[<p>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />* MultipleChoiceGroup.java<br />*<br />* Example from the book:     Core J2ME Technology<br />* Copyright John W. Muchow   http://www.CoreJ2ME.com<br />* You may use/modify for any non-commercial purpose<br />*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>public class MultipleChoiceGroup extends MIDlet implements ItemStateListener, CommandListener<br />{<br />  private Display display;      // Reference to display object <br />  private Form fmMain;          // The main form<br />  private Command cmExit;       // A Command to exit the MIDlet<br />  private Command cmView;       // View the choice selected<br />  private int selectAllIndex;   // Index of the &#8220;Select All&#8221; option<br />  private ChoiceGroup cgPrefs;  // Choice Group of preferences</p>
<p>  private int choiceGroupIndex; // Index of choice group on form</p>
<p>  public MultipleChoiceGroup()<br />  {<br />    display = Display.getDisplay(this);</p>
<p>    // Create a multiple choice group<br />    cgPrefs = new ChoiceGroup(&#8221;Preferences&#8221;, Choice.MULTIPLE);</p>
<p>    // Append options, with no associated images<br />    cgPrefs.append(&#8221;Auto Indent&#8221;, null);<br />    cgPrefs.append(&#8221;Replace Tabs&#8221;, null);<br />    cgPrefs.append(&#8221;Wrap Text&#8221;, null);    <br />    selectAllIndex = cgPrefs.append(&#8221;Select All&#8221;, null);    </p>
<p>    cmExit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);<br />    cmView = new Command(&#8221;View&#8221;, Command.SCREEN,2);</p>
<p>    // Create Form, add components, listen for events<br />    fmMain = new Form(&#8221;");<br />    choiceGroupIndex = fmMain.append(cgPrefs);<br />    fmMain.addCommand(cmExit);<br />    fmMain.addCommand(cmView);<br />    fmMain.setCommandListener(this);   <br />    fmMain.setItemStateListener(this);<br />  }</p>
<p>  public void startApp()<br />  {<br />    display.setCurrent(fmMain);<br />  }</p>
<p>  public void pauseApp()<br />  { }</p>
<p>  public void destroyApp(boolean unconditional)<br />  { }</p>
<p>  public void commandAction(Command c, Displayable s)<br />  {<br />    if (c == cmView)<br />    {<br />      boolean selected[] = new boolean[cgPrefs.size()];</p>
<p>      // Fill array indicating whether each element is checked <br />      cgPrefs.getSelectedFlags(selected);</p>
<p>      for (int i = 0; i < cgPrefs.size(); i++)<br />        System.out.println(cgPrefs.getString(i) + (selected[i] ? &#8220;: selected&#8221; : &#8220;: not selected&#8221;));</p>
<p>    }<br />    else if (c == cmExit)<br />    {<br />      destroyApp(false);<br />      notifyDestroyed();<br />    } <br />  }</p>
<p>  public void itemStateChanged(Item item)              <br />  {<br />    if (item == cgPrefs)<br />    {<br />      // Is &#8220;Select all&#8221; option checked ?<br />      if (cgPrefs.isSelected(selectAllIndex))<br />      {<br />        // Set all checkboxes to true<br />        for (int i = 0; i < cgPrefs.size() - 1; i++)<br />          cgPrefs.setSelectedIndex(i, true);</p>
<p>        // Remove the check by &#8220;Select All&#8221;               <br />        cgPrefs.setSelectedIndex(selectAllIndex, false);<br />      }<br />    }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=32</wfw:commentRss>
		</item>
		<item>
		<title>ChoiceGroup With Image</title>
		<link>http://j2me-codes.inhandlearning.com/?p=31</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=31#comments</comments>
		<pubDate>Mon, 16 Jul 2007 11:25:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=31</guid>
		<description><![CDATA[/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;* ChoiceGroupWithImages.java** Example from the book:     Core J2ME Technology* Copyright John W. Muchow   http://www.CoreJ2ME.com* You may use/modify for any non-commercial purpose*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class ChoiceGroupWithImages extends MIDlet implements CommandListener{  private Display display;      // Reference to display object   private Form fmMain;  [...]]]></description>
			<content:encoded><![CDATA[<p>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />* ChoiceGroupWithImages.java<br />*<br />* Example from the book:     Core J2ME Technology<br />* Copyright John W. Muchow   http://www.CoreJ2ME.com<br />* You may use/modify for any non-commercial purpose<br />*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/<br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>public class ChoiceGroupWithImages extends MIDlet implements CommandListener<br />{<br />  private Display display;      // Reference to display object <br />  private Form fmMain;         // Main form<br />  private Command cmExit;      // Command to exit the MIDlet<br />  private Command cmView;      // View the choice selected<br />  private ChoiceGroup cgPrefs; // Choice Group of preferences</p>
<p>  public ChoiceGroupWithImages()<br />  {<br />    display = Display.getDisplay(this);</p>
<p>    try <br />    { <br />      // Create array of image objects<br />      Image images[] = {Image.createImage(&#8221;/up.png&#8221;), Image.createImage(&#8221;/down.png&#8221;),<br />                        Image.createImage(&#8221;/help.png&#8221;) };            </p>
<p>      // Create array of corresponding string objects                        <br />      String options[] = {&#8221;Upload&#8221;, &#8220;Download&#8221;, &#8220;Help&#8221;};          </p>
<p>      // Create a choice group using arrays<br />      cgPrefs = new ChoiceGroup(&#8221;Select Option:&#8221;, Choice.EXCLUSIVE, options, images);    </p>
<p>    }<br />    catch (java.io.IOException e)<br />    {<br />      System.err.println(&#8221;Unable to locate or read .png file&#8221;);<br />    }</p>
<p>    cmExit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);<br />    cmView = new Command(&#8221;View&#8221;, Command.SCREEN,2);</p>
<p>    // Create Form, add components, listen for events<br />    fmMain = new Form(&#8221;");<br />    fmMain.append(cgPrefs);<br />    fmMain.addCommand(cmExit);<br />    fmMain.addCommand(cmView);<br />    fmMain.setCommandListener(this);   <br />  }</p>
<p>  public void startApp()<br />  {<br />    display.setCurrent(fmMain);<br />  }</p>
<p>  public void pauseApp()<br />  { }</p>
<p>  public void destroyApp(boolean unconditional)<br />  { }</p>
<p>  public void commandAction(Command c, Displayable s)<br />  {<br />    if (c == cmView)<br />    {<br />      boolean selected[] = new boolean[cgPrefs.size()];</p>
<p>      // Fill array indicating whether each element is checked <br />      cgPrefs.getSelectedFlags(selected);</p>
<p>      // Print to console the status of each element      <br />      for (int i = 0; i < cgPrefs.size(); i++)<br />        System.out.println(cgPrefs.getString(i) + (selected[i] ? &#8220;: selected&#8221; : &#8220;: not selected&#8221;));<br />    }<br />    else if (c == cmExit)<br />    {<br />      destroyApp(false);<br />      notifyDestroyed();<br />    } <br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=31</wfw:commentRss>
		</item>
		<item>
		<title>GUI Test in Midlet</title>
		<link>http://j2me-codes.inhandlearning.com/?p=30</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=30#comments</comments>
		<pubDate>Mon, 16 Jul 2007 11:20:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=30</guid>
		<description><![CDATA[/*Learning Wireless JavaHelp for New J2ME DevelopersBy Qusay MahmoudISBN: 0-596-00243-2
*/import javax.microedition.lcdui.*;import javax.microedition.midlet.*;
public class GuiTests extends MIDlet implements CommandListener {    // display manager    Display display = null;
    // a menu with items    List menu = null; // main menu
    // list [...]]]></description>
			<content:encoded><![CDATA[<p>/*<br />Learning Wireless Java<br />Help for New J2ME Developers<br />By Qusay Mahmoud<br />ISBN: 0-596-00243-2</p>
<p>*/<br />import javax.microedition.lcdui.*;<br />import javax.microedition.midlet.*;</p>
<p>public class GuiTests extends MIDlet implements CommandListener {<br />    // display manager<br />    Display display = null;</p>
<p>    // a menu with items<br />    List menu = null; // main menu</p>
<p>    // list of choices<br />    List choose = null;</p>
<p>    // textbox<br />    TextBox input = null;</p>
<p>    // ticker<br />    Ticker ticker = new Ticker(&#8221;Test GUI Components&#8221;);</p>
<p>    // alerts<br />    final Alert soundAlert = new Alert(&#8221;sound Alert&#8221;);</p>
<p>    // date<br />    DateField date = new DateField(&#8221;Today&#8217;s date: &#8220;, DateField.DATE);</p>
<p>    // form<br />    Form form = new Form(&#8221;Form for Stuff&#8221;);</p>
<p>    // gauge<br />    Gauge gauge = new Gauge(&#8221;Progress Bar&#8221;, false, 20, 9);</p>
<p>    // text field<br />    TextField textfield = new TextField(&#8221;TextField Label&#8221;, &#8220;abc&#8221;, 50, 0);</p>
<p>    // command<br />    static final Command backCommand = new Command(&#8221;Back&#8221;, Command.BACK, 0);<br />    static final Command mainMenuCommand = new Command(&#8221;Main&#8221;, Command.SCREEN, 1);<br />    static final Command exitCommand = new Command(&#8221;Exit&#8221;, Command.STOP, 2);<br />    String currentMenu = null;</p>
<p>    // constructor.<br />    public GuiTests() {<br />    }</p>
<p>    /**<br />     * Start the MIDlet by creating a list of items and associating the<br />     * exit command with it.<br />     */<br />    public void startApp() throws MIDletStateChangeException {<br />      display = Display.getDisplay(this);<br />      // open a db stock file</p>
<p>      menu = new List(&#8221;Test Components&#8221;, Choice.IMPLICIT);<br />      menu.append(&#8221;Test TextBox&#8221;, null);<br />      menu.append(&#8221;Test List&#8221;, null);<br />      menu.append(&#8221;Test Alert&#8221;, null);<br />      menu.append(&#8221;Test Date&#8221;, null);<br />      menu.append(&#8221;Test Form&#8221;, null);<br />      menu.addCommand(exitCommand);<br />      menu.setCommandListener(this);<br />      menu.setTicker(ticker);</p>
<p>      mainMenu();<br />    }</p>
<p>    public void pauseApp() {<br />      display = null;<br />      choose = null;<br />      menu = null;<br />      ticker = null;<br />      form = null;<br />      input = null;<br />      gauge = null;<br />      textfield = null;      <br />    }</p>
<p>    public void destroyApp(boolean unconditional) {<br />      notifyDestroyed();<br />    }</p>
<p>    // main menu<br />    void mainMenu() {<br />      display.setCurrent(menu);<br />      currentMenu = &#8220;Main&#8221;; <br />    }</p>
<p>    /**<br />     * Test the TextBox component.<br />     */<br />    public void testTextBox() {<br />      input = new TextBox(&#8221;Enter Some Text:&#8221;, &#8220;&#8221;, 10, TextField.ANY);<br />      input.setTicker(new Ticker(&#8221;Testing TextBox&#8221;));<br />      input.addCommand(backCommand);<br />      input.setCommandListener(this);<br />      input.setString(&#8221;");<br />      display.setCurrent(input);<br />      currentMenu = &#8220;input&#8221;;<br />    }</p>
<p>    /**<br />     * Test the List component.<br />     */<br />    public void testList() {<br />        choose = new List(&#8221;Choose Items&#8221;, Choice.MULTIPLE);<br />        choose.setTicker(new Ticker(&#8221;Testing List&#8221;));<br />        choose.addCommand(backCommand);<br />        choose.setCommandListener(this);<br />        choose.append(&#8221;Item 1&#8243;, null);<br />        choose.append(&#8221;Item 2&#8243;, null);<br />        choose.append(&#8221;Item 3&#8243;, null);<br />        display.setCurrent(choose);<br />        currentMenu = &#8220;list&#8221;; <br />   }</p>
<p>   /**<br />    * Test the Alert component.<br />    */<br />   public void testAlert() {<br />      soundAlert.setType(AlertType.ERROR);<br />      //soundAlert.setTimeout(20);<br />      soundAlert.setString(&#8221;** ERROR **&#8221;);<br />      display.setCurrent(soundAlert);<br />   }</p>
<p>   /**<br />    * Test the DateField component.<br />    */<br />   public void testDate() {<br />      java.util.Date now = new java.util.Date();<br />      date.setDate(now);<br />      Form f = new Form(&#8221;Today&#8217;s date&#8221;);<br />      f.append(date);<br />      f.addCommand(backCommand);<br />      f.setCommandListener(this);<br />      display.setCurrent(f);<br />      currentMenu = &#8220;date&#8221;;<br />   }</p>
<p>   /**<br />    * Test the Form component.<br />    */<br />   public void testForm() {<br />      form.append(gauge);<br />      form.append(textfield);<br />      form.addCommand(backCommand);<br />      form.setCommandListener(this);<br />      display.setCurrent(form);<br />      currentMenu = &#8220;form&#8221;;<br />   }</p>
<p>   /**<br />    * Handle events.<br />    */  <br />   public void commandAction(Command c, Displayable d) {<br />      String label = c.getLabel();<br />      if (label.equals(&#8221;Exit&#8221;)) {<br />         destroyApp(true);<br />      } else if (label.equals(&#8221;Back&#8221;)) {<br />          if(currentMenu.equals(&#8221;list&#8221;) || currentMenu.equals(&#8221;input&#8221;) || <br />               currentMenu.equals(&#8221;date&#8221;) || currentMenu.equals(&#8221;form&#8221;)) {<br />            // go back to menu<br />            mainMenu();<br />          } </p>
<p>      } else {<br />         List down = (List)display.getCurrent();<br />         switch(down.getSelectedIndex()) {<br />           case 0: testTextBox();break;<br />           case 1: testList();break;<br />           case 2: testAlert();break;<br />           case 3: testDate();break;<br />           case 4: testForm();break;<br />         }</p>
<p>      }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=30</wfw:commentRss>
		</item>
		<item>
		<title>TextBox Capture</title>
		<link>http://j2me-codes.inhandlearning.com/?p=29</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=29#comments</comments>
		<pubDate>Mon, 16 Jul 2007 11:18:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=29</guid>
		<description><![CDATA[/*J2ME: The Complete Reference
James Keogh
Publisher: McGraw-Hill
ISBN 0072227109
*///jad file (please verify the jar size)/*MIDlet-Name: TextBoxCaptureMIDlet-Version: 1.0MIDlet-Vendor: MyCompanyMIDlet-Jar-URL: TextBoxCapture.jarMIDlet-1: TextBoxCapture, , TextBoxCaptureMicroEdition-Configuration: CLDC-1.0MicroEdition-Profile: MIDP-1.0MIDlet-JAR-SIZE: 100
*/import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class TextBoxCapture extends MIDlet implements CommandListener{  private Display display;   private TextBox textbox;   private Command submit;   private Command exit;   public TextBoxCapture()  [...]]]></description>
			<content:encoded><![CDATA[<p>/*<br />J2ME: The Complete Reference</p>
<p>James Keogh</p>
<p>Publisher: McGraw-Hill</p>
<p>ISBN 0072227109</p>
<p>*/<br />//jad file (please verify the jar size)<br />/*<br />MIDlet-Name: TextBoxCapture<br />MIDlet-Version: 1.0<br />MIDlet-Vendor: MyCompany<br />MIDlet-Jar-URL: TextBoxCapture.jar<br />MIDlet-1: TextBoxCapture, , TextBoxCapture<br />MicroEdition-Configuration: CLDC-1.0<br />MicroEdition-Profile: MIDP-1.0<br />MIDlet-JAR-SIZE: 100</p>
<p>*/<br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;<br />public class TextBoxCapture extends MIDlet implements CommandListener<br />{<br />  private Display display; <br />  private TextBox textbox; <br />  private Command submit; <br />  private Command exit; <br />  public TextBoxCapture()<br />  {<br />   display = Display.getDisplay(this);<br />   submit = new Command(&#8221;Submit&#8221;, Command.SCREEN, 1);<br />   exit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);<br />   textbox = new TextBox(&#8221;First Name:&#8221;, &#8220;&#8221;, 30, TextField.ANY);<br />   textbox.addCommand(exit);<br />   textbox.addCommand(submit);    <br />   textbox.setCommandListener(this);   <br />  }<br />  public void startApp()<br />  {<br />   display.setCurrent(textbox);<br />  }<br />  public void pauseApp()<br />  { <br />  }<br />  public void destroyApp(boolean unconditional)<br />  { <br />  }<br />  public void commandAction(Command command, Displayable displayable)<br />  {<br />   if (command == submit)<br />   {<br />     textbox.setString(&#8221;Hello, &#8221; + textbox.getString());<br />     textbox.removeCommand(submit);<br />   }<br />   else if (command == exit)<br />   {<br />      destroyApp(false);<br />      notifyDestroyed();<br />   }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=29</wfw:commentRss>
		</item>
		<item>
		<title>TextField Capture</title>
		<link>http://j2me-codes.inhandlearning.com/?p=28</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=28#comments</comments>
		<pubDate>Mon, 16 Jul 2007 11:18:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=28</guid>
		<description><![CDATA[//jad file (please verify the jar size)/*MIDlet-Name: TextFieldCaptureMIDlet-Version: 1.0MIDlet-Vendor: MyCompanyMIDlet-Jar-URL: TextFieldCapture.jarMIDlet-1: TextFieldCapture, , TextFieldCaptureMicroEdition-Configuration: CLDC-1.0MicroEdition-Profile: MIDP-1.0MIDlet-JAR-SIZE: 100
*/import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.TextField;import javax.microedition.midlet.MIDlet;
public class TextFieldCapture extends MIDlet implements CommandListener {  private Display display;
  private Form form = new Form(&#8221;Sign In Please&#8221;);
  private Command submit = new Command(&#8221;Submit&#8221;, Command.SCREEN, 1);
  private [...]]]></description>
			<content:encoded><![CDATA[<p>//jad file (please verify the jar size)<br />/*<br />MIDlet-Name: TextFieldCapture<br />MIDlet-Version: 1.0<br />MIDlet-Vendor: MyCompany<br />MIDlet-Jar-URL: TextFieldCapture.jar<br />MIDlet-1: TextFieldCapture, , TextFieldCapture<br />MicroEdition-Configuration: CLDC-1.0<br />MicroEdition-Profile: MIDP-1.0<br />MIDlet-JAR-SIZE: 100</p>
<p>*/<br />import javax.microedition.lcdui.Command;<br />import javax.microedition.lcdui.CommandListener;<br />import javax.microedition.lcdui.Display;<br />import javax.microedition.lcdui.Displayable;<br />import javax.microedition.lcdui.Form;<br />import javax.microedition.lcdui.TextField;<br />import javax.microedition.midlet.MIDlet;</p>
<p>public class TextFieldCapture extends MIDlet implements CommandListener {<br />  private Display display;</p>
<p>  private Form form = new Form(&#8221;Sign In Please&#8221;);</p>
<p>  private Command submit = new Command(&#8221;Submit&#8221;, Command.SCREEN, 1);</p>
<p>  private Command exit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);</p>
<p>  private TextField textfield = new TextField(&#8221;First Name:&#8221;, &#8220;&#8221;, 30, TextField.ANY);</p>
<p>  public TextFieldCapture() {<br />    display = Display.getDisplay(this);<br />    form.addCommand(exit);<br />    form.addCommand(submit);<br />    form.append(textfield);<br />    form.setCommandListener(this);<br />  }</p>
<p>  public void startApp() {<br />    display.setCurrent(form);<br />  }</p>
<p>  public void pauseApp() {<br />  }</p>
<p>  public void destroyApp(boolean unconditional) {<br />  }</p>
<p>  public void commandAction(Command command, Displayable displayable) {<br />    if (command == submit) {<br />      textfield.setString(&#8221;Hello, &#8221; + textfield.getString());<br />      form.removeCommand(submit);<br />    } else if (command == exit) {<br />      destroyApp(false);<br />      notifyDestroyed();<br />    }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=28</wfw:commentRss>
		</item>
		<item>
		<title>Basic RMS Example</title>
		<link>http://j2me-codes.inhandlearning.com/?p=27</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=27#comments</comments>
		<pubDate>Thu, 12 Jul 2007 12:39:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me rms]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=27</guid>
		<description><![CDATA[import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.microedition.rms.*;import java.io.*;
public class RMSDemo extends MIDlet implements CommandListener {
    private Display display;    private RecordStore rs=null;    private Command exit;    private RecordEnumeration re;    private int recordNO;    Form frm;    int index=0;    [...]]]></description>
			<content:encoded><![CDATA[<p>import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;<br />import javax.microedition.rms.*;<br />import java.io.*;</p>
<p>public class RMSDemo extends MIDlet implements CommandListener {</p>
<p>    private Display display;<br />    private RecordStore rs=null;<br />    private Command exit;<br />    private RecordEnumeration re;<br />    private int recordNO;<br />    Form frm;<br />    int index=0;<br />    public RMSDemo() {<br />        display = Display.getDisplay(this);</p>
<p>        //Create a RMS<br />        try {<br />            rs= RecordStore.openRecordStore(&#8221;myRecord&#8221;,false);<br />            rs.closeRecordStore();<br />        } catch(Exception e) {<br />            System.out.println(e);<br />        }</p>
<p>    }</p>
<p>    public void startApp()   {</p>
<p>        frm=new Form(&#8221;RMSDemo&#8221;);</p>
<p>        exit= new Command(&#8221;Exit&#8221;,Command.EXIT,1);<br />        frm.addCommand(exit);</p>
<p>        add= new Command(&#8221;Add&#8221;,Command.SCREN,1);<br />        frm.addCommand(add);</p>
<p>        delete= new Command(&#8221;Delete&#8221;,Command.SCREEN,2);<br />        frm.addCommand(delete);</p>
<p>        show= new Command(&#8221;SHOW&#8221;,Command.SCREEN ,3);<br />        frm.addCommand(show);</p>
<p>        frm.setCommandListener(this);<br />        frm.append(&#8221;#####&#8221;);<br />        display.setCurrent(frm);<br />    }</p>
<p>    public void pauseApp() {</p>
<p>    }</p>
<p>    public void destroyApp(boolean un) {<br />    }</p>
<p>    // Handling commands<br />    public void commandAction(Command cmd,Displayable d) {<br />        if(cmd==add) {<br />            addRecord();<br />        } else<br />            if(cmd==delete) {<br />            removeRecord();<br />            } else<br />                if(cmd==show) {<br />            try {<br />                byte b[]= rs.getRecord(recordNO);<br />                String s= new String(b);<br />                frm.append(s);<br />            } catch(Exception e) {}<br />                }<br />    }</p>
<p>    void addRecord() {<br />        try {<br />            rs= RecordStore.openRecordStore(&#8221;myRecord&#8221;,false);<br />            index++;<br />            byte b[]=(&#8221;Record NO &#8220;+index).getBytes();<br />            //Adding record to record store<br />            rs.addRecord(b,0,b.length);<br />            rs.closeRecordStore() ;<br />        } catch(Exception e) {<br />            System.out.println(e);<br />        }</p>
<p>    }</p>
<p>    // Deleting a record<br />    void removeRecord(int recordID) {<br />        try {<br />            rs= RecordStore.openRecordStore(&#8221;myRecord&#8221;,false);<br />            rs.deleteRecord(recordID);<br />            index&#8211;;<br />            rs.closeRecordStore();<br />        } catch(Exception e) {<br />            System.out.println(e);<br />        }<br />    }</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=27</wfw:commentRss>
		</item>
		<item>
		<title>Font Demo J2ME</title>
		<link>http://j2me-codes.inhandlearning.com/?p=26</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=26#comments</comments>
		<pubDate>Thu, 12 Jul 2007 12:36:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me multimedia]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=26</guid>
		<description><![CDATA[The Font class represents fonts and font metrics. Fonts cannot be created by applications. The setFont(Font font) method of graphic class sets the font for all subsequent text rendering operations. And there is no call to showNotify and hideNotify method on some the device. This application will help game developer to find out the exact [...]]]></description>
			<content:encoded><![CDATA[<p>The Font class represents fonts and font metrics. Fonts cannot be created by applications. The setFont(Font font) method of graphic class sets the font for all subsequent text rendering operations. And there is no call to showNotify and hideNotify method on some the device. This application will help game developer to find out the exact behaviour of mobile device.</p>
<p>import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>public class FontDemo extends MIDlet {</p>
<p>    private boolean boolMotion=false;    <br />    private int iX=10, iY=60;</p>
<p>    Display mDisplay;<br />    Thread th;<br />    public void destroyApp(boolean unconditional){}</p>
<p>    public void pauseApp() {}</p>
<p>    public void startApp() {</p>
<p>        mDisplay = Display.getDisplay(this);<br />        final MyCanvas can = new MyCanvas();<br />        mDisplay.setCurrent(can);</p>
<p>    }<br />}</p>
<p>import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>public class MyCanvas extends Canvas {</p>
<p>    Font font;<br />    String msg;<br />    public MyCanvas() {</p>
<p>        font=Font.getFont(Font.FACE_MONOSPACE,<br />                Font.STYLE_ITALIC, Font.SIZE_LARGE);<br />        msg = &#8220;Font:FACE_MONOSPACE  Font.STYLE_ITALIC  Font.SIZE_LARGE&#8221;;<br />    }</p>
<p>    public void paint(Graphics g) {<br />        g.setFont(font);<br />        g.drawString(msg,0,10,g.TOP|g.LEFT);<br />        g.drawString(&#8221;press NUM KEY: 1 2 or 3&#8243;,0,80,g.TOP|g.LEFT);<br />    }</p>
<p>    void changeValue(int change) {<br />        switch(change) {<br />            case &#8216;1&#8242;:<br />                font=Font.getFont(Font.FACE_MONOSPACE, <br />                        Font.STYLE_ITALIC, Font.SIZE_LARGE) ;<br />                msg=&#8221;Font:FACE_MONOSPACE  Font.STYLE_ITALIC &#8220;+<br />                        &#8220;Font.SIZE_LARGE&#8221;;<br />                break;<br />            case &#8216;2&#8242;:<br />                font=Font.getFont(Font.FACE_PROPORTIONAL, <br />                        Font.STYLE_ITALIC, Font.SMALL) ;<br />                msg = &#8220;Font:FACE_PROPORTIONAL Font.STYLE_ITALIC &#8220;+<br />                      &#8220;Font.SIZE_SMALL&#8221;;<br />                break;<br />            case &#8216;3&#8242;:<br />                font=Font.getFont(Font.FACE_SYSTEM , <br />                        Font.STYLE_BOLD, Font.SIZE_LARGE) ;<br />                msg=&#8221;Font:FACE_SYSTEM  Font.STYLE_BOLD &#8220;+<br />                        &#8220;Font.SIZE_LARGE&#8221;;<br />                break;<br />        }<br />    }</p>
<p>    //Handling keyEvents<br />    protected void keyPressed(int keyCode) {<br />        changeValue(keyCode);<br />        repaint();<br />    }</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=26</wfw:commentRss>
		</item>
		<item>
		<title>Capturing Video with J2ME</title>
		<link>http://j2me-codes.inhandlearning.com/?p=25</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=25#comments</comments>
		<pubDate>Thu, 12 Jul 2007 12:36:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me multimedia]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=25</guid>
		<description><![CDATA[Illustration below takes pictures on a J2ME device.
import java.io.IOException;import javax.microedition.lcdui.*;import javax.microedition.media.*;import javax.microedition.media.control.*;import javax.microedition.midlet.MIDlet;import javax.microedition.media.control.VideoControl;
public class VideoMIDlet extends MIDlet implements CommandListener {
    private Display display;    private Form form;    private Command exit,back,capture,camera;    private Player player;    private VideoControl videoControl;    private [...]]]></description>
			<content:encoded><![CDATA[<p>Illustration below takes pictures on a J2ME device.</p>
<p>import java.io.IOException;<br />import javax.microedition.lcdui.*;<br />import javax.microedition.media.*;<br />import javax.microedition.media.control.*;<br />import javax.microedition.midlet.MIDlet;<br />import javax.microedition.media.control.VideoControl;</p>
<p>public class VideoMIDlet extends MIDlet implements CommandListener {</p>
<p>    private Display display;<br />    private Form form;<br />    private Command exit,back,capture,camera;<br />    private Player player;<br />    private VideoControl videoControl;<br />    private Video video;</p>
<p>    public VideoMIDlet() {</p>
<p>        exit = new Command(&#8221;Exit&#8221;, Command.EXIT, 0);<br />        camera = new Command(&#8221;Camera&#8221;, Command.SCREEN, 0);<br />        back = new Command(&#8221;Back&#8221;, Command.BACK, 0);<br />        capture = new Command(&#8221;Capture&#8221;, Command.SCREEN, 0);</p>
<p>        form = new Form(&#8221;Capture Video&#8221;);<br />        form.addCommand(camera);<br />        form.setCommandListener(this);<br />    }</p>
<p>    public void startApp() {<br />        display = Display.getDisplay(this);<br />        display.setCurrent(form);<br />    }</p>
<p>    public void pauseApp() {}</p>
<p>    public void destroyApp(boolean unconditional) {}</p>
<p>    public void commandAction(Command c, Displayable s) {<br />        if (c == exit) {<br />            destroyApp(true);<br />            notifyDestroyed();<br />        } else if (c == camera) {<br />            showCamera();<br />        } else if (c == back)<br />            display.setCurrent(form);<br />        else if (c == capture) {<br />            video = new Video(this);<br />            video.start();<br />        }<br />    }</p>
<p>    public void showCamera() {<br />        try {<br />            player = Manager.createPlayer(&#8221;capture://video&#8221;);<br />            player.realize();</p>
<p>            videoControl = (VideoControl)player.getControl(&#8221;VideoControl&#8221;);<br />            Canvas canvas = new VideoCanvas(this, videoControl);<br />            canvas.addCommand(back);<br />            canvas.addCommand(capture);<br />            canvas.setCommandListener(this);<br />            display.setCurrent(canvas);<br />            player.start();<br />        } catch (IOException ioe) {} catch (MediaException me) {}<br />    }</p>
<p>    class Video extends Thread {<br />        videoMIDlet midlet;<br />        public Video(VideoMIDlet midlet) {<br />            this.midlet = midlet;<br />        }</p>
<p>        public void run() {<br />            captureVideo();</p>
<p>        }</p>
<p>        public void captureVideo() {<br />            try {<br />                byte[] raw = videoControl.getSnapshot(null);<br />                Image image = Image.createImage(raw, 0, raw.length);<br />                form.append(image);<br />                display.setCurrent(form);</p>
<p>                player.close();<br />                player = null;<br />                videoControl = null;<br />            } catch (MediaException me) { }<br />        }<br />    };<br />}</p>
<p>import javax.microedition.lcdui.*;<br />import javax.microedition.media.MediaException;<br />import javax.microedition.media.control.VideoControl;</p>
<p>public class VideoCanvas extends Canvas {<br />    private VideoMIDlet midlet;</p>
<p>    public VideoCanvas(VideoMIDlet midlet, VideoControl videoControl) {<br />        int width = getWidth();<br />        int height = getHeight();<br />        this.midlet = midlet;</p>
<p>        videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);<br />        try {<br />            videoControl.setDisplayLocation(2, 2);<br />            videoControl.setDisplaySize(width - 4, height - 4);<br />        } catch (MediaException me) {}<br />        videoControl.setVisible(true);<br />    }</p>
<p>    public void paint(Graphics g) {<br />        int width = getWidth();<br />        int height = getHeight();</p>
<p>        g.setColor(0&#215;00ff00);<br />        g.drawRect(0, 0, width - 1, height - 1);<br />        g.drawRect(1, 1, width - 3, height - 3);<br />    }</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=25</wfw:commentRss>
		</item>
		<item>
		<title>Vibrate Phone</title>
		<link>http://j2me-codes.inhandlearning.com/?p=24</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=24#comments</comments>
		<pubDate>Thu, 12 Jul 2007 12:34:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me sample]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=24</guid>
		<description><![CDATA[You can make your phone migrate in J2ME by calling vibrate(int duration) method of javax.microedition.lcdui.Display class. The duration parameter is the number of milliseconds the vibrator should be run.
Display.getDisplay(this).vibrate(800);
]]></description>
			<content:encoded><![CDATA[<p>You can make your phone migrate in J2ME by calling vibrate(int duration) method of javax.microedition.lcdui.Display class. The duration parameter is the number of milliseconds the vibrator should be run.</p>
<p>Display.getDisplay(this).vibrate(800);</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=24</wfw:commentRss>
		</item>
		<item>
		<title>Playing local MP3</title>
		<link>http://j2me-codes.inhandlearning.com/?p=23</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=23#comments</comments>
		<pubDate>Thu, 12 Jul 2007 12:33:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me multimedia]]></category>

		<category><![CDATA[j2me sound]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=23</guid>
		<description><![CDATA[The method below creates player and play mp3 file.public void run(){  try  {    InputStream is = getClass().getResourceAsStream(&#8221;/your.mp3&#8243;);    player = Manager.createPlayer(is,&#8221;audio/mpeg&#8221;);
    player.realize();    // get volume control for player and set volume to max    vc = (VolumeControl) player.getControl(&#8221;VolumeControl&#8221;);   [...]]]></description>
			<content:encoded><![CDATA[<p>The method below creates player and play mp3 file.<br />public void run()<br />{<br />  try<br />  {<br />    InputStream is = getClass().getResourceAsStream(&#8221;/your.mp3&#8243;);<br />    player = Manager.createPlayer(is,&#8221;audio/mpeg&#8221;);</p>
<p>    player.realize();<br />    // get volume control for player and set volume to max<br />    vc = (VolumeControl) player.getControl(&#8221;VolumeControl&#8221;);<br />    if(vc != null)<br />    {<br />      vc.setLevel(100);<br />    }<br />    player.prefetch();<br />    player.start();<br />  }<br />  catch(Exception e)<br />  {}<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=23</wfw:commentRss>
		</item>
		<item>
		<title>Playing Video</title>
		<link>http://j2me-codes.inhandlearning.com/?p=22</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=22#comments</comments>
		<pubDate>Thu, 12 Jul 2007 12:27:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me multimedia]]></category>

		<category><![CDATA[j2me networking]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=22</guid>
		<description><![CDATA[MMAPI(Mobile Media API) provides a framework for playing media content on J2ME devices.There are protocols defined for real-time streaming of Internet radio content, streaming other RTP (Real-time Transport Protocol) content, capturing audio, and taking pictures.
The method below plays a video file the on mobile device:public void run(){  try  {    String [...]]]></description>
			<content:encoded><![CDATA[<p>MMAPI(Mobile Media API) provides a framework for playing media content on J2ME devices.There are protocols defined for real-time streaming of Internet radio content, streaming other RTP (Real-time Transport Protocol) content, capturing audio, and taking pictures.</p>
<p>The method below plays a video file the on mobile device:<br />public void run()<br />{<br />  try<br />  {<br />    String url = &#8220;http://server/video-mpeg.mpg&#8221;;<br />    Player p = Manager.createPlayer(url);<br />    p.realize();</p>
<p>    //Get the video controller<br />    VideoControl video = (VideoControl) p.getControl(&#8221;VideoControl&#8221;);</p>
<p>    //Get a GUI to display the video<br />    Item videoItem = (Item)video.initDisplayMode(<br />    VideoControl.USE_GUI_PRIMITIVE, null);</p>
<p>    //Append the GUI to a form<br />    videoForm.append(videoItem);</p>
<p>    //Start the video<br />    p.start();<br />  }<br />  catch(Exception e)<br />  {}<br />}</p>
<p>If you want to play the video from an rtsp server, you only need to change url with &#8220;rtsp://server/video.mpg&#8221;. This will only work on devices which support real time input streams.</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=22</wfw:commentRss>
		</item>
		<item>
		<title>Play Sound in midlet</title>
		<link>http://j2me-codes.inhandlearning.com/?p=21</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=21#comments</comments>
		<pubDate>Thu, 12 Jul 2007 12:27:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me sound]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=21</guid>
		<description><![CDATA[javax.microedition.media package is introduced in MIDP2.0 profile. This package supports sound and upward compatibility with MultiMedia API.It has Manager, Player and Control as main objects.Different audio files, from various locations can be played on mobile.
Simple Media Playback  try  {     Player p = Manager.createPlayer(&#8221;http://webserver/music.wav&#8221;);    p.start();   [...]]]></description>
			<content:encoded><![CDATA[<p>javax.microedition.media package is introduced in MIDP2.0 profile. This package supports sound and upward compatibility with MultiMedia API.It has Manager, Player and Control as main objects.Different audio files, from various locations can be played on mobile.</p>
<p>Simple Media Playback<br />  try<br />  { <br />    Player p = Manager.createPlayer(&#8221;http://webserver/music.wav&#8221;);<br />    p.start(); <br />  } <br />  catch (IOException ioe) { } <br />  catch (MediaException me) { } </p>
<p>Playing Back from Media Stored in JAR<br />  try <br />  { <br />    InputStream is = getClass().getResourceAsStream(&#8221;music.wav&#8221;); <br />    Player p = Manager.createPlayer(is, &#8220;audio/X-wav&#8221;); <br />    p.start(); <br />  }<br />  catch (IOException ioe) { } <br />  catch (MediaException me) { }</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=21</wfw:commentRss>
		</item>
		<item>
		<title>Implement a textbox in a mobile game</title>
		<link>http://j2me-codes.inhandlearning.com/?p=20</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=20#comments</comments>
		<pubDate>Thu, 12 Jul 2007 12:22:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me gui]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=20</guid>
		<description><![CDATA[import java.io.InputStream;import java.io.InputStreamReader;import java.io.IOException;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.TextBox;import javax.microedition.lcdui.TextField;import javax.microedition.lcdui.Ticker;import javax.microedition.midlet.MIDlet;
public class TextBoxMIDlet extends MIDlet {
    // Maximum size of the text in the TextBox    private static final int MAX_TEXT_SIZE = 64;
    // The TextBox    protected TextBox textBox;
    // The MIDlet&#8217;s Display [...]]]></description>
			<content:encoded><![CDATA[<p>import java.io.InputStream;<br />import java.io.InputStreamReader;<br />import java.io.IOException;<br />import javax.microedition.lcdui.Display;<br />import javax.microedition.lcdui.TextBox;<br />import javax.microedition.lcdui.TextField;<br />import javax.microedition.lcdui.Ticker;<br />import javax.microedition.midlet.MIDlet;</p>
<p>public class TextBoxMIDlet extends MIDlet {</p>
<p>    // Maximum size of the text in the TextBox<br />    private static final int MAX_TEXT_SIZE = 64;</p>
<p>    // The TextBox<br />    protected TextBox textBox;</p>
<p>    // The MIDlet&#8217;s Display object<br />    protected Display display;</p>
<p>    // Flag indicating first call of startApp<br />    protected boolean started;</p>
<p>    protected void startApp( ) {</p>
<p>        if (!started) {</p>
<p>            // First time through - initialize<br />            // Get the text to be displayed<br />            String str = null;</p>
<p>            try {</p>
<p>                InputStream is = getClass( ).getResourceAsStream(<br />                        &#8220;resources/text.txt&#8221;);</p>
<p>                InputStreamReader r = new InputStreamReader(is);<br />                char[] buffer = new char[32];<br />                StringBuffer sb = new StringBuffer( );<br />                int count;</p>
<p>                while ((count = r.read(buffer, 0, buffer.length)) > -1) {<br />                    sb.append(buffer, 0, count);<br />                }</p>
<p>                str = sb.toString( );</p>
<p>            } catch (IOException ex) {<br />                str = &#8220;Failed to load text&#8221;;<br />            }</p>
<p>            // Create the TextBox<br />            textBox = new TextBox(&#8221;TextBox Example&#8221;, str,<br />                    MAX_TEXT_SIZE, TextField.ANY);</p>
<p>            // Create a ticker and install it<br />            Ticker ticker = new Ticker(&#8221;This is a ticker&#8230;&#8221;);<br />            textBox.setTicker(ticker);</p>
<p>            // Install the TextBox as the current screen<br />            display = Display.getDisplay(this);<br />            display.setCurrent(textBox);<br />            started = true;<br />        }<br />    }</p>
<p>    protected void pauseApp( ) {</p>
<p>    }</p>
<p>    protected void destroyApp(boolean unconditional) {</p>
<p>    }</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=20</wfw:commentRss>
		</item>
		<item>
		<title>J2ME Networking:Interacting Server PHP(Image Fetch)</title>
		<link>http://j2me-codes.inhandlearning.com/?p=19</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=19#comments</comments>
		<pubDate>Fri, 06 Jul 2007 12:44:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me networking]]></category>

		<category><![CDATA[j2me source code]]></category>

		<category><![CDATA[wireless networking]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=19</guid>
		<description><![CDATA[You can even retrieve binary data such as images.  If the mobile device is capable of view documents like word or PDF then you should be able to send those by HTTP as well.
J2ME Source Code:
import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.microedition.io.*;import java.io.*;
public class SimpleImageFetch extends MIDlet{  private Display display;  private String URL = &#8220;http://127.0.0.1/midlet/image/test.php&#8221;; [...]]]></description>
			<content:encoded><![CDATA[<p>You can even retrieve binary data such as images.  If the mobile device is capable of view documents like word or PDF then you should be able to send those by HTTP as well.</p>
<p>J2ME Source Code:</p>
<p>import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;<br />import javax.microedition.io.*;<br />import java.io.*;</p>
<p>public class SimpleImageFetch extends MIDlet<br />{<br />  private Display display;<br />  private String URL = &#8220;http://127.0.0.1/midlet/image/test.php&#8221;;<br />  private Form formImage;</p>
<p>  public SimpleImageFetch()<br />  {<br />    try {<br />      display = Display.getDisplay(this);<br />      Image im = getImage(URL);<br />      formImage = new Form(&#8221;Simple Image Test&#8221;);<br />      formImage.append(im);<br />      display.setCurrent(formImage);<br />    } catch (Exception ex) {<br />      System.out.println(ex);<br />    }</p>
<p>}</p>
<p>  public void startApp() { }<br />  public void pauseApp() { }<br />  public void destroyApp(boolean unconditional) {  }</p>
<p>  private Image getImage(String url) throws IOException<br />  {<br />    ContentConnection connection = (ContentConnection) Connector.open(url);<br />    DataInputStream iStrm = connection.openDataInputStream();<br />    Image im = null;</p>
<p>    try {<br />      byte imageData[];<br />      ByteArrayOutputStream bStrm = new ByteArrayOutputStream();<br />      int ch;<br />      while ((ch = iStrm.read()) != -1)<br />        bStrm.write(ch);<br />      imageData = bStrm.toByteArray();<br />      bStrm.close();<br />      im = Image.createImage(imageData, 0, imageData.length);<br />    } finally {<br />      if (iStrm != null)<br />        iStrm.close();<br />      if (connection != null)<br />        connection.close();<br />    }<br />    return (im == null ? null : im);<br />  }<br />}</p>
<p>PHP Source Code:</p>
<p><?php<br />$filename = &#8220;./phpjava.png&#8221;;<br />$handle = fopen ($filename, &#8220;rb&#8221;);<br />$contents = fread ($handle, filesize ($filename));<br />fclose ($handle);<br />header(&#8221;Content-type: image/gif&#8221;);<br />header(&#8221;Content-length: &#8220;.(string)(filesize($filename)));<br />echo $contents<br />?></p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=19</wfw:commentRss>
		</item>
		<item>
		<title>J2ME Networking:Connect Server PHP(HTTP GET)</title>
		<link>http://j2me-codes.inhandlearning.com/?p=18</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=18#comments</comments>
		<pubDate>Fri, 06 Jul 2007 12:42:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me example]]></category>

		<category><![CDATA[j2me networking]]></category>

		<category><![CDATA[j2me source code]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=18</guid>
		<description><![CDATA[Here is an example invoking PHP with GET parameters:
J2ME Source Code:
import java.io.*;import javax.microedition.io.*;import javax.microedition.lcdui.*;import javax.microedition.midlet.*;
public class SimpleGETExample extends MIDlet {
    private Display display;
    String url = &#8220;http://127.0.0.1/midlet/testGET.php?type=2&#8243;;
    public SimpleGETExample() {       display = Display.getDisplay(this);    }
    [...]]]></description>
			<content:encoded><![CDATA[<p>Here is an example invoking PHP with GET parameters:</p>
<p>J2ME Source Code:</p>
<p>import java.io.*;<br />import javax.microedition.io.*;<br />import javax.microedition.lcdui.*;<br />import javax.microedition.midlet.*;</p>
<p>public class SimpleGETExample extends MIDlet {</p>
<p>    private Display display;</p>
<p>    String url = &#8220;http://127.0.0.1/midlet/testGET.php?type=2&#8243;;</p>
<p>    public SimpleGETExample() {<br />       display = Display.getDisplay(this);<br />    }</p>
<p>    public void startApp() {<br /> try {<br />            testGET(url);<br /> } catch (IOException e) {<br />     System.out.println(&#8221;IOException &#8221; + e);<br />     e.printStackTrace();<br /> }<br />    }</p>
<p>    public void pauseApp() {    }<br />    public void destroyApp(boolean unconditional) {   }</p>
<p>    void testGET(String url) throws IOException {<br />        HttpConnection connection = null;<br />        InputStream is = null;<br />        OutputStream os = null;<br />        StringBuffer stringBuffer = new StringBuffer();<br />        TextBox textBox = null;</p>
<p>        try {<br />          connection = (HttpConnection)Connector.open(url);<br />          connection.setRequestMethod(HttpConnection.GET);<br />          connection.setRequestProperty(&#8221;IF-Modified-Since&#8221;,&#8221;20 Jan 2001 16:19:14 GMT&#8221;);<br />          connection.setRequestProperty(&#8221;User-Agent&#8221;,&#8221;Profile/MIDP-2.0 Confirguration/CLDC-1.0&#8243;);<br />          connection.setRequestProperty(&#8221;Content-Language&#8221;, &#8220;en-CA&#8221;);<br />          connection.setRequestProperty(&#8221;Content-Type&#8221;, &#8220;application/x-www-form-urlencoded&#8221;);<br />          os = connection.openOutputStream();<br />          is = connection.openDataInputStream();<br />          int ch;<br />          while ((ch = is.read()) != -1) {<br />            stringBuffer.append((char) ch);<br />          }<br />          textBox = new TextBox(&#8221;Simple GET Test&#8221;, stringBuffer.toString(), 1024, 0);<br />        } finally {<br />           if(is!= null) {<br />              is.close();<br />           }<br />           if(os != null) {<br />              os.close();<br />           }<br />           if(connection != null) {<br />              connection.close();<br />           }<br />        }<br />        display.setCurrent(textBox);<br />    }<br />}</p>
<p>PHP Source Code:</p>
<p><?php<br />$response = &#8220;Hello&#8221;;</p>
<p>if (isset($_GET)) {<br />  switch ($_GET[&#8221;type&#8221;]) {<br />    case 1: $response = &#8220;Good Morning&#8221;; break;<br />    case 2: $response = &#8220;Good Afternoon&#8221;; break;<br />    case 3: $response = &#8220;Good Evening&#8221;; break;<br />    default: $response = &#8220;Hello&#8221;; break;<br />  }  <br />}<br />echo $response;<br />?></p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=18</wfw:commentRss>
		</item>
		<item>
		<title>Simple demo of using timers</title>
		<link>http://j2me-codes.inhandlearning.com/?p=17</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=17#comments</comments>
		<pubDate>Wed, 04 Jul 2007 09:40:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me source code]]></category>

		<category><![CDATA[midlet]]></category>

		<category><![CDATA[timer]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=17</guid>
		<description><![CDATA[import java.util.*;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class TimerMidlet extends MIDlet implements CommandListener{  private Display display;   private Form form;         private Command exit;      private Command stop;      private Timer timer;       private RunTimerTask tt; [...]]]></description>
			<content:encoded><![CDATA[<p>import java.util.*;<br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>public class TimerMidlet extends MIDlet implements CommandListener<br />{<br />  private Display display; <br />  private Form form;       <br />  private Command exit;    <br />  private Command stop;    <br />  private Timer timer;     <br />  private RunTimerTask tt; <br />  private int count = 0;   </p>
<p>  public timerMidlet()<br />  {<br />    form = new Form(&#8221;Timer&#8221;);<br />    exit = new Command(&#8221;Exit&#8221;, Command.EXIT, 1);<br />    stop= new Command(&#8221;Stop&#8221;, Command.STOP, 2);<br />  }    </p>
<p>  public void startApp ()<br />  {<br />    display = Display.getDisplay(this);<br />    form.addCommand(exit);<br />    form.addCommand(stop);<br />    form.setCommandListener(this);</p>
<p>    // Repeating every 3 seconds<br />    timer = new Timer();<br />    tt = new RunTimerTask();<br />    timer.schedule(tt,0, 3000);    <br />    display.setCurrent(form);<br />  }</p>
<p>  public void destroyApp (boolean unconditional){}</p>
<p>  public void pauseApp ()  { }</p>
<p>  public void commandAction(Command c, Displayable d)<br />  {<br />    if (c == stop)<br />    {<br />      timer.cancel();<br />    }<br />    else if (c == exit)<br />    {<br />      destroyApp(false);<br />      notifyDestroyed();<br />    }<br />  }</p>
<p>  /*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />  * RunTimerTask Class - Run the task<br />  *&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*/  <br />  private class RunTimerTask extends TimerTask<br />  {<br />    public final void run()<br />    {<br />      form.append(&#8221;count: &#8221; + ++count + &#8220;\n&#8221;);<br />    }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=17</wfw:commentRss>
		</item>
		<item>
		<title>A utility of startTimer</title>
		<link>http://j2me-codes.inhandlearning.com/?p=16</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=16#comments</comments>
		<pubDate>Wed, 04 Jul 2007 09:39:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me source code]]></category>

		<category><![CDATA[midlet]]></category>

		<category><![CDATA[timer]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=16</guid>
		<description><![CDATA[// Starts a timer to run a simple taskprivate void startTimer( ) {
    // Create a task to be run    task = new TimerTask( ) {
        private boolean isPaused;        private int count;
    [...]]]></description>
			<content:encoded><![CDATA[<p>// Starts a timer to run a simple task<br />private void startTimer( ) {</p>
<p>    // Create a task to be run<br />    task = new TimerTask( ) {</p>
<p>        private boolean isPaused;<br />        private int count;</p>
<p>        public void run( ) {</p>
<p>            // Pause or resume the MIDlet.<br />            System.out.println(&#8221;Timer scheduled&#8221;);</p>
<p>            if (count++ == 4) {</p>
<p>                // Terminate the MIDlet<br />                try {</p>
<p>                    ExampleMIDlet.this.destroyApp(true);</p>
<p>                } catch (MIDletStateChangeException ex) {<br />                    // Ignore pleas for mercy!<br />                }</p>
<p>                ExampleMIDlet.this.notifyDestroyed( );<br />                return;<br />            } // run end</p>
<p>            if (isPaused) {</p>
<p>                System.out.println(&#8221;>> Resuming MIDlet&#8221;);<br />                ExampleMIDlet.this.resumeRequest( );<br />                isPaused = false;</p>
<p>            } else {</p>
<p>                System.out.println(&#8221;>> Pausing MIDlet&#8221;);<br />                isPaused = true;<br />                ExampleMIDlet.this.pauseApp( );<br />                ExampleMIDlet.this.notifyPaused( );</p>
<p>            } // if end<br />        } // task end<br />    };</p>
<p>// Create a timer and schedule it to run<br />    timer = new Timer( );</p>
<p>    timer.schedule(task, timerInterval, timerInterval);<br />    System.out.println(&#8221;Timer started.&#8221;);<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=16</wfw:commentRss>
		</item>
		<item>
		<title>A MIDlet with Hello text and an Exit command</title>
		<link>http://j2me-codes.inhandlearning.com/?p=15</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=15#comments</comments>
		<pubDate>Wed, 04 Jul 2007 09:35:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[basic]]></category>

		<category><![CDATA[j2me source code]]></category>

		<category><![CDATA[midlet]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=15</guid>
		<description><![CDATA[/* * * Copyright (c) 2000 Sun Microsystems, Inc. All Rights Reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. (&#8221;Confidential Information&#8221;).  You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered [...]]]></description>
			<content:encoded><![CDATA[<p>/*<br /> *<br /> * Copyright (c) 2000 Sun Microsystems, Inc. All Rights Reserved.<br /> *<br /> * This software is the confidential and proprietary information of Sun<br /> * Microsystems, Inc. (&#8221;Confidential Information&#8221;).  You shall not<br /> * disclose such Confidential Information and shall use it only in<br /> * accordance with the terms of the license agreement you entered into<br /> * with Sun.<br /> *<br /> * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE<br /> * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE<br /> * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR<br /> * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES<br /> * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING<br /> * THIS SOFTWARE OR ITS DERIVATIVES.<br /> */</p>
<p>import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;</p>
<p>/**<br /> * An example MIDlet with simple &#8220;Hello&#8221; text and an Exit command.<br /> * Refer to the startApp, pauseApp, and destroyApp<br /> * methods so see how each handles the requested transition.<br /> */<br />public class HelloCommandMIDlet extends MIDlet implements CommandListener {</p>
<p>  private Command exitCommand; // The exit command<br />  private Command okCommand; // The exit command<br />  private Command cancelCommand; // The exit command<br />  private Command nextCommand; // The exit command<br />  private Command backCommand; // The exit command<br />    private Display display;  // The display for this MIDlet</p>
<p>    public HelloCommandMIDlet() {<br />        display = Display.getDisplay(this);<br />       exitCommand = new Command(&#8221;Exit&#8221;, Command.EXIT, 2);<br />    }</p>
<p>    /**<br />     * Start up the Hello MIDlet by creating the TextBox and associating<br />     * the exit command and listener.<br />     */<br />    public void startApp() {<br />        TextBox t = new TextBox(&#8221;Hello&#8221;, &#8220;Hello World!&#8221;, 256, 0);</p>
<p>        t.addCommand(exitCommand);<br />        t.setCommandListener(this);</p>
<p>        display.setCurrent(t);<br />    }</p>
<p>    /**<br />     * Pause is a no-op since there are no background activities or<br />     * record stores that need to be closed.<br />     */<br />    public void pauseApp() {<br />    }</p>
<p>    /**<br />     * Destroy must cleanup everything not handled by the garbage collector.<br />     * In this case there is nothing to cleanup.<br />     */<br />    public void destroyApp(boolean unconditional) {<br />    }</p>
<p>    /*<br />     * Respond to commands, including exit<br />     * On the exit command, cleanup and notify that the MIDlet has been destroyed.<br />     */<br />    public void commandAction(Command c, Displayable s) {<br />  if (c == exitCommand) {<br />      destroyApp(false);<br />      notifyDestroyed();<br />  } <br />    }</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=15</wfw:commentRss>
		</item>
		<item>
		<title>Sort mixed records in RMS</title>
		<link>http://j2me-codes.inhandlearning.com/?p=14</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=14#comments</comments>
		<pubDate>Wed, 04 Jul 2007 09:34:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me source code]]></category>

		<category><![CDATA[midlet]]></category>

		<category><![CDATA[rms]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=14</guid>
		<description><![CDATA[/*J2ME: The Complete Reference
James Keogh
Publisher: McGraw-Hill
ISBN 0072227109
*///jad file (please verify the jar size)/*MIDlet-Name: SortMixedRecordDataTypeExampleMIDlet-Version: 1.0MIDlet-Vendor: MyCompanyMIDlet-Jar-URL: SortMixedRecordDataTypeExample.jarMIDlet-1: SortMixedRecordDataTypeExample, ,           SortMixedRecordDataTypeExampleMicroEdition-Configuration: CLDC-1.0MicroEdition-Profile: MIDP-1.0MIDlet-JAR-SIZE: 100
*/
import javax.microedition.rms.*;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.io.*;
public class SortMixedRecordDataTypeExample          extends MIDlet implements CommandListener{  private Display [...]]]></description>
			<content:encoded><![CDATA[<p>/*<br />J2ME: The Complete Reference</p>
<p>James Keogh</p>
<p>Publisher: McGraw-Hill</p>
<p>ISBN 0072227109</p>
<p>*/<br />//jad file (please verify the jar size)<br />/*<br />MIDlet-Name: SortMixedRecordDataTypeExample<br />MIDlet-Version: 1.0<br />MIDlet-Vendor: MyCompany<br />MIDlet-Jar-URL: SortMixedRecordDataTypeExample.jar<br />MIDlet-1: SortMixedRecordDataTypeExample, ,<br />           SortMixedRecordDataTypeExample<br />MicroEdition-Configuration: CLDC-1.0<br />MicroEdition-Profile: MIDP-1.0<br />MIDlet-JAR-SIZE: 100</p>
<p>*/</p>
<p>import javax.microedition.rms.*;<br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;<br />import java.io.*;</p>
<p>public class SortMixedRecordDataTypeExample <br />         extends MIDlet implements CommandListener<br />{<br />  private Display display;<br />  private Alert alert;<br />  private Form form; <br />  private Command exit; <br />  private Command start;<br />  private RecordStore recordstore = null;<br />  private RecordEnumeration recordEnumeration = null;<br />  private Comparator comparator = null;<br />  public SortMixedRecordDataTypeExample ()<br />  {<br />    display = Display.getDisplay(this);<br />    exit = new Command(&#8221;Exit&#8221;, Command.SCREEN, 1);<br />    start = new Command(&#8221;Start&#8221;, Command.SCREEN, 1);<br />    form = new Form(&#8221;Mixed RecordEnumeration&#8221;);<br />    form.addCommand(exit);<br />    form.addCommand(start);<br />    form.setCommandListener(this);<br />  }<br />  public void startApp()<br />  {<br />    display.setCurrent(form);<br />  }<br />  public void pauseApp()<br />  {<br />  }<br />  public void destroyApp( boolean unconditional )<br />  {<br />  }<br />  public void commandAction(Command command, Displayable displayable)<br />  {<br />    if (command == exit)<br />    {<br />      destroyApp(true);<br />      notifyDestroyed();<br />    }<br />    else if (command == start)<br />    {<br />      try<br />      {<br />        recordstore = RecordStore.openRecordStore(<br />                   &#8220;myRecordStore&#8221;, true );<br />      }<br />      catch (Exception error)<br />      {<br />        alert = new Alert(&#8221;Error Creating&#8221;, <br />                  error.toString(), null, AlertType.WARNING); <br />        alert.setTimeout(Alert.FOREVER); <br />        display.setCurrent(alert);<br />      }<br />      try<br />      {<br />        byte[] outputRecord;<br />        String outputString[] = {&#8221;Mary&#8221;, &#8220;Bob&#8221;, &#8220;Adam&#8221;};<br />        int outputInteger[] = {15, 10, 5};<br />        ByteArrayOutputStream outputStream = <br />                new ByteArrayOutputStream();<br />        DataOutputStream outputDataStream = <br />                 new DataOutputStream(outputStream);<br />        for (int x = 0; x < 3; x++)<br />        {<br />          outputDataStream.writeUTF(outputString[x]);<br />          outputDataStream.writeInt(outputInteger[x]); <br />          outputDataStream.flush();               <br />          outputRecord = outputStream.toByteArray();<br />          recordstore.addRecord(outputRecord, 0, <br />                 outputRecord.length);<br />          outputStream.reset();<br />        }  <br />        outputStream.close();<br />        outputDataStream.close();<br />      }<br />      catch ( Exception error)<br />      {<br />        alert = new Alert(&#8221;Error Writing&#8221;, <br />              error.toString(), null, AlertType.WARNING); <br />        alert.setTimeout(Alert.FOREVER); <br />        display.setCurrent(alert);<br />      }<br />      try<br />      {<br />         String[] inputString = new String[3];<br />         int z = 0;<br />         byte[] byteInputData = new byte[300]; <br />         ByteArrayInputStream inputStream = <br />                    new ByteArrayInputStream(byteInputData);<br />         DataInputStream inputDataStream = <br />                    new DataInputStream(inputStream);<br />         StringBuffer buffer = new StringBuffer();<br />         comparator = new Comparator();<br />         recordEnumeration = recordstore.enumerateRecords( <br />                             null, comparator, false);<br />         while (recordEnumeration.hasNextElement())<br />         { <br />          recordstore.getRecord( recordEnumeration.nextRecordId(), <br />                                  byteInputData, 0);<br />          buffer.append(inputDataStream.readUTF());<br />          buffer.append(inputDataStream.readInt());<br />          buffer.append(&#8221;\n&#8221;);<br />          inputDataStream.reset();<br />         }<br />         alert = new Alert(&#8221;Reading&#8221;, buffer.toString(), null, <br />                            AlertType.WARNING); <br />         alert.setTimeout(Alert.FOREVER); <br />         display.setCurrent(alert);<br />         inputDataStream.close();<br />         inputStream.close();<br />      }<br />      catch (Exception error)<br />      {<br />        alert = new Alert(&#8221;Error Reading&#8221;, <br />                            error.toString(), null, AlertType.WARNING); <br />        alert.setTimeout(Alert.FOREVER); <br />        display.setCurrent(alert);<br />      }<br />      try<br />      {<br />        recordstore.closeRecordStore();<br />      }<br />      catch (Exception error)<br />      {<br />        alert = new Alert(&#8221;Error Closing&#8221;, <br />                     error.toString(), null, AlertType.WARNING); <br />        alert.setTimeout(Alert.FOREVER); <br />        display.setCurrent(alert);<br />      }<br />      if (RecordStore.listRecordStores() != null)<br />      {<br />        try<br />        {<br />          RecordStore.deleteRecordStore(&#8221;myRecordStore&#8221;);<br />          comparator.compareClose();<br />          recordEnumeration.destroy();<br />        }<br />        catch (Exception error)<br />        {<br />         alert = new Alert(&#8221;Error Removing&#8221;, <br />                   error.toString(), null, AlertType.WARNING); <br />         alert.setTimeout(Alert.FOREVER); <br />         display.setCurrent(alert);<br />        }<br />      }      <br />    }<br />  }     <br />}<br />class Comparator implements RecordComparator<br />{<br />  private byte[] comparatorInputData = new byte[300];<br />  private ByteArrayInputStream comparatorInputStream = null;<br />  private DataInputStream comparatorInputDataType = null;<br />  public int compare(byte[] record1, byte[] record2)<br />  {<br />    int record1int, record2int;<br />    try<br />    {<br />      int maxlen = Math.max(record1.length, record2.length);<br />      if (maxlen > comparatorInputData.length)<br />      {<br />        comparatorInputData = new byte[maxlen];<br />      }<br />      comparatorInputStream = new ByteArrayInputStream(record1);<br />      comparatorInputDataType = <br />               new DataInputStream(comparatorInputStream);<br />      comparatorInputDataType.readUTF();<br />      record1int = comparatorInputDataType.readInt();  <br />      comparatorInputStream = new ByteArrayInputStream(record2);<br />      comparatorInputDataType = <br />              new DataInputStream(comparatorInputStream);<br />      comparatorInputDataType.readUTF();<br />      record2int = comparatorInputDataType.readInt();  <br />      if (record1int == record2int)<br />      {<br />        return RecordComparator.EQUIVALENT;<br />      }<br />      else if (record1int < record2int)<br />      {<br />        return RecordComparator.PRECEDES;<br />      }<br />      else<br />      {<br />        return RecordComparator.FOLLOWS;<br />      }<br />    }      <br />    catch (Exception error)<br />    { <br />      return RecordComparator.EQUIVALENT;<br />    } <br />  }<br />  public void compareClose()<br />  {<br />    try<br />    {<br />      if (comparatorInputStream!= null)<br />      {<br />        comparatorInputStream.close();<br />      }<br />      if (comparatorInputDataType!= null)<br />      {<br />        comparatorInputDataType.close();<br />      }<br />    }<br />    catch (Exception error)<br />    {<br />    }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=14</wfw:commentRss>
		</item>
		<item>
		<title>How to search a simple record in RMS</title>
		<link>http://j2me-codes.inhandlearning.com/?p=13</link>
		<comments>http://j2me-codes.inhandlearning.com/?p=13#comments</comments>
		<pubDate>Wed, 04 Jul 2007 09:30:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[j2me source code]]></category>

		<category><![CDATA[midlet]]></category>

		<category><![CDATA[rms]]></category>

		<guid isPermaLink="false">http://j2me-codes.inhandlearning.com/?p=13</guid>
		<description><![CDATA[/*J2ME: The Complete Reference
James Keogh
Publisher: McGraw-Hill
ISBN 0072227109
*/
// jad file (Please verify the jar size first)/*MIDlet-Name: SearchExampleMIDlet-Version: 1.0MIDlet-Vendor: MyCompanyMIDlet-Jar-URL: SearchExample.jarMIDlet-1: SearchExample, , SearchExampleMicroEdition-Configuration: CLDC-1.0MicroEdition-Profile: MIDP-1.0MIDlet-JAR-SIZE: 100
*/import javax.microedition.rms.*;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.io.*;
public class SearchExample extends MIDlet implements CommandListener{  private Display display;  private Alert alert;  private Form form;   private Command exit;   private [...]]]></description>
			<content:encoded><![CDATA[<p>/*<br />J2ME: The Complete Reference</p>
<p>James Keogh</p>
<p>Publisher: McGraw-Hill</p>
<p>ISBN 0072227109</p>
<p>*/</p>
<p>// jad file (Please verify the jar size first)<br />/*<br />MIDlet-Name: SearchExample<br />MIDlet-Version: 1.0<br />MIDlet-Vendor: MyCompany<br />MIDlet-Jar-URL: SearchExample.jar<br />MIDlet-1: SearchExample, , SearchExample<br />MicroEdition-Configuration: CLDC-1.0<br />MicroEdition-Profile: MIDP-1.0<br />MIDlet-JAR-SIZE: 100</p>
<p>*/<br />import javax.microedition.rms.*;<br />import javax.microedition.midlet.*;<br />import javax.microedition.lcdui.*;<br />import java.io.*;</p>
<p>public class SearchExample extends MIDlet implements CommandListener<br />{<br />  private Display display;<br />  private Alert alert;<br />  private Form form; <br />  private Command exit; <br />  private Command start;<br />  private RecordStore recordstore = null;<br />  private RecordEnumeration recordEnumeration = null;<br />  private Filter filter = null;<br />  public SearchExample ()<br />  {<br />    display = Display.getDisplay(this);<br />    exit = new Command(&#8221;Exit&#8221;, Command.SCREEN, 1);<br />    start = new Command(&#8221;Start&#8221;, Command.SCREEN, 1);<br />    form = new Form(&#8221;Mixed RecordEnumeration&#8221;, null);<br />    form.addCommand(exit);<br />    form.addCommand(start);<br />    form.setCommandListener(this);<br />  }<br />  public void startApp()<br />  {<br />    display.setCurrent(form);<br />  }<br />  public void pauseApp()<br />  {<br />  }<br />  public void destroyApp( boolean unconditional )<br />  {<br />  }<br />  public void commandAction(Command command, Displayable displayable)<br />  {<br />    if (command == exit)<br />    {<br />      destroyApp(true);<br />      notifyDestroyed();<br />    }<br />    else if (command == start)<br />    {<br />      try<br />      {<br />        recordstore = RecordStore.openRecordStore(<br />                          &#8220;myRecordStore&#8221;, true );<br />      }<br />      catch (Exception error)<br />      {<br />        alert = new Alert(&#8221;Error Creating&#8221;, <br />                 error.toString(), null, AlertType.WARNING); <br />        alert.setTimeout(Alert.FOREVER); <br />        display.setCurrent(alert);<br />      }<br />      try<br />      {<br />        String outputData[] = {&#8221;Mary&#8221;, &#8220;Bob&#8221;, &#8220;Adam&#8221;};<br />        for (int x = 0 ; x < 3; x++)<br />        {<br />          byte[] byteOutputData = outputData[x].getBytes();<br />          recordstore.addRecord(byteOutputData, 0, <br />                         byteOutputData.length);<br />        }<br />      }<br />      catch ( Exception error)<br />      {<br />        alert = new Alert(&#8221;Error Writing&#8221;, <br />               error.toString(), null, AlertType.WARNING); <br />        alert.setTimeout(Alert.FOREVER); <br />        display.setCurrent(alert);<br />      }<br />      try<br />      {<br />        filter = new Filter(&#8221;Bob&#8221;);<br />        recordEnumeration = recordstore.enumerateRecords(<br />                     filter, null, false);<br />        if (recordEnumeration.numRecords() > 0)<br />        {<br />          String string = new String(recordEnumeration.nextRecord());<br />          alert = new Alert(&#8221;Reading&#8221;, string, <br />                     null, AlertType.WARNING);<br />          alert.setTimeout(Alert.FOREVER); <br />          display.setCurrent(alert); <br />        }<br />      }<br />      catch (Exception error)<br />      {<br />       alert = new Alert(&#8221;Error Reading&#8221;, <br />                error.toString(), null, AlertType.WARNING); <br />       alert.setTimeout(Alert.FOREVER); <br />       display.setCurrent(alert);<br />      }<br />      try<br />      {<br />       recordstore.closeRecordStore();<br />      }<br />      catch (Exception error)<br />      {<br />        alert = new Alert(&#8221;Error Closing&#8221;, <br />                error.toString(), null, AlertType.WARNING); <br />        alert.setTimeout(Alert.FOREVER); <br />        display.setCurrent(alert);<br />      }<br />      if (RecordStore.listRecordStores() != null)<br />      {<br />        try<br />        {<br />         RecordStore.deleteRecordStore(&#8221;myRecordStore&#8221;);<br />         recordEnumeration.destroy();<br />         filter.filterClose();<br />        }<br />        catch (Exception error)<br />        {<br />         alert = new Alert(&#8221;Error Removing&#8221;, <br />                  error.toString(), null, AlertType.WARNING); <br />         alert.setTimeout(Alert.FOREVER); <br />         display.setCurrent(alert);<br />        }<br />      }<br />    }<br />  }     <br />}<br />class Filter implements RecordFilter<br />{<br />  private String search = null;<br />  private ByteArrayInputStream inputstream = null;<br />  private DataInputStream datainputstream = null;<br />  public Filter(String search)<br />  {<br />    this.search = search.toLowerCase();<br />  }<br />  public boolean matches(byte[] suspect)<br />  {<br />    String string = new String(suspect).toLowerCase();<br />    if (string!= null &#038;&#038; string.indexOf(search) != -1)<br />      return true;<br />    else<br />      return false;<br />  }<br />  public void filterClose()<br />  {<br />    try<br />    {<br />      if (inputstream != null)<br />      {<br />        inputstream.close();<br />      }<br />      if (datainputstream != null)<br />      {<br />        datainputstream.close();<br />      }<br />    }<br />    catch ( Exception error)<br />    {<br />    }<br />  }<br />}</p>
]]></content:encoded>
			<wfw:commentRss>http://j2me-codes.inhandlearning.com/?feed=rss2&amp;p=13</wfw:commentRss>
		</item>
	</channel>
</rss>
