Java ME Location API(中文)

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

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *