代号一 GPS 追踪器
Codename one GPS tracker
我想用 GPS 信号跟踪设备。同时显示纬度、经度、高度和速度。
我使用这段代码,但屏幕上没有结果:
@Override
protected void onGpsTracker_ButtonAction(Component c, ActionEvent event) {
try {
int i = 0;
Location loc = mylocLocationManager.getCurrentLocation();
if(loc.getStatus()==LocationManager.AVAILABLE) {
} else {
Dialog.show("Error!", "Falla de señal", "OK", null);
}
mylocLocationManager.setLocationListener(new LocationListener() {
public void locationUpdated(Location location) {
gpsLocation= location;
Component c = null;
Label labelalt = (Label)findByName("altitudT", c);
Label labellat = (Label)findByName("latitudT", c);
Label labellng = (Label)findByName("longitudT", c);
Label labeldist = (Label)findByName("distanciaT", c);
Label labelspeed = (Label)findByName("speedT", c);
altmax= location.getAltitude();
double lat = location.getLatitude();
double lng = location.getLongitude();
float speed = location.getVelocity();
double alt = location.getAltitude();
velprompos = velprompos + 1;
totspeed = (int) (totspeed + speed);
velopro = totspeed / velprompos;
totalt = altmax - alt;
velmax=speed;
Coord lastLocation = new Coord(lat, lng);
mapComponent.zoomTo(lastLocation, 15);
prevdistance = totdistance;
prevLon = currentLon;
prevLat = currentLat;
String Salt = String.valueOf(alt);
labelalt.setText(Salt);
String Slat = String.valueOf(lat);
labellat.setText(Slat);
String Slng = String.valueOf(lng);
labellng.setText(Slng);
String Sspeed = String.valueOf(speed);
labelspeed.setText(Sspeed);
//aca hay q pner dibujo lineas
}
public void providerStateChanged(int newState) {
//positionMethod();
}
});
} catch (Exception ex) {
ex.printStackTrace();
gpsLocation = null;
}
}
想法是在设备移动时获取位置,并将此结果显示在一些标签上。有帮助吗?
您错误地实施了几件事。
将 @override
添加到重写方法,例如 locationUpdated
和 providerStateChanged
.
不要重新声明 Component c
并将其设置为 null
通过使用 find
方法直接调用它们并传递 c
作为参数来获取标签
revalidate
或 repaint
每次更新后的表单。
作为一般建议,保持变量声明的一致性,将 Number of Mangoes 声明为 numOfMangoes
并且 not numberofmangoes
也不 numofmangoes
也不 Numberofmangoes
.
@Override
protected void onGpsTracker_ButtonAction(Component c, ActionEvent event) {
try {
int i = 0;
Location loc = mylocLocationManager.getCurrentLocation();
if (loc.getStatus() == LocationManager.AVAILABLE) {
System.out.println("Location available");
} else {
Dialog.show("Error!", "Falla de señal", "OK", null);
}
final LocationManager mylocLocationManager = LocationManager.getLocationManager();
mylocLocationManager.setLocationListener(new LocationListener() {
@Override
public void locationUpdated(Location location) {
gpsLocation = location;
Label labelspeed = ;
altmax = location.getAltitude();
double lat = location.getLatitude();
double lng = location.getLongitude();
float speed = location.getVelocity();
double alt = location.getAltitude();
velprompos = velprompos + 1;
totspeed = (int) (totspeed + speed);
velopro = totspeed / velprompos;
totalt = altmax - alt;
velmax = speed;
Coord lastLocation = new Coord(lat, lng);
mapComponent.zoomTo(lastLocation, 15);
prevdistance = totdistance;
prevLon = currentLon;
prevLat = currentLat;
String Salt = String.valueOf(alt);
findAltitudT(c).setText(Salt);
String Slat = String.valueOf(lat);
findLatitudT(c).setText(Slat);
String Slng = String.valueOf(lng);
findLongitudT(c).setText(Slng);
String Sspeed = String.valueOf(speed);
findSpeedT(c).setText(Sspeed);
c.getComponentForm().revalidate();
//aca hay q pner dibujo lineas
}
@Override
public void providerStateChanged(int newState) {
//positionMethod();
}
});
} catch (Exception ex) {
ex.printStackTrace();
gpsLocation = null;
}
}
我想用 GPS 信号跟踪设备。同时显示纬度、经度、高度和速度。
我使用这段代码,但屏幕上没有结果:
@Override
protected void onGpsTracker_ButtonAction(Component c, ActionEvent event) {
try {
int i = 0;
Location loc = mylocLocationManager.getCurrentLocation();
if(loc.getStatus()==LocationManager.AVAILABLE) {
} else {
Dialog.show("Error!", "Falla de señal", "OK", null);
}
mylocLocationManager.setLocationListener(new LocationListener() {
public void locationUpdated(Location location) {
gpsLocation= location;
Component c = null;
Label labelalt = (Label)findByName("altitudT", c);
Label labellat = (Label)findByName("latitudT", c);
Label labellng = (Label)findByName("longitudT", c);
Label labeldist = (Label)findByName("distanciaT", c);
Label labelspeed = (Label)findByName("speedT", c);
altmax= location.getAltitude();
double lat = location.getLatitude();
double lng = location.getLongitude();
float speed = location.getVelocity();
double alt = location.getAltitude();
velprompos = velprompos + 1;
totspeed = (int) (totspeed + speed);
velopro = totspeed / velprompos;
totalt = altmax - alt;
velmax=speed;
Coord lastLocation = new Coord(lat, lng);
mapComponent.zoomTo(lastLocation, 15);
prevdistance = totdistance;
prevLon = currentLon;
prevLat = currentLat;
String Salt = String.valueOf(alt);
labelalt.setText(Salt);
String Slat = String.valueOf(lat);
labellat.setText(Slat);
String Slng = String.valueOf(lng);
labellng.setText(Slng);
String Sspeed = String.valueOf(speed);
labelspeed.setText(Sspeed);
//aca hay q pner dibujo lineas
}
public void providerStateChanged(int newState) {
//positionMethod();
}
});
} catch (Exception ex) {
ex.printStackTrace();
gpsLocation = null;
}
}
想法是在设备移动时获取位置,并将此结果显示在一些标签上。有帮助吗?
您错误地实施了几件事。
将
@override
添加到重写方法,例如locationUpdated
和providerStateChanged
.不要重新声明
Component c
并将其设置为 null通过使用
find
方法直接调用它们并传递c
作为参数来获取标签revalidate
或repaint
每次更新后的表单。作为一般建议,保持变量声明的一致性,将 Number of Mangoes 声明为
numOfMangoes
并且 notnumberofmangoes
也不numofmangoes
也不Numberofmangoes
.@Override protected void onGpsTracker_ButtonAction(Component c, ActionEvent event) { try { int i = 0; Location loc = mylocLocationManager.getCurrentLocation(); if (loc.getStatus() == LocationManager.AVAILABLE) { System.out.println("Location available"); } else { Dialog.show("Error!", "Falla de señal", "OK", null); } final LocationManager mylocLocationManager = LocationManager.getLocationManager(); mylocLocationManager.setLocationListener(new LocationListener() { @Override public void locationUpdated(Location location) { gpsLocation = location; Label labelspeed = ; altmax = location.getAltitude(); double lat = location.getLatitude(); double lng = location.getLongitude(); float speed = location.getVelocity(); double alt = location.getAltitude(); velprompos = velprompos + 1; totspeed = (int) (totspeed + speed); velopro = totspeed / velprompos; totalt = altmax - alt; velmax = speed; Coord lastLocation = new Coord(lat, lng); mapComponent.zoomTo(lastLocation, 15); prevdistance = totdistance; prevLon = currentLon; prevLat = currentLat; String Salt = String.valueOf(alt); findAltitudT(c).setText(Salt); String Slat = String.valueOf(lat); findLatitudT(c).setText(Slat); String Slng = String.valueOf(lng); findLongitudT(c).setText(Slng); String Sspeed = String.valueOf(speed); findSpeedT(c).setText(Sspeed); c.getComponentForm().revalidate(); //aca hay q pner dibujo lineas } @Override public void providerStateChanged(int newState) { //positionMethod(); } }); } catch (Exception ex) { ex.printStackTrace(); gpsLocation = null; } }