重力センサーonSensorChanged(SensorEvent event)
の値は、イベントの値を呼び出すたびに増加します。値が増加し、少しの時間 (約 1 分) 後に NaN 値に達します。なぜこれが起こっているのか誰かが言うことができますか?コード:
private void recordData(SensorEvent e) {
String label;
int currentSensorId = -1;
switch (e.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
currentSensorId = 0;
label = LOG_LABEL_ACCELEROMETER;
break;
case Sensor.TYPE_GYROSCOPE:
label = LOG_LABEL_GYROSCOPER;
currentSensorId = 1;
break;
case Sensor.TYPE_GRAVITY:
label = LOG_LABEL_GRAVITY;
currentSensorId = 2;
break;
case Sensor.TYPE_ROTATION_VECTOR:
label = LOG_LABEL_ROTATION_VECTOR;
currentSensorId = 3;
break;
default:
label = "UNKNOWN SENSOR TYPE!";
break;
}
if (currentSensorId == -1)
return;
// Force set events frequency to value from config,
// cause sensor events minimal frequency = 0.2 sec.
timePassed[currentSensorId] = System.currentTimeMillis()
- lastSensorEventTime[currentSensorId];
if (timePassed[currentSensorId] < Config.SENSOR_DELAY_MILLISEC) {
return;
} else {
lastSensorEventTime[currentSensorId] = System.currentTimeMillis();
}
if (this.pauseRecordingData || checkSDCardMemory())
return;
fileWriter.writeEvent(label, System.currentTimeMillis(), e.values);
}
public void writeEvent(String eventSource, long timestamp, float[] values) {
Log.d(TAG, "writeEvent(); eventSource = " + eventSource);
if ( !this.fileExists ) createNewFile();
try {
String valuesString = eventSource + "\t" + String.format( "%d\t", timestamp);
for (int i = 0; i < values.length; i++) {
valuesString += String.format( "%f\t",values[i]);
Log.d(TAG, "writeEvent(); values[" + i + "] = " + values[i]);
}
buffWriter.append(valuesString + "\n");
} catch (IOException e1) {
e1.printStackTrace();
Log.d(TAG,"RECORDING EVENT TO FILE FAILED!");
}
}