Dúvida urgente sobre a API Location, LBS, GPS

Pessoal, estou com dúvidas sobre como rodar uma aplicação usando a API Location, como que faço pro emulador WTK pegar os dados das coordenadas? Basta apenas eu ir na janelinha MIDlet -> External events qdo executa o emulador, e passar os dados lá?

Eu fiz isto e na hora de imprimir na tela a variável que supostamente tem os dados ele da erro e não executa nada.

Ou eu preciso de um GPS para capturar os dados e passar pro emulador? Como é feita exatamente esta interação?

Lembrando que eu coloquei no meu projeto as configurações pra rodar a API Location.

Se alguem tiver ae um código funcional e puder me passar eu agradeço.

Preciso fazer isto funcionar meio logo, fim do mês tenho que entregar este projeto, e eu ainda nem comecei… to parado por causa dessa dúvida.

Obrigado.

Código:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.location.*;

public class LocationTeste extends MIDlet implements CommandListener {
	// criação do comando sair
	private Display 		       display;
	private Command			   cmExit;
	private Form				f;
	private Criteria                        c;
	
	public LocationTeste()
	{
		display = Display.getDisplay(this);
		Command cmExit = new Command("Sair",Command.EXIT,0);
		// criação do formulário com titulo
		Form f=new Form("Esperando...");
		// subtitulo
		f.append("Procurando por localização...");
		// adiciona comando ao formulário
		f.addCommand(cmExit);				
		// gerenciador de comandos
		f.setCommandListener(this);
		
		localizaLatLong();
	}
	
	public void startApp()
	{
		display.setCurrent(f);
	}

	public void localizaLatLong() {
	try {
		// obtêm uma instancia um criteria
		Criteria c=new Criteria();		
		// Precisão de 1000m horizontalmente e verticalmente
		c.setHorizontalAccuracy(1000);
		c.setVerticalAccuracy(1000);
		// ajusta o nível máximo preferido do consumo de potência (pouco uso)
		c.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
		// obtêm uma instância da classe Location
		LocationProvider lp=LocationProvider.getInstance(c);
		// pega a localização com tempo limite de 60s
		Location loc=lp.getLocation(60);
		// obtêm uma instancia um Qualified Coordinates que representa as coordenadas
		QualifiedCoordinates qc=loc.getQualifiedCoordinates();
		// uso das informações de coordenadas, vincula (exibição) ao formulario (display)
		// Caso haja coordenadas de localização
		if(qc != null ) {
		// obtêm a altura				
		f.append("Altura: "+qc.getAltitude());
	        // desta linha o código não passa
		System.out.println("Altura: " + qc.getAltitude());
		// obtêm a latitude		
		f.append("Latitude: "+qc.getLatitude());
		System.out.println("Latitude: " + qc.getLatitude());
		// obtêm a longitude
		f.append("Longitude: "+qc.getLongitude());
		System.out.println("Longitude: " + qc.getLongitude());
		}
		// tratamento de erro,
	} catch(Exception e) {
		f.append("Exception: "+e);
		}
	}
	
// função orbigatoria do midlet (pausa)
public void pauseApp() {}
// função orbigatoria do midlet (saida)
public void destroyApp(boolean destroy) {}
// gerenciador de ação (comando)

	public void commandAction(Command c, Displayable s)
	{
		if (c == cmExit)
		{
			destroyApp(false);
			notifyDestroyed();
		}
	}
}

Erro:

java.lang.NullPointerException
	at LocationTeste.localizaLatLong(+257)
	at LocationTeste.<init>(+56)
	at java.lang.Class.runCustomCode(+0)
	at com.sun.midp.midlet.MIDletState.createMIDlet(+34)
	at com.sun.midp.midlet.Selector.run(+22)

Na hora de imprimir na tela as coordenadas da o erro

Cara o código que você fez, provavelmente está certo, porém ele roda apenas em um celular que tenha um GPS imbutido.
Se quiser fazer algo funcional, procure fazer o seu projeto acoplando um GPS em um celular, e pegar os dados pela porta serial, ou sei lá qual a conexão estiver usando entre os dois equipamentos.
Pra voce ver o seu código funcionando, baixe o emulador da nokia pra 3rd Edition do séries 60. Vai rodar sem esses erros.
Não vai te mostrar nada, mas pelo menos vc sabe que o seu código está certo. rs

Abraço

não não, descobri que meu código estava errado… veja só

troquei a linha

Form f=new Form(“Esperando…”);

por

f=new Form(“Esperando…”);

pq eu já tinha declarado ela nos atributos, e funcionou perfeitamente!

na hora que eu executo o MIDlet tem um menuzinho em cima do emulador, e lá vc coloca dos dados da latitude, longitude, altutide, etc…

Conseguiu testr em algum lugar ?

Abraco.

rpz vc falou falou em “janelinha MIDlet -> External events” como sera isso ? como colocar e quais parâmetros colocar!!!

Consegui testar! Apenas no emulador é claro…

Nesta janelinha que eu te falei vc coloca os dados das coordenadas pra MIDlet “simular” um GPS. É só vc preencher os campos Latitude, Longitude, Altitude… deve ter outros tbm… vc preenche só oq quer usar, dai a MIDlet vai ler estes dados e imprimir na tela, conforme o código que eu postei acima. Sacou?

Agora estou tentando fazer uma conexão com um Servlet, pra passar estes dados como parametro e me retornar um ponto previamente cadastrado num banco de dados mais proximo de onde estou!

Eu tava fazendo um projeto parecido do uso da API location c/ GPS e servlets -&gt GPS, LBS e J2ME (integração de tecnbologias)http://www.guj.com.br/posts/list/40865.java só que ainda ñ testei, to tentando fazer um projeto também utilizando algoritmos com logica fuzzy p/ melhorar a precisão dos dados do GPS e ainda tenho q por nesse código a parte do uso do landmark

Peguei o codigo do Nand0 fiz a correção que ele menciona e joguei no eclipse.

a Versão do Eclipse é Version: 3.3.0
e a versão Toolkit é 2.5.1

quando compilo o codigo da o seguinte mensagen.

Running with storage root MediaControlSkin
Running with locale: Portuguese_Brazil.1252
Running in the identified_third_party security domain
java.lang.ClassNotFoundException: LocationTeste
at com.sun.midp.midlet.MIDletState.createMIDlet(+29)
at com.sun.midp.midlet.Scheduler.schedule(+52)
at com.sun.midp.main.Main.runLocalClass(+28 )
at com.sun.midp.main.Main.main(+80)
Execution completed.
3386970 bytecodes executed
12 thread switches
1667 classes in the system (including system classes)
17566 dynamic objects allocated (521028 bytes)
1 garbage collections (0 bytes collected)

Alguem sabe o que ocorreu e como resolver ?