代号一个GPS追踪器



我想用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. @override添加到覆盖的方法(如 locationUpdatedproviderStateChanged (。

  2. 不要将Component c重新声明为 并将其设置为 null

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

  4. 每次更新后revalidaterepaint表单。

  5. 作为一般建议,请保持变量声明的一致性,将芒果数量声明为numOfMangoes,而不是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;
        }
    }
    

最新更新