Добавление датчика в класс поиска местоположения в j2me

Я работаю над приложением 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;

    } 




}

}


person zzzz    schedule 15.05.2014    source источник


Ответы (2)


Вы не можете связать Gauge с какой-либо задачей.

Вы должны установить значения для Gauge вручную. Таким образом, вы должны создать Gauge и добавить его в свой Form. Затем запустите свой код, чтобы выполнить поиск.

Между строками кода вы должны добавить myGauge.setValue(some_value);, чтобы увеличить показатель.

Конечно, это становится трудным, когда большая часть задачи содержится в одной строке кода, например, например. lp.getLocation(60);. Я думаю, что в этом случае я бы создал Thread, который автоматически увеличивает значение Gauge в течение 60 секунд, но может быть остановлен/переопределен вручную.

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);
person mr_lou    schedule 15.05.2014

LWUIT 1.5 может помочь вам в этом. Я не уверен в API местоположения, который вы используете. Но вы получите Gauge, используя LWUIT 1.5. Используйте Lwuit вместо LCDUI.

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

person Vishal    schedule 15.05.2014