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
_
_Nand0_PJ
achei o erro, 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…
E
edpradoPJ
na pratica… o celular teria que ter essa API Location disponivel ??? ou qualquer celular utiliza-la se adicionado na lá IDE ? ou isso é só para celulares sofisticados?
e no caso do GPS… nem sei se se chama assim, mas, tem algum servidor de GPS grátis ??
_
_Nand0_PJ
“edprado”:
na pratica… o celular teria que ter essa API Location disponivel ??? ou qualquer celular utiliza-la se adicionado na lá IDE ? ou isso é só para celulares sofisticados?
e no caso do GPS… nem sei se se chama assim, mas, tem algum servidor de GPS grátis ??
Sim, o celular precisa da API Location pra funcionar.
Servidor de GPS?? Como assim?
E
edpradoPJ
eu penso assim…
onde tenho que conectar pra pegar as informações de um determinado mapa de uma determinada região???
eu pensava que teria que conectar em um servidor de GPS(local onde pego as informações de mapa, etc)
eh assim q funciona ???
L
liclopesPJ
a prórpia api location não tem suporte a mapas, deve usar um servlet ou atualmente pode usar os mapas do Google Maps, Yahoo! Maps, Windows Live Local
Não é bem um servidor GPS e sim um provedor de localização (ex aparelho GPS). que apenas disponibiliza as coordenadas geográficas.
abraço
J
juanfePJ
o edprado –
O API de localização de J2ME têm um problema – ele diz que tem toda essa funcionalidade de “PointsOfInterest” é o demais, mais os poucos operadores que tem habilitado o API não têm habilitado essa parte do API. Então, eu somente me confiaria na informação de coordenadas.
Dois termos te vão servir:
GPS é “Geographic Positioning System”, a constelação de satélites que permitem que saiba onde é o seu aparelho – com o GPS, pode receber a latitude e a longitude do aparelho.
O que você precisa além do GPS é um sistema de GIS (Geographic Information System) que possa traduzir essas coordenadas em informação (mapas, pontos de interesse, etc.).
Têm vários fornecedores que tem bons dados:
google maps: é gratis e os dados são de um bom fornecedor, mais não os usaria mais que para um teste, porque não têm garantia que vão estar disponíveis se esta tentando desenvolver algo mais que um exemplo