2017-04-16 10 views
-4

のために一つにそれらを読むことはvalueAfterMovingAverageの値を読み取ることが可能であり、の値がするループ中に私のArrayListリストからをFrontalSpeed?技術的な問題は私のforループだと思います。 valueAfterMovingAverageのサイズだけを読み取りますが、リスト配列に格納されているFrontalSpeedの値は読み取っていません。1つのArrayListの中に2つの値を入れて、その後、ループ

したがって、forループは最初の配列の値だけを読み取ります。 の2つの値の大きさ(2つの可変配列)が同じではないことを強調表示する必要があります。私のforループの値をテキストファイルに書き込むにはどうすればいいですか?テキストファイルの現在の結果に2番目の値が繰り返し表示され、falseになります。それはセンサー加速度計からの読み取り値に基づいて変更する必要があります。

float valueAfterMovingAverage; 
double TotalAccelerate; 
ArrayList<Float> list = new ArrayList<Float>(); 
@Override 
public final void onSensorChanged(SensorEvent event) { 
// The light sensor returns a single value. 
// Many sensors return 3 values, one for each axis. 
if (isListening) { 
    double xx = event.values[0]; 
    double yy = event.values[1]; 
    double zz = event.values[2]; 
    TotalAccelerate = Math.round(Math.sqrt(Math.pow(xx, 2) 
      + Math.pow(yy, 2) 
      + Math.pow(zz, 2))); 
    Log.i(DEBUG, "Accelerometer = " + TotalAccelerate); 
    FrontalSpeed = Math.round(Math.sqrt(Math.pow(xx, 2) 
      + Math.pow(zz, 2))); 

    Log.i(DEBUG, "list values " + listPeaks); 
    MovingAverage ma = new MovingAverage(2); 
    ma.newNum(TotalAccelerate); 
    valueAfterMovingAverage = (float) ma.getAvg(); 
    sensorText.setText(String.valueOf(valueAfterMovingAverage)); 
    Log.i(DEBUG, "Moving avg: " + valueAfterMovingAverage); 
     list.add(valueAfterMovingAverage); 
     list.add(FrontalSpeed); 
     Log.i(DEBUG,"Size of List: "+ list.size()); 

    } 

} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ... 
    ... 


OnStore = (ToggleButton) findViewById(R.id.onStore); 
OnStore.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View view) { 
     if (OnStore.isChecked()) { 
      // 
      // set listening flag to true 
      // 
      isListening = true; 
      Toast.makeText(getApplicationContext(), "Start...", Toast.LENGTH_LONG).show(); 

     } else if (!OnStore.isChecked()) { // 
      // set listening flag to false 
      // 
      isListening = false; 

      try { 
       for (double valueFromList : list) { 
        String space = "\n"; 
        byte[] convert = space.getBytes(); 
        fileOutputStream.write(convert); 
        String finalData; 

        finalData = String.valueOf(valueFromList); 

        String line = finalData + " " + FrontalSpeed + "\n"; 
        Log.i(DEBUG, "speed: " + FrontalSpeed); 
        fileOutputStream.write(line.getBytes()); 

        Log.i(DEBUG, "ans: " + finalData); 

       } 
       fileOutputStream.flush(); 
       fileOutputStream.close(); 
       Toast.makeText(getApplicationContext(), "Message saving", Toast.LENGTH_LONG).show(); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      Toast.makeText(getApplicationContext(), "Message Stopped.", Toast.LENGTH_LONG).show(); 
     } 


    } 
}); 

答えて

0

私は2つの独立したArrayslistに行きます。 valueAfterMovingAverageの量を保持するためのものとFrontalSpeedのためのもの。ちょうど提案。

+0

これはできません。これは目的ではありません。 –

関連する問題