代号为GPS跟踪器

时间:2016-02-14 01:24:11

标签: java gps codenameone locationlistener

我想用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;
    }
}     

想法是在设备移动时获取位置,并在某些标签上显示此结果。有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

你正在错误地实施一些事情。

  1. 添加@override以覆盖locationUpdatedproviderStateChanged等方法。

  2. 请勿重新声明Component c并将其设为null

  3. 使用find方法直接调用标记来获取标记,并将c作为参数传递

  4. 每次更新后
  5. revalidaterepaint您的表单。

  6. 作为一般建议,请保持变量声明的一致性,将芒果数量声明为numOfMangoes numberofmangoes或{ {1}}也不numofmangoes

    Numberofmangoes