Olá… Estou com uma pequena duvida, tenho que fazer um programa onde a partir de um Codigo GPS comum, onde eu altero valores pelo emulador (wireless Tolkit) possa fazer um ponto no display, e conforme a latitude e longetude for alterada o ponto se move.
Peço ajuda urgente!!!
Obrigado desde já!
Utilize translate(x, y);
.
.
.
g.translate(x, y);
.
.
.
Assim o ponto na tela mexe…
Talve isso ajuda.
O Código do GPS seria esse:
[code]import java.io.IOException;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.location.AddressInfo;
import javax.microedition.location.Coordinates;
import javax.microedition.location.Criteria;
import javax.microedition.location.Landmark;
import javax.microedition.location.LandmarkException;
import javax.microedition.location.LandmarkStore;
import javax.microedition.location.Location;
import javax.microedition.location.LocationException;
import javax.microedition.location.LocationListener;
import javax.microedition.location.LocationProvider;
import javax.microedition.location.ProximityListener;
import javax.microedition.location.QualifiedCoordinates;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Localiza extends MIDlet implements CommandListener, ProximityListener, LocationListener{
private Command c1;
private LocationProvider lp;
private Location l;
private Criteria cr;
private Coordinates coord;
private LandmarkStore store;
public Localiza() {
// TODO Auto-generated constructor stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
Display display = Display.getDisplay(this);
// Seta os critérios para o provedor de localizacao:
// precisao de 500 m horizontalmente, …
cr= new Criteria();
cr.setHorizontalAccuracy(500);
cr.setVerticalAccuracy(25); // 25m
/* cr.setPreferredResponseTime(Criteria.NO_REQUIREMENT);
cr.setPreferredPowerConsumption(Criteria.NO_REQUIREMENT);
cr.setCostAllowed(false);
cr.setSpeedAndCourseRequired(true);
cr.setAltitudeRequired(true);
cr.setAddressInfoRequired(true);
*/
// Requisita localizacao com 1 minuto de timeout
try {
lp = LocationProvider.getInstance(cr);
l = lp.getLocation(60);
Coordinates c = l.getQualifiedCoordinates();
System.out.println(l.getCourse());
System.out.println(l.getSpeed());
if(c != null ) {
// Use coordinate information
double lat = c.getLatitude();
double lon = c.getLongitude();
System.out.println("latitude: “+lat+” longitude: "+lon);
}
} catch (LocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
// cria informações de endereços para um marco
//
AddressInfo address = new AddressInfo();
address.setField(AddressInfo.CITY, “CIDADE”.trim());
address.setField(AddressInfo.COUNTRY, “PAÍS”.trim());
address.setField(AddressInfo.PHONE_NUMBER, “TELEFONE”.trim());
address.setField(AddressInfo.POSTAL_CODE, “CEP”.trim());
address.setField(AddressInfo.STATE, “ESTADO”.trim());
address.setField(AddressInfo.STREET, “RUA”.trim());
//
// Recupera armazem de marcos (landmark)
//
try {
store = LandmarkStore.getInstance(“armazem”);
}
catch (NullPointerException npe)
{}
//
// Cria armazem de marcos (landmark) se não houver algum
//
if (store == null)
{
try
{
LandmarkStore.createLandmarkStore(“armazem”);
store = LandmarkStore.getInstance(“armazem”);
}
catch (IllegalArgumentException iae)
{}
catch (IOException e)
{}
catch (LandmarkException e)
{}
}
// Define coordenadas do marco (corresponde às
// coordenadas atuais)
Coordinates c = l.getQualifiedCoordinates();
Landmark lmk = new Landmark("Minha casa".trim(),
"Endereco residencial", (QualifiedCoordinates) c, address);
try {
store.addLandmark(lmk, null);
System.out.println("Inseriu marco");
LocationProvider.addProximityListener(this, c,
(float) 0.01);
System.out.println("Ativou Proximity listener");
// a acada 10 seg, com time-out adicional de 5 seg, e com posição obtida a menos de 20 seg
lp = LocationProvider.getInstance(cr);
lp.setLocationListener(this, -1, 5, 1);
//lp.setLocationListener(this, -1, 0, 0);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setaComando(display);
}
void setaComando(Display d){
Form form = new Form("Posicionamento");
c1 = new Command("Le Coordenadas", Command.EXIT, 0);
form.addCommand(c1);
form.setCommandListener(this);
d.setCurrent(form);
}
public void commandAction(Command c, Displayable d){
if (c == c1){
String label = c.getLabel();
//System.out.println("Lendo coordenadas "+label);
try {
lp = LocationProvider.getInstance(cr);
l = lp.getLocation(60);
// curso (direção) do movimento em graus (0-360 em relação
// ao Norte geográfico ou verdadeiro)
System.out.println("Curso: "+l.getCourse());
System.out.println("Velocidade: "+l.getSpeed());
coord = l.getQualifiedCoordinates();
if(c != null ) {
// Use coordinate information
double lat = coord.getLatitude();
double lon = coord.getLongitude();
System.out.println("latitude: "+lat+" longitude: "+lon);
}
} catch (LocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void monitoringStateChanged(boolean arg0) {
// TODO Auto-generated method stub
}
public void proximityEvent(Coordinates coord, Location loc) {
//Landmark lm = findNearestLandMark(coord);
System.out.println("Aviso: Você está próximo de um landmark");
// " "+lm.getName()+
//". Descricao: "+lm.getDescription());
}
public void locationUpdated(LocationProvider lp, Location l) {
System.out.println("Aviso: posição mudou");
QualifiedCoordinates c = l.getQualifiedCoordinates();
System.out.println("Latitude: "+c.getLatitude());
System.out.println("Longitude: "+c.getLongitude());
}
public void providerStateChanged(LocationProvider arg0, int arg1) {
// TODO Auto-generated method stub
}
}
[/code]
Como poderia fazer um marco de um ponto…representando a movimentação?
To no trabalho agora.
vou testa seu codigo em casa !