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.
importjavax.microedition.midlet.*;importjavax.microedition.lcdui.*;importjavax.microedition.location.*;publicclassLocationTesteextendsMIDletimplementsCommandListener{// criação do comando sairprivateDisplaydisplay;privateCommandcmExit;privateFormf;privateCriteriac;publicLocationTeste(){display=Display.getDisplay(this);CommandcmExit=newCommand("Sair",Command.EXIT,0);// criação do formulário com tituloFormf=newForm("Esperando...");// subtitulof.append("Procurando por localização...");// adiciona comando ao formuláriof.addCommand(cmExit);// gerenciador de comandosf.setCommandListener(this);localizaLatLong();}publicvoidstartApp(){display.setCurrent(f);}publicvoidlocalizaLatLong(){try{// obtêm uma instancia um criteriaCriteriac=newCriteria();// Precisão de 1000m horizontalmente e verticalmentec.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 LocationLocationProviderlp=LocationProvider.getInstance(c);// pega a localização com tempo limite de 60sLocationloc=lp.getLocation(60);// obtêm uma instancia um Qualified Coordinates que representa as coordenadasQualifiedCoordinatesqc=loc.getQualifiedCoordinates();// uso das informações de coordenadas, vincula (exibição) ao formulario (display)// Caso haja coordenadas de localizaçãoif(qc!=null){// obtêm a altura f.append("Altura: "+qc.getAltitude());// desta linha o código não passaSystem.out.println("Altura: "+qc.getAltitude());// obtêm a latitude f.append("Latitude: "+qc.getLatitude());System.out.println("Latitude: "+qc.getLatitude());// obtêm a longitudef.append("Longitude: "+qc.getLongitude());System.out.println("Longitude: "+qc.getLongitude());}// tratamento de erro,}catch(Exceptione){f.append("Exception: "+e);}}// função orbigatoria do midlet (pausa)publicvoidpauseApp(){}// função orbigatoria do midlet (saida)publicvoiddestroyApp(booleandestroy){}// gerenciador de ação (comando)publicvoidcommandAction(Commandc,Displayables){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
Stryder
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
_Nand0_
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…
Stryder
Conseguiu testr em algum lugar ?
Abraco.
viniciuspadua
rpz vc falou falou em “janelinha MIDlet -> External events” como sera isso ? como colocar e quais parâmetros colocar!!!
_Nand0_
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!
liclopes
Eu tava fazendo um projeto parecido do uso da API location c/ GPS e servlets -> 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
A
adricris
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)