在j2me中的位置查找器类中添加仪表

时间:2014-05-15 10:08:04

标签: java-me geolocation midp lcdui gauge

我正在开发一个j2me应用程序,其中包含一个类,用于通过GPS查找移动设备的位置。我需要在调用位置提供程序API时包含规范并找到位置。我是j2me的新手所以仍然不清楚所有的概念。我在下面粘贴我的代码。请帮助我完成这件事。谢谢你提前..

package org.ets.utils;
import javax.microedition.lcdui.*;
import javax.microedition.location.*;
import javax.microedition.io.*;
import java.io.*;
import org.ets.midlet.ETS_infozech;
import javax.microedition.midlet.*;


public class Locfinder  {






public Locfinder(ETS_infozech midlet)
{
    this.midlet = midlet;


}

public static String ex()
    {

        try {


                     checkLocation();
                    } catch (Exception ex)
                    {
                        ex.printStackTrace();

        }
        //System.out.println(string);
        return string;

    }

public static void  checkLocation() throws Exception
{

    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 = " LAT-" + lat + " LONG-" + lon;

    } 




}

}

2 个答案:

答案 0 :(得分:0)

LWUIT 1.5可以为您提供帮助。我不确定您使用的Location API。 但是你将使用LWUIT 1.5获得Gauge。使用Lwuit而不是LCDUI。

http://www.oracle.com/technetwork/java/javame/javamobile/download/lwuit/index.html

答案 1 :(得分:0)

您无法将Gauge链接到某项任务。

您必须手动将值设置为Gauge。因此,您需要创建Gauge并将其添加到Form。然后启动代码以执行查找。

在您的代码行之间,您需要添加myGauge.setValue(some_value);来增加指标。

当然,当大部分任务包含在一行代码中时,这变得很困难,例如, lp.getLocation(60);。 我想,在这种情况下,我会创建一个Thread,在60秒内自动增加Gauge的值,但可以通过手动设置停止/覆盖。

class Autoincrementer implements Runnable {

private boolean running;
private Gauge gauge;
private int seconds;
private int secondsElapsed;

 public Autoincrementer(Gauge gauge) {
  this.gauge = gauge;
  this.seconds = gauge.getMaxValue();
  this.running = true;
  this.secondsElapsed = 0;
 }

 public void run() {

  if (running) {
   secondsElapsed++;
   gauge.setValue(secondsElapsed);
   if (secondsElapsed>=gauge.getMaxValue()) running = false; // Stop the auto incrementing
   try {
    Thread.sleep(1000); // Sleep for 1 second
   } catch (Exception e) {}
  }
 }

 public void stop() {
  running = false;
 }

}

然后,您可以创建Gauge并将其添加到Form

myGauge = new Gauge("Process", false, 60, 0);
myForm.append(myGauge);

然后开始自动增量。

myIncrementer = new Autoincrementer(myGauge);
new Thread(myIncrementer).start();

然后拨打您的查询代码。

checkLocation();

在查找代码中,添加代码以停止自动递增并将Gauge对象设置为100%,如果查找成功(意味着在超时之前)。

myIncrementer.stop();
myGauge.setValue(60);