J2ME (JSR 179) is a set of generic APIs that can be used for developing location-based services.J2ME location APIs provide mobile applications with information about the device's present physical location and orientation in lattitude-longitude-altitude, and support the creation and use of databases of known landmarks, stored in the device.

Illustration display physical location of mobile device.

 import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.location.*;

public class locationMidlet extends Midlet implements CommandListener {
    
    Command Exit = new Command("Exit",Command.EXIT,0);
    public locationMidlet() {}
    
    public void startApp() {
        Form f=new Form("Waiting...");
        f.append("Finding for location...");
        f.addCommand(Exit);
        f.setCommandListener(this);
        Display.getDisplay(this).setCurrent(f);
        try {
            Criteria c=new Criteria();
            c.setHorizontalAccuracy(1000);
            c.setVerticalAccuracy(1000);
            c.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
            LocationProvider lp=LocationProvider.getInstance(c);
            Location loc=lp.getLocation(60);
            QualifiedCoordinates qc=loc.getQualifiedCoordinates();
            f.append("Alt: "+qc.getAltitude());
            f.append("Lat: "+qc.getLatitude());
            f.append("Long: "+qc.getLongitude());
            
        } catch(Exception e) {
            f.append("Exception: "+e);
        }
    }
    
    public void pauseApp() {}
    
    public void destroyApp(boolean destroy) {}
    
    public void commandAction(Command c, Displayable s) {
        if (c == Exit) {
            destroyApp(true);
            notifyDestroyed();
        }
    }
}