本j2me程序负责获取gps定位信息,来自国外论坛,还未经过验证,仅供参考。 import java.io.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.Enumeration; //import java.util.Hashtable; import javax.microedition.location.*; public class Location extends MIDlet implements CommandListener { String error = ""; private static Display display = null; private Command exitCmd=new Command("Exit",Command.EXIT, 1); protected void startApp() throws MIDletStateChangeException { display = Display.getDisplay(this); System.out.println("loading"); LocationProvider lp=null; javax.microedition.location.Location location=null; try { lp= LocationProvider.getInstance(null); } catch(LocationException e) { addError(e); } try { //timeout location = lp.getLocation(20); } catch(LocationException e) { addError(e); } catch(InterruptedException e) { addError(e); } String res="[RESULTS]/n"; try{ Coordinates coordinates = location.getQualifiedCoordinates(); res+="Altitude:"+coordinates.getAltitude()+"/n"; res+="Latitude:"+coordinates.getLatitude()+"/n"; res+="Longitude:"+coordinates.getLongitude()+"/n"; }catch(Exception e){ addError(e); } Form f = new Form("Results"); f.append(res); f.append(error); f.addCommand(exitCmd); f.setCommandListener(this); display.setCurrent(f); } void addError(Exception e){ e.printStackTrace(); error+=e.getMessage()+"/n"; } public void commandAction(Command c,Displayable d) { if(c==exitCmd) { notifyDestroyed(); } } protected void pauseApp() { } protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } } 下面这段程序来自一个国外j2me的博客。 JAVA: import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.location.*; public class loctest extends MIDlet implements CommandListener { private Display display; private Form form; private Command cmdExit,cmdOK; private StringItem si; public loctest() { display =Display.getDisplay(this); form = new Form("Location Api test"); cmdExit = new Command("Exit",Command.EXIT,5); cmdOK = new Command("OK",Command.OK,1); si = new StringItem("Geo Location", "Click OK"); form.append(si); form.addCommand(cmdOK); form.addCommand(cmdExit); form.setCommandListener(this); } public void startApp() { display.setCurrent(form); } public void pauseApp() { } public void destroyApp(boolean flag) { notifyDestroyed(); } public void commandAction(Command c, Displayable d) { if (c == cmdOK){ Retriever ret = new Retriever(this); ret.start(); } else if (c == cmdExit) { destroyApp(false); } } public void displayString(String string) { si.setText(string); } } class Retriever extends Thread { private loctest midlet; public Retriever(loctest midlet) { /** * Constructor * * EFFECTS: Initialise the server and store midlet information * * @param midlet The main application midlet * @param server Forecast Server URL * */ this.midlet = midlet; } public void run() { /** * Entry point of the thread * * EFFECTS: call to connect() method */ try { checkLocation(); } catch (Exception ex) { ex.printStackTrace(); midlet.displayString(ex.toString()); } } public void checkLocation() throws Exception { String string; Location l; LocationProvider lp; Coordinates c; // Set criteria for selecting a location provider: // accurate to 500 meters horizontally Criteria cr= new Criteria(); cr.setHorizontalAccuracy(500); // Get an instance of the provider lp= LocationProvider.getInstance(cr); // Request the location, setting a one-minute timeout l = lp.getLocation(60); c = l.getQualifiedCoordinates(); if(c != null ) { // Use coordinate information double lat = c.getLatitude(); double lon = c.getLongitude(); string = "/nLatitude : " + lat + "/nLongitude : " + lon; } else { string ="Location API failed"; } midlet.displayString(string); } }