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!");
}
}