<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://uberthings.com/teaching/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=72.244.211.50</id>
	<title>Mobile Application Design - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://uberthings.com/teaching/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=72.244.211.50"/>
	<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=Special:Contributions/72.244.211.50"/>
	<updated>2026-05-30T13:23:11Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=Deploying&amp;diff=1550</id>
		<title>Deploying</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=Deploying&amp;diff=1550"/>
		<updated>2006-10-05T03:00:34Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Over The Air (OTA) Provisioning ==== &lt;br /&gt;
&lt;br /&gt;
OTA provisioning allows users to download your application wirelessly using the WAP browsers built into their phones. To begin, we need to take a look at the Java Application Descriptor (JAD) file that is created when you package a MIDlet using the J2ME Wireless Toolkit. The JAD file stores information about your application and lets you modify various parameters of the MIDlet suite such as where the icon resource can be found, which MIDlets are included and where you can download the full version of the application. To edit a JAD file using the Wireless Toolkit, open your project, then click on Settings. This will open up a new window with a number of tabs - API Selection, Required, Optional, User Defined, MIDlets, Push Registry and Permissions.&lt;br /&gt;
&lt;br /&gt;
Please note that the example is based on the one here: http://uberthings.com/mobile/&lt;br /&gt;
&lt;br /&gt;
   1. API Selection&lt;br /&gt;
      This is where you choose which version of MIDP your application will use and which optional packages (JSRs) are included. The default is set to JTWI (Java Technology for the Wireless Industry) which allows you to use MIDP 2.0 as well as MMAPI and other exciting things. If you&#039;re having any problems with your application on your device try changing this to MIDP 1.0.&lt;br /&gt;
&lt;br /&gt;
   2. Required&lt;br /&gt;
      This tab includes various options which are essential for packaging a MIDlet suite. The MIDlet-Jar-URL attribute is where we will define the location of the packaged JAR file to be downloaded to the device.&lt;br /&gt;
&lt;br /&gt;
   3. Optional&lt;br /&gt;
&lt;br /&gt;
      This tab includes optional parameters for your MIDlet - such as the path to the icon for the entire suite, a description and a MIDlet-Info-URL parameter.&lt;br /&gt;
   4. User Defined&lt;br /&gt;
&lt;br /&gt;
      This tab includes user defined variables that your MIDlet can use - such as a common URL that you don&#039;t want to hard wire into the source code.&lt;br /&gt;
   5. MIDlets&lt;br /&gt;
&lt;br /&gt;
      This tab manages all the settings for the MIDlets within your suite. At the very least you need to have one file here. This is also where you set the path to the MIDlet&#039;s icon resource.&lt;br /&gt;
   6. Push Registry&lt;br /&gt;
&lt;br /&gt;
      This lets you configure the Push Registry which allows your MIDlet to listen and act on information received from a remote source. MIDP 2.0 Only.&lt;br /&gt;
   7. Permissions&lt;br /&gt;
&lt;br /&gt;
      Under MIDP 1.0, applications could only access libraries packaged inside the suite - this was called the sandbox model. MIDP 2.0 introduces the concept of trusted applications which allow access beyond the sandbox. This section allows you to specify which APIs are accessible.&lt;br /&gt;
&lt;br /&gt;
For our purposes - the most important property is the MIDlet-Jar-URL within the Required tab. Here are the steps you need to take:&lt;br /&gt;
&lt;br /&gt;
   1. Create a folder on your web server&lt;br /&gt;
&lt;br /&gt;
      Hopefully you have an account with a web provider - login to that account and create a directory for your MIDlets to live and be served from. I created the directory http://uberthings.com/mobile/midlets. Once you&#039;ve got that, you need to make a few changes to allow your server (assumed to be Apache) to serve JAD and JAR files correctly. Go to the root of your account and edit or create your .htaccess file. Add these lines:&lt;br /&gt;
&lt;br /&gt;
      AddType text/vnd.sun.j2me.app-descriptor jad&lt;br /&gt;
      AddType application/java-archive jar&lt;br /&gt;
&lt;br /&gt;
      Save this file. If you&#039;re not using Apache, ensure that your MIME types include the above two settings.&lt;br /&gt;
   2. Specify the MIDlet-Jar-URL&lt;br /&gt;
&lt;br /&gt;
      Click on Settings then go to the Required Tab. In the MIDlet-Jar-URL field, fill in the absolute URL of your JAR file. This will normally be something like http://mydomain/mydir/HelloProject.jar. For my server, this was http://www.uberthings.com/mobile/midlets/HelloProject.jar.&lt;br /&gt;
   3. Package your MIDlet&lt;br /&gt;
&lt;br /&gt;
      Click on Project-&amp;gt;Package-&amp;gt;Create Package. This will create a .jar and a .jad file in your applications bin folder. For my application - this was c:\j2mewtk\apps\HelloProject\bin\HelloProject.jar and c:\j2mewtk\apps\HelloProject\bin\HelloProject.jad.&lt;br /&gt;
   4. Upload the packaged MIDlet suite&lt;br /&gt;
&lt;br /&gt;
      Upload the JAR and JAD files that the packaging operation created to the folder you created earlier.&lt;br /&gt;
   5. Test with your device&lt;br /&gt;
&lt;br /&gt;
      Open the WAP browser on your phone and point it to the URL of the JAD file. Using my example, this would be http://uberthings.com/mobile/midlets/HelloProject.jad. Your device should then prompt you to download and install the MIDlet. Carry it around and show it off to all your friends!&lt;br /&gt;
&lt;br /&gt;
==== Cable / Bluetooth ==== &lt;br /&gt;
&lt;br /&gt;
If you&#039;ve got a Bluetooth adaptor or a USB cable which connects directly to your phone, you can use this to quickly test your packaged midlet.&lt;br /&gt;
&lt;br /&gt;
  Windows XP/2000: Browse to the bin folder of your project, right click on the .jar file and select Send To-&amp;gt;Bluetooth-&amp;gt;YOURDEVICE.&lt;br /&gt;
  MacOS X: Click on the Bluetooth icon in the menu bar, choose Send File. Select your JAR file and send it to your device.&lt;br /&gt;
This should send a message to your phone which will install the MIDlet once opened. This should work on most Nokia Series 60 phones (3650, 6600, N-Gage etc).&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=Setup&amp;diff=1544</id>
		<title>Setup</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=Setup&amp;diff=1544"/>
		<updated>2006-10-02T13:08:44Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Setting up your environment ==&lt;br /&gt;
&lt;br /&gt;
Having a good environment setup is essential for everything you will be doing with Java ME - writing, compiling, packaging, debugging, obfuscating, tearing your hair out etc etc. Use the instructions here to setup your environment on Windows or OS X (currently experimental). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Java + Wireless Toolkit&amp;lt;/h2&amp;gt;&lt;br /&gt;
#Java Standard Edition Development Kit (JDK) - you need to have some version of Java installed on your machine. Try to get version 1.4.2 (or later). This is essential for development. NOTE: You MUST have the JDK installed before you install the Java Wireless Toolkit as you will need the tools it contains (such as javac) to compile and run your MIDlets.&lt;br /&gt;
#Download it here: http://java.sun.com/j2se/downloads/index.html. Get the version without any other bundled software. It should be called something like JDK 5.0 Update 8.&lt;br /&gt;
#Java ME, Wireless Toolkit (WTK). This contains the essential tools that we need to build, package and install mobile applications. Download it here: http://java.sun.com/products/j2mewtoolkit/. Get the [J2ME Wireless Toolkit 2.2 http://java.sun.com/products/sjwtoolkit/download-2_2.html], or if you feel living on the bleeding edge - grab the Sun [Java Wireless Toolkit 2.5 for CLDC, Beta http://java.sun.com/products/sjwtoolkit/download-2_5.html](the toolkit formerly known as J2ME Wireless Toolkit). Careful, you may cut yourself.&lt;br /&gt;
#I&#039;m going to assume that you will install this into the &amp;lt;pre&amp;gt;C:\WTK\&amp;lt;/pre&amp;gt; directory - if you install it somewhere else, just modify the paths accordingly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Paths&amp;lt;/h2&amp;gt;&lt;br /&gt;
To play nicely with the grown-ups, Java needs to know where all your files are, so we need to add the location of the Java binaries to the system path.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Windows 95/98&amp;lt;/h3&amp;gt;&lt;br /&gt;
Go to Start-&amp;gt;Run. Type in &amp;lt;em&amp;gt;command&amp;lt;/em&amp;gt;. Then type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;SET PATH=%PATH%;C:\WTK\bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also edit your C:\autoexec.bat file to include this line, so you don&#039;t have to enter it every single time you restart your computer. After you&#039;ve done this, you should be able to run the tools included in the Java Wireless Toolkit from any directory on your system. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Windows 2000/XP&amp;lt;/h3&amp;gt; &lt;br /&gt;
#Go to Control Panel -&amp;gt; System.&lt;br /&gt;
#Click on the Advanced Tab&lt;br /&gt;
#Click on the Environment Variables button&lt;br /&gt;
#Double-click the PATH variable in the System variables box&lt;br /&gt;
#At the end of the &amp;lt;em&amp;gt;Variable value&amp;lt;/em&amp;gt; field, add the path to your J2ME WTK installation - for me this is something like &amp;lt;em&amp;gt;;C:\WTK&amp;lt;/em&amp;gt;&lt;br /&gt;
#If you had to install the J2SE SDK too, it&#039;s a good idea to add the paths for that as well - for me this was &amp;lt;em&amp;gt;C:\j2sdk1.4.2_03;C:\j2sdk1.4.2_03\bin&amp;lt;/em&amp;gt;.&lt;br /&gt;
	&lt;br /&gt;
  &amp;lt;p&amp;gt;A good way to test if this worked is to type the preverify command without any arguments in the command line. You should see something like this on your screen. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\&amp;gt; preverify&amp;lt;br /&amp;gt;&lt;br /&gt;
Usage: PREVERIFY.EXE [options] classnames|dirnames ...&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
where options include:&amp;lt;br /&amp;gt;&lt;br /&gt;
   -classpath &amp;lt;directories separated by &#039;;&#039;&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  Directories in which to look for classes&amp;lt;br /&amp;gt;&lt;br /&gt;
   -d &amp;lt;directory&amp;gt; Directory in which output is written &amp;lt;br /&amp;gt;&lt;br /&gt;
   @&amp;lt;filename&amp;gt;    Read command line arguments from a text file.&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Emulators&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Windows&amp;lt;/h3&amp;gt;&lt;br /&gt;
Depending on your target device, you should download and install the SDK for that particular handset or family of handsets from the manufacturer&#039;s site. Since this course is based around the Nokia Series 60 handsets, we&#039;re going to grab the Nokia Series 60 2nd Edition SDK, Feature Pack 2 and 3 as well as the Nokia Series 60 3rd Edition SDK (for the N80). You&#039;ll also need to get serial numbers for these SDKs, so don&#039;t forget to request those as well.&lt;br /&gt;
Download them from here: &lt;br /&gt;
&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/6e772b17-604b-4081-999c-31f1f0dc2dbb/S60_Platform_SDKs_for_Symbian_OS_for_Java.html Series 60 SDKs] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Mac OS X&amp;lt;/h3&amp;gt;&lt;br /&gt;
None of the manufacturers have bothered to port their SDKs for the Mac, and neither has Sun, but there is a way to develop MIDP 1.0 and 2.0 applications using Apache Ant, MPowerplayer MIDP 2.0 SDK and J2ME Polish. Get &#039;em while they&#039;re hot: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;Apache Ant&amp;lt;/h5&amp;gt;&lt;br /&gt;
# Download Apache Ant from http://download.nextag.com/apache/ant/binaries/apache-ant-1.6.5-bin.tar.gz &lt;br /&gt;
# Save it somewhere easy and memorable - on my machine I save all my downloaded source files to &amp;lt;pre&amp;gt;/Users/michael/src&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Here is the process. To try keep things clean, we&#039;re going to be installing into /usr/local. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar -zxvf apache-ant-1.6.5-src.tar.gz&lt;br /&gt;
cd /usr/local&lt;br /&gt;
sudo mkdir ant&lt;br /&gt;
cd ant&lt;br /&gt;
sudo cp -R ~/src/apache-ant-1.6.5/bin .&lt;br /&gt;
sudo cp -R ~/src/apache-ant-1.6.5/lib .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Set up the paths in your environment&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pico ~/.bash_login&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add these lines somewhere&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export ANT_HOME=/usr/local/ant&lt;br /&gt;
export JAVA_HOME=/Library/Java/Home&lt;br /&gt;
export PATH=${PATH}:${ANT_HOME}/bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Shut down your shell, open it up again and type&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ant&lt;br /&gt;
&lt;br /&gt;
You should see something like this &lt;br /&gt;
&lt;br /&gt;
Buildfile: build.xml does not exist!&lt;br /&gt;
Build failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This means that Ant is installed and we&#039;re ready to roll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;MPowerplayer MIDP 2.0 SDK&amp;lt;/h5&amp;gt;&lt;br /&gt;
# Download this from http://www.mpowerplayer.com/products-sdk.php&lt;br /&gt;
# Save the file somewhere in your src folder and unzip it. On my machine this looked like this: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/Users/michael/src/mobile/mpp-sdk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# [Optional] I like making shortcuts so that it&#039;s easy for me to run the application. Fire up your favourite editor and type this&lt;br /&gt;
&amp;lt;pre&amp;gt;java -jar /Users/michael/src/mobile/mpp/player.jar $1 &amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then save that somewhere in your path as &#039;&#039;&#039;mpp&#039;&#039;&#039; Type the following: &lt;br /&gt;
&amp;lt;pre&amp;gt;chmod 755 mpp&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now, all you need to do to run JAD/JAR files in the emulator is type &amp;lt;pre&amp;gt;mpp [filename.jad/filename.jar]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;J2ME Polish&amp;lt;/h5&amp;gt;&lt;br /&gt;
# Download [http://j2mepolish.org/downloads/j2mepolish-2.0-beta1.html J2ME Polish]. I got the latest 2.0 beta version. It seems to work well. &lt;br /&gt;
# Run the downloaded JAR file&lt;br /&gt;
# Choose the GPL or Evaluation license&lt;br /&gt;
# Select the directory where you installed the MPP-SDK as the path to your wireless toolkit. &lt;br /&gt;
# Test if everything installed correctly by running one of the J2ME Polish sample applications&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /Applications/J2ME-Polish/samples/menu&lt;br /&gt;
ant&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# You should see a few messages from Ant letting you know that it&#039;s building the application. The build is configured to store all the JAD and JAR files inside the dist folder. &lt;br /&gt;
# Once it&#039;s done, if you created a shortcut to the MPowerplayer SDK like I suggested above, you should be able to run it by typing something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpp dist/Sony-Ericsson-P900-en_US-example.jad &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
# I included a modified build.xml with extensive comments file in the [http://uberthings.com/teaching/mobile_application_design/1/code.zip HelloMidlet] code samples. Open it up in a text editor and read through to learn how it works. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;Building&amp;lt;/h5&amp;gt;&lt;br /&gt;
To build applications with J2ME Polish, Mpowerplayer and Ant, you need to do the following: &lt;br /&gt;
&lt;br /&gt;
# Copy the build.xml file into your MIDlet&#039;s directory. &lt;br /&gt;
# Check the paths inside the build.xml file to ensure that they&#039;re pointing to the right folders for your source folders, Mpowerplayer and J2ME Polish&lt;br /&gt;
# Type ant. Watch the magic unfold. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;IDE&#039;s&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Eclipse&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://eclipse.org Eclipse] is a fantastic open source Java Integrated Development Environment (IDE) which has a few sweet J2ME plugins. The one I use the most is called [http://eclipseme.org EclipseME]. &amp;lt;s&amp;gt;Although Eclipse is cross-platform, EclipseME doesn&#039;t work very well on OS X.&amp;lt;/s&amp;gt; OS X works nicely with EclipseME and the MPowerplayer SDK. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Windows&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Download Eclipse from http://www.eclipse.org/downloads/. Install it somewhere easy - like C:\eclipse&lt;br /&gt;
# Configuring and install EclipseME using the excellent installation and configuration instructions [http://eclipseme.org/docs/installEclipseME.html here] to guide you through this process.&lt;br /&gt;
# Once you&#039;re done - we&#039;re ready to start coding! Yeah!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OS X&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Install EclipseME from the download site. &lt;br /&gt;
# Go to Window-&amp;gt;Preferences. Select J2ME. &lt;br /&gt;
# When it asks you for the WTK Root - select the folder where you installed the Mpowerplayer SDK - for me it was /Users/michael/src/mobile/mpp-sdk. &lt;br /&gt;
# Go to Device Manager. Hit Import. Select the Mpowerplayer directory again. It will only find one emulator. Select it. &lt;br /&gt;
# Hit Apply. Then ok. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Initial Directory structures&#039;&#039;&#039; &lt;br /&gt;
# For my projects, I like to set up my source files in the /src folders of my projects and all external files to be in /res - this is how you do it in Eclipse. &lt;br /&gt;
[http://uberthings.com/teaching/mobile_application_design/i/j2me_setup.jpg J2ME Setup]&lt;br /&gt;
&lt;br /&gt;
[http://uberthings.com/teaching/mobile_application_design/i/java_build_path.jpg Java Build Path]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Netbeans&amp;lt;/h3&amp;gt;&lt;br /&gt;
Download Netbeans from Sun here - http://www.netbeans.org/. I don&#039;t use it much, but I&#039;ve heard good things. Let me know how it treats you. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Mobile.Processing&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://mobile.processing.org/ Mobile.Processing] is an open source programming environment for people who want to design and prototype software for mobile phones. It is based on and shares the same design goals as the open source [http://processing.org Processing ] project. Sketches programmed using Mobile Processing run on Java Powered mobile devices. Mobile.Processing is extremely easy to get up and running with, but has some drawbacks which will prevent us from using it. &lt;br /&gt;
&lt;br /&gt;
Mobile.Processing is available for both Windows and Mac OS X. Download it [http://mobile.processing.org/download/index.php here].&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=Week_2:_Forms-A-Go-Go&amp;diff=1467</id>
		<title>Week 2: Forms-A-Go-Go</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=Week_2:_Forms-A-Go-Go&amp;diff=1467"/>
		<updated>2006-09-16T17:07:47Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: /* Setup for Eclipse users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Setup for Eclipse users ==&lt;br /&gt;
&lt;br /&gt;
# Download the [http://uberthings.com/teaching/mobile_application_design/2/Forms-A-Go-Go.zip Forms-A-Go-Go] files and unzip them to somewhere in your filesystem&lt;br /&gt;
# Copy the entire Forms-A-Go-Go folder into your Eclipse workspace&lt;br /&gt;
# Create a new J2ME Project called - Forms-A-Go-Go. I like to use the Nokia S60 emulator - but you can use anything you like. &lt;br /&gt;
# Eclipse should automatically find all the files that we added if you spelled everything correctly&lt;br /&gt;
# Create a configuration to run your Midlet by right-clicking the project name, selecting Run as, Run...&lt;br /&gt;
# Make it look something like this - http://uberthings.com/teaching/mobile_application_design/2/forms_run_dialog.png&lt;br /&gt;
# Run the MIDlet&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to read through the source code to see how everything works.&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=Week_2:_Forms-A-Go-Go&amp;diff=1466</id>
		<title>Week 2: Forms-A-Go-Go</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=Week_2:_Forms-A-Go-Go&amp;diff=1466"/>
		<updated>2006-09-16T16:42:42Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Setup for Eclipse users ==&lt;br /&gt;
&lt;br /&gt;
# Download the [http://uberthings.com/teaching/mobile_application_design/2/code/Forms-A-Go-Go.zip Forms-A-Go-Go] files and unzip them to somewhere in your filesystem&lt;br /&gt;
# Copy the entire Forms-A-Go-Go folder into your Eclipse workspace&lt;br /&gt;
# Create a new J2ME Project called - Forms-A-Go-Go. I like to use the Nokia S60 emulator - but you can use anything you like. &lt;br /&gt;
# Eclipse should automatically find all the files that we added if you spelled everything correctly&lt;br /&gt;
# Create a configuration to run your Midlet by right-clicking the project name, selecting Run as, Run...&lt;br /&gt;
# Make it look something like this - http://uberthings.com/teaching/mobile_application_design/2/forms_run_dialog.png&lt;br /&gt;
# Run the MIDlet&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to read through the source code to see how everything works.&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=Week_2:_ZombieDetector&amp;diff=1464</id>
		<title>Week 2: ZombieDetector</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=Week_2:_ZombieDetector&amp;diff=1464"/>
		<updated>2006-09-16T15:28:24Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Zombie Detector ==&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
# Create a new J2ME Midlet Suite in Eclipse by right-clicking in the Package Manager, selecting New -&amp;gt; Project -&amp;gt; J2ME Midlet Suite&lt;br /&gt;
# Call this ZombieDetector. Leave everything else as is. &lt;br /&gt;
# Right-click on your ZombieDetector project and select New -&amp;gt; Class&lt;br /&gt;
# Use &#039;&#039;&#039;src&#039;&#039;&#039; as your package and &#039;&#039;&#039;ZombieDetector&#039;&#039;&#039; as the class name. Click Finish.&lt;br /&gt;
# Open your new ZombieDetector class&lt;br /&gt;
# Cut and paste the code from below into your file. Save. &lt;br /&gt;
# Open up the ZombieDetector.jad file&lt;br /&gt;
# Click on the Midlets tab. Click Add. &lt;br /&gt;
# Write in ZombieDetector as the MIDlet name.&lt;br /&gt;
# Click in the button that appears in class. You may have to start typing Zombie in. It should find your class automatically. If nothing happens, try closing all the files down and opening them again. &lt;br /&gt;
# Right-click your project again, select Run As, then Run...&lt;br /&gt;
# Setup so that it looks something like this - http://uberthings.com/teaching/mobile_application_design/2/run_dialog.png&lt;br /&gt;
# Run your MIDlet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;package src;&lt;br /&gt;
&lt;br /&gt;
import javax.microedition.midlet.*;&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Zombie Detector&lt;br /&gt;
 * @author Michael Sharon&lt;br /&gt;
 * &lt;br /&gt;
 * This program will allow a user to type in a sentence and detect if they are a zombie or not. &lt;br /&gt;
 *&lt;br /&gt;
 * Notice that we&#039;re implementing the CommandListener and Runnable. Read up on those two classes in the API docs.&lt;br /&gt;
 * Runnable - http://uberthings.com/mobile/docs/midp1/java/lang/Runnable.html&lt;br /&gt;
 * CommandListenter - http://uberthings.com/mobile/docs/midp1/javax/microedition/lcdui/CommandListener.html&lt;br /&gt;
 */&lt;br /&gt;
public class ZombieDetector extends MIDlet implements CommandListener, Runnable {&lt;br /&gt;
&lt;br /&gt;
	//Create our variables&lt;br /&gt;
&lt;br /&gt;
	//Every MIDlet will always contain exactly one Display object&lt;br /&gt;
	//Display represents the device&#039;s display manager and input devices&lt;br /&gt;
	private Display mDisplay;&lt;br /&gt;
&lt;br /&gt;
	private Command mExitCommand, mDetectCommand, mCancelCommand;&lt;br /&gt;
&lt;br /&gt;
	//Setting up the Textbox and Progress Forms (like the example in class)&lt;br /&gt;
	private TextBox mSubmitBox;&lt;br /&gt;
&lt;br /&gt;
	private Form mProgressForm;&lt;br /&gt;
&lt;br /&gt;
	private StringItem mProgressString;&lt;br /&gt;
&lt;br /&gt;
	//Field / Form style&lt;br /&gt;
	private TextField mSubmitField;&lt;br /&gt;
&lt;br /&gt;
	private Form mDetectionForm;&lt;br /&gt;
&lt;br /&gt;
	public ZombieDetector() {&lt;br /&gt;
		mExitCommand = new Command(&amp;quot;Exit&amp;quot;, Command.EXIT, 0);&lt;br /&gt;
		mDetectCommand = new Command(&amp;quot;Detect&amp;quot;, Command.SCREEN, 0);&lt;br /&gt;
&lt;br /&gt;
		mSubmitBox = new TextBox(&amp;quot;ZombieDetector&amp;quot;, &amp;quot;Am I a Zombie?&amp;quot;, 32, 0);&lt;br /&gt;
		mSubmitBox.addCommand(mExitCommand);&lt;br /&gt;
		mSubmitBox.addCommand(mDetectCommand);&lt;br /&gt;
		mSubmitBox.setCommandListener(this);&lt;br /&gt;
&lt;br /&gt;
		mSubmitField = new TextField(&lt;br /&gt;
				&amp;quot;Type a few words below to check if you are a zombie:&amp;quot;,&lt;br /&gt;
				&amp;quot;I am not a zombie.. honest..&amp;quot;, 32, 0);&lt;br /&gt;
		mDetectionForm = new Form(&amp;quot;Zombie Detector&amp;quot;);&lt;br /&gt;
		mDetectionForm.addCommand(mExitCommand);&lt;br /&gt;
		mDetectionForm.addCommand(mDetectCommand);&lt;br /&gt;
		mDetectionForm.append(mSubmitField);&lt;br /&gt;
		mDetectionForm.setCommandListener(this);&lt;br /&gt;
&lt;br /&gt;
		mProgressForm = new Form(&amp;quot;Lookup progress&amp;quot;);&lt;br /&gt;
		mProgressString = new StringItem(null, null);&lt;br /&gt;
		mProgressForm.append(mProgressString);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void startApp() {&lt;br /&gt;
		mDisplay = Display.getDisplay(this);&lt;br /&gt;
&lt;br /&gt;
		//uncomment the mSubmitbox line below to run it like the example in class&lt;br /&gt;
		//mDisplay.setCurrent(mSubmitBox);&lt;br /&gt;
		mDisplay.setCurrent(mDetectionForm);&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void pauseApp() {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void destroyApp(boolean unconditional) {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//This is called whenever we select a command&lt;br /&gt;
	public void commandAction(Command c, Displayable s) {&lt;br /&gt;
		if (c == mExitCommand) {&lt;br /&gt;
			destroyApp(false);&lt;br /&gt;
			notifyDestroyed();&lt;br /&gt;
		} else if (c == mDetectCommand) {&lt;br /&gt;
			// Show the progress form.&lt;br /&gt;
			mDisplay.setCurrent(mProgressForm);&lt;br /&gt;
			// Kick off the thread to do the query.&lt;br /&gt;
			Thread t = new Thread(this);&lt;br /&gt;
			t.start();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * The run() method is automatically called when a new Thread is started. &lt;br /&gt;
	 *&lt;br /&gt;
	 */&lt;br /&gt;
	public void run() {&lt;br /&gt;
&lt;br /&gt;
		//uncomment the line below if you want use the TextBox&lt;br /&gt;
		//String word = mSubmitBox.getString();&lt;br /&gt;
		String word = mSubmitField.getString();&lt;br /&gt;
		//System.out.println is useful for debugging and sending things to the console. &lt;br /&gt;
		System.out.println(&amp;quot;Got the String - &amp;quot; + word);&lt;br /&gt;
		String result;&lt;br /&gt;
&lt;br /&gt;
		result = checkForZombie(word);&lt;br /&gt;
&lt;br /&gt;
		//Place the result into an Alert&lt;br /&gt;
		Alert results = new Alert(&amp;quot;Result&amp;quot;, result, null, null);&lt;br /&gt;
		results.setTimeout(Alert.FOREVER);&lt;br /&gt;
&lt;br /&gt;
		//Display the Alert, followed by the next Displayable - in this case our Form or Textbox&lt;br /&gt;
		//Uncomment the line below to use the Textbox&lt;br /&gt;
		//mDisplay.setCurrent(results, mSubmitBox);&lt;br /&gt;
		mDisplay.setCurrent(results, mDetectionForm);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private String checkForZombie(String word) {&lt;br /&gt;
		String isZombie = null;&lt;br /&gt;
		int zombieCheck = 0;&lt;br /&gt;
&lt;br /&gt;
		//Check if we&#039;re dealing with a zombie&lt;br /&gt;
		zombieCheck = word.indexOf(&amp;quot;brain&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (zombieCheck == -1) {&lt;br /&gt;
			isZombie = &amp;quot;This is a live one. No zombies here.&amp;quot;;&lt;br /&gt;
		} else {&lt;br /&gt;
			isZombie = &amp;quot;Eeek! Run for your lives!&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return isZombie;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=ClassNotes&amp;diff=1463</id>
		<title>ClassNotes</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=ClassNotes&amp;diff=1463"/>
		<updated>2006-09-16T15:10:05Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Week 1: HelloMIDlet]]&lt;br /&gt;
&lt;br /&gt;
[[Week 2: ZombieDetector]]&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=WeekTwo&amp;diff=1462</id>
		<title>WeekTwo</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=WeekTwo&amp;diff=1462"/>
		<updated>2006-09-16T14:05:37Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I sense that the space below will be filled with exciting homework by August 21.&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=WeekTwo&amp;diff=1461</id>
		<title>WeekTwo</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=WeekTwo&amp;diff=1461"/>
		<updated>2006-09-16T14:04:39Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I sense that the space below will be filled with exciting links by August 21.&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
	<entry>
		<id>https://uberthings.com/teaching/wiki/index.php?title=Setup&amp;diff=1411</id>
		<title>Setup</title>
		<link rel="alternate" type="text/html" href="https://uberthings.com/teaching/wiki/index.php?title=Setup&amp;diff=1411"/>
		<updated>2006-09-07T04:20:09Z</updated>

		<summary type="html">&lt;p&gt;72.244.211.50: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Setting up your environment ==&lt;br /&gt;
&lt;br /&gt;
Having a good environment setup is essential for everything you will be doing with Java ME - writing, compiling, packaging, debugging, obfuscating, tearing your hair out etc etc. Use the instructions here to setup your environment on Windows or OS X (currently experimental). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Java + Wireless Toolkit&amp;lt;/h2&amp;gt;&lt;br /&gt;
#Java Standard Edition Development Kit (JDK) - you need to have some version of Java installed on your machine. Try to get version 1.4.2 (or later). This is essential for development. NOTE: You MUST have the JDK installed before you install the Java Wireless Toolkit as you will need the tools it contains (such as javac) to compile and run your MIDlets.&lt;br /&gt;
#Download it here: http://java.sun.com/j2se/downloads/index.html. Get the version without any other bundled software. It should be called something like JDK 5.0 Update 8.&lt;br /&gt;
#Java ME, Wireless Toolkit (WTK). This contains the essential tools that we need to build, package and install mobile applications. Download it here: http://java.sun.com/products/j2mewtoolkit/. Get the [J2ME Wireless Toolkit 2.2 http://java.sun.com/products/sjwtoolkit/download-2_2.html], or if you feel living on the bleeding edge - grab the Sun [Java Wireless Toolkit 2.5 for CLDC, Beta http://java.sun.com/products/sjwtoolkit/download-2_5.html](the toolkit formerly known as J2ME Wireless Toolkit). Careful, you may cut yourself.&lt;br /&gt;
#I&#039;m going to assume that you will install this into the &amp;lt;pre&amp;gt;C:\WTK\&amp;lt;/pre&amp;gt; directory - if you install it somewhere else, just modify the paths accordingly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Paths&amp;lt;/h2&amp;gt;&lt;br /&gt;
To play nicely with the grown-ups, Java needs to know where all your files are, so we need to add the location of the Java binaries to the system path.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Windows 95/98&amp;lt;/h3&amp;gt;&lt;br /&gt;
Go to Start-&amp;gt;Run. Type in &amp;lt;em&amp;gt;command&amp;lt;/em&amp;gt;. Then type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;SET PATH=%PATH%;C:\WTK\bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also edit your C:\autoexec.bat file to include this line, so you don&#039;t have to enter it every single time you restart your computer. After you&#039;ve done this, you should be able to run the tools included in the Java Wireless Toolkit from any directory on your system. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Windows 2000/XP&amp;lt;/h3&amp;gt; &lt;br /&gt;
#Go to Control Panel -&amp;gt; System.&lt;br /&gt;
#Click on the Advanced Tab&lt;br /&gt;
#Click on the Environment Variables button&lt;br /&gt;
#Double-click the PATH variable in the System variables box&lt;br /&gt;
#At the end of the &amp;lt;em&amp;gt;Variable value&amp;lt;/em&amp;gt; field, add the path to your J2ME WTK installation - for me this is something like &amp;lt;em&amp;gt;;C:\WTK&amp;lt;/em&amp;gt;&lt;br /&gt;
#If you had to install the J2SE SDK too, it&#039;s a good idea to add the paths for that as well - for me this was &amp;lt;em&amp;gt;C:\j2sdk1.4.2_03;C:\j2sdk1.4.2_03\bin&amp;lt;/em&amp;gt;.&lt;br /&gt;
	&lt;br /&gt;
  &amp;lt;p&amp;gt;A good way to test if this worked is to type the preverify command without any arguments in the command line. You should see something like this on your screen. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\&amp;gt; preverify&amp;lt;br /&amp;gt;&lt;br /&gt;
Usage: PREVERIFY.EXE [options] classnames|dirnames ...&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
where options include:&amp;lt;br /&amp;gt;&lt;br /&gt;
   -classpath &amp;lt;directories separated by &#039;;&#039;&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                  Directories in which to look for classes&amp;lt;br /&amp;gt;&lt;br /&gt;
   -d &amp;lt;directory&amp;gt; Directory in which output is written &amp;lt;br /&amp;gt;&lt;br /&gt;
   @&amp;lt;filename&amp;gt;    Read command line arguments from a text file.&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Emulators&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Windows&amp;lt;/h3&amp;gt;&lt;br /&gt;
Depending on your target device, you should download and install the SDK for that particular handset or family of handsets from the manufacturer&#039;s site. Since this course is based around the Nokia Series 60 handsets, we&#039;re going to grab the Nokia Series 60 2nd Edition SDK, Feature Pack 2 and 3 as well as the Nokia Series 60 3rd Edition SDK (for the N80). You&#039;ll also need to get serial numbers for these SDKs, so don&#039;t forget to request those as well.&lt;br /&gt;
Download them from here: &lt;br /&gt;
&lt;br /&gt;
[http://www.forum.nokia.com/info/sw.nokia.com/id/6e772b17-604b-4081-999c-31f1f0dc2dbb/S60_Platform_SDKs_for_Symbian_OS_for_Java.html Series 60 SDKs] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Mac OS X&amp;lt;/h3&amp;gt;&lt;br /&gt;
None of the manufacturers have bothered to port their SDKs for the Mac, and neither has Sun, but there is a way to develop MIDP 1.0 and 2.0 applications using Michael Power&#039;s Mpowerplayer SDK and J2ME Polish. Get them while they&#039;re hot: &lt;br /&gt;
&lt;br /&gt;
[http://www.mpowerplayer.com/products-sdk.php MPowerplayer SDK]&lt;br /&gt;
&lt;br /&gt;
[http://j2mepolish.org/downloads/j2mepolish-2.0-beta1.html J2ME Polish]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;IDE&#039;s&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Eclipse&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://eclipse.org Eclipse] is a fantastic open source Java Integrated Development Environment (IDE) which has a few sweet J2ME plugins. The one I use the most is called [http://eclipseme.org EclipseME]. &lt;br /&gt;
&lt;br /&gt;
#Download Eclipse from http://www.eclipse.org/downloads/. Install it somewhere easy - like C:\eclipse&lt;br /&gt;
#Configuring and install EclipseME using the excellent installation and configuration instructions [http://eclipseme.org/docs/installEclipseME.html here] to guide you through this process.&lt;br /&gt;
#Once you&#039;re done - we&#039;re ready to start coding! Yeah!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Netbeans&amp;lt;/h3&amp;gt;&lt;br /&gt;
Download Netbeans from Sun here - http://www.netbeans.org/. I don&#039;t use it much, but I&#039;ve heard good things. Let me know how it treats you. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Mobile.Processing&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://mobile.processing.org/ Mobile.Processing] is an open source programming environment for people who want to design and prototype software for mobile phones. It is based on and shares the same design goals as the open source [http://processing.org Processing ] project. Sketches programmed using Mobile Processing run on Java Powered mobile devices. Mobile.Processing is extremely easy to get up and running with, but has some drawbacks which will prevent us from using it. &lt;br /&gt;
&lt;br /&gt;
Mobile.Processing is available for both Windows and Mac OS X. Download it [http://mobile.processing.org/download/index.php here].&lt;/div&gt;</summary>
		<author><name>72.244.211.50</name></author>
	</entry>
</feed>