2016-02-14 100 views
2

我想用GPS信號跟蹤設備。同時顯示緯度,經度,高度和速度。Codename one GPS tracker

我用這個代碼並且在屏幕上沒有任何結果:

@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; 
    } 
}  

的想法是讓當設備被移動的位置,並顯示這導致一些標籤。任何幫助?

回答

3

您正在錯誤地實施一些事情。

  1. 添加@override到被覆蓋的方法,如locationUpdatedproviderStateChanged

  2. 不要重新申報Component c爲,並將其設置爲null

  3. 直接與find方法調用它們讓你的標籤,並通過c作爲參數

  4. revalidaterepaint表單後每次更新。

  5. 作爲一般的建議,讓您的變量聲明一致,聲明芒果數爲numOfMangoesnumberofmangoes也不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; 
        } 
    } 
    
+0

我能說什麼,你又做了一次。正確的答案和完美的解釋! –