Swirl Connect: location-based mobile social software

January 28, 2008

We have quietly released Swirl Connect, software for your mobile phone that helps you stay connected with your friends and their latest activity, as well find new people and places, whether you’re mobile or at home on your PC.

The current release is slightly hobbled, as $$$$ is tight, and we had to turn off the messaging features, but there’s still plenty to do and see. Here are a few features:

  • Find your friends and get alerted to their latest activity
  • Explore nearby places of interest
  • View and share photos, notes, and places on your PC or mobile phone
  • Mobile instant message or group message with your friends
  • Meet new people while you’re on the move
  • Get location-based alerts
  • Interact with both PC and mobile users in real time

Try it out! It’s free, supports popular Nokia, Sony-Ericsson, and Motorola phones (with plenty more coming), and is a lot of fun.

swirl-shot-11.png swirl-shot-21.png

J2ME Polish 2.0 Beta 3: ScreenInfo Revisited

March 16, 2007

I thought I’d revisit Polish’s handy ScreenInfo class, as it is working as intended out-of-the-box in the beta 3 release (earlier post here).

In my current application, I’m using it a bit differently than I did before, combining it with a Timer to remove the ScreenInfo element after a specified amount of time.

As before, add the corresponding variable declaration to your build.xml file:

<variable name=”polish.ScreenInfo.enable” value=”true” />

You can also style this element in polish.css by using the “screeninfo” predefined style.

In the code sample below, I’m using images and determining margins at runtime, so I’m not utilizing this element, but it’s a quick way to add default styling and positioning.

screeninfo {
margin-top: 10
margin-left: 10;
}

A sample class file is below. In my implementation, I query for the canvas height and width during start-up (and I’d recommend you do something similar), but below is a quick and dirty way to accomplish roughly the same thing. This example could also be improved by accounting for multiple elements and related details.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Timer;
import java.util.TimerTask;
import de.enough.polish.ui.ScreenInfo;

public class MyMidlet extends MIDlet {
public Display display;
private List mainMenu;
private Timer timer;

public MyMidlet() {
//your constructor code here
}

public void startApp() { }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
public static void quitApp() { }

public void showScreenInfo(int icon, long timeout) {
String imagePath = null;
switch(icon) {
case 1:
imagePath = “/si_mail.png”;
break;
case 2:
imagePath = “/si_sync.png”;
break;
default:
//
}

ScreenInfo.setImage(loadImage(imagePath));

//#ifdef polish.FullCanvasSize:defined
//#= int width = ${polish.FullCanvasWidth};
//#else
int width = 176;
//#endif

ScreenInfo.setPosition(width-32, 1);
ScreenInfo.setVisible(true);

timer = new Timer();
timer.schedule(new InfoTimer(), timeout);
}

public void removeScreenInfo() {
ScreenInfo.setVisible(false);
}

class InfoTimer extends TimerTask {
public void run(){
removeScreenInfo();
}
}
}

For more information, you can check out the Polish documentation related to ScreenInfo: Overview | JavaDoc

Tips for Getting Your MIDP Application JavaVerified

August 28, 2006

Passing JavaVerified testing is not difficult, but the testing process is thorough. This article lists some tips I picked up while sending several builds through the JavaVerified process.

JavaVerified is not for everyone. It will not make your mobile application run on every handset out there, and it can be tedious and very expensive if you have many builds to certify, or if your builds are updated frequently. See my earlier post on JavaVerified to determine if testing is right for your application, and to see the steps in the testing process.

Test Categories

  • Application Stability
  • Application Launch
  • User Interface
  • Localization
  • Functionality
  • Connectivity
  • Personal Information Management
  • Security

[Read more]

Tips for Writing MIDP Applications, Part 2

July 26, 2006

Part 1 of this article discussed several higher-level tips for writing MIDP applications. In this part, I thought I’d delve a little more deeply into the weeds for some specific tips on using various controls in the MIDP toolkit.


Sign Your Application

See my earlier post about application signing. If at all possible, sign your application with a Verisign code-signing certificate. JavaVerified is even better,
but is not realistically achievable for many applications.

[Read more]

J2ME Polish 1.3: FramedForm

June 5, 2006

What could be an incredibly useful feature is marred by bugs in the beta release of Polish 1.3. The concept behind the FramedForm class is similar to the Border Layout in Java Swing. You can append items to the FramedForm body, and designate other items to be anchored at the frame top, bottom, left, or right.

For example, you can display an anchored query as search results are scrolled. Or you can display an anchored search box while the rest of the screen content is scrolled. Maybe even use a ChoiceGroup to dynamically filter or change the content on the screen.

Using the FramedForm is as easy as building any MIDP form.

FramedForm myForm = new FramedForm(”Search Results”);
StringItem item = new StringItem(”You’d Prefer an Astronaut”, null);
/* more items */
TextField search = new TextField(”", “”, 25, TextField.ANY);
myForm.append(item);
/* repeat */
myForm.append(Graphics.TOP, search);

But the results are less than spectacular on the beta release. Anchoring anything on the bottom frame doesn’t work. Anchoring on the top frame suffers from frame boundaries not being respected, and styles not being properly applied.

Even with these current bugs, I imagine there’s still some utility to be had by using this class, if for nothing else than layout help. For example, you could add an image or icon to the left or right frame of a screen, and use Polish styles to sufficiently pad that edge of the screen, perhaps to be used in an image viewing application or to create a graphical navigation menu of some sort.

I love the concept behind the framed form, so I’m hopeful that future releases of J2ME Polish will address some of these issues. In the meantime, I’ll continue looking for workarounds and ways to use the current functionality.

My overall experience using Polish in this test project has been similar to using this framed form. On paper, it sounds like a major boon to productivity and compatibility, and on the whole, I can’t imagine starting a product without Polish as the build tool, because it largely comes through on its promises. But I have been mildly disappointed with execution. I find myself wishing for fewer features, but features that work smoothly; versus a wealth of features, and finding annoyances in some of them.