这一篇是我在Java ME Location API的中文翻译,网址在Java ME Location API(中文)!
为了备份,并转贴在此:
Location API是JSR 179用来寻找像经纬度的位置资讯。
这里有一个程式码范例:
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) { this.midlet = midlet; } public void run() { try { checkLocation(); } catch (Exception ex) { ex.printStackTrace(); midlet.displayString(ex.toString()); } } public void checkLocation() throws Exception { String string; Location l; LocationProvider lp; Coordinates c; Criteria cr= new Criteria(); cr.setHorizontalAccuracy(500); lp= LocationProvider.getInstance(cr); 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); } }
值得一提的是,这个程式可以执行,但是因为我的Nokia 5800的卫星状态常常说没有讯号,所以我执行这只程式时总是time out,太诡异了,要去问一下nokia 5800的好友看看!