這一篇是我在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的好友看看!