0

センサー入力に基づいてテキストビューを更新しようとしています-より正確なピッチ。センサーデータを取得して度に変換し、テキストビューに表示することに問題はありません。問題は、度単位のピッチに基づいて、異なる数値を表示したくないということです。if-else if ステートメントを作成して onsensorchanged に配置しましたが、最初の番号以外は更新されません。

     @Override


public void onSensorChanged(SensorEvent event) {

  switch(event.sensor.getType()){
  case Sensor.TYPE_ACCELEROMETER:
   for(int i =0; i < 3; i++){
    valuesAccelerometer[i] = event.values[i];
   }
   break;
  case Sensor.TYPE_MAGNETIC_FIELD:
   for(int i =0; i < 3; i++){
    valuesMagneticField[i] = event.values[i];
   }
   break;
  }

  boolean success = SensorManager.getRotationMatrix(
       matrixR, 
       matrixI, 
       valuesAccelerometer, 
       valuesMagneticField);

  if(success){
   SensorManager.getOrientation(matrixR, matrixValues);

// Float to double
   double pitch = Math.toDegrees(matrixValues[1]);
// 1 decimal
    pitch = Math.abs(round(pitch, 0));

//set textview vinkel to degrees
  vinkel.setText(String.valueOf(pitch));

// find tubesize from edittext
  String tubesizestring = tubesize.getText().toString();



  if(tubesizestring=="1000"){

      if(pitch>=0.6){
          kwh.setText("2,69");
      }else if(pitch>=1.0){
          kwh.setText("3,47");
      }else if(pitch>=2.0){
          kwh.setText("4,90");
      }else if(pitch>=5.0){
          kwh.setText("7,75");
      }else if(pitch>=10.0){
          kwh.setText("10,96");
      }else if(pitch>=20.0){
          kwh.setText("15,50");
      }else if(pitch>=30.0){
          kwh.setText("18,99");
      }else{
          kwh.setText("more than 30 degrees");

      }
  }
  }

私がやろうとしていることは明らかだと思います。その他ご相談ください

誰かが私を正しい方向に向けてくれることを願っています

4

1 に答える 1

0

ロジックに根本的な欠陥があるため、機能しません。ピッチが約 であると仮定しましょう25。より大きい0.6など1.0です。したがってif、他のステートメントはステートメントであるため、明らかに最初のステートメントのみが表示されますelse if。機能させるには、ステートメントの順序を変更します。

    if(pitch>=30.0){
      kwh.setText("18,99");
  }else if(pitch>=20.0){
      kwh.setText("15,50");
  }else if(pitch>=10.0){
      kwh.setText("10,96");
  }else if(pitch>=5.0){
      kwh.setText("7,75");
  }else if(pitch>=2.0){
      kwh.setText("4,90");
  }
else if(pitch>=1.0){
      kwh.setText("3,47");
  }
  else if(pitch>=0.6){
      kwh.setText("2,69");
  }eelse{
      kwh.setText("more than 30 degrees");
于 2013-05-05T13:34:50.667 に答える