Gravity sensor values increase after each call to the onSensorChanged(SensorEvent event) values. The values increase and after some time (about 1 min) reaches the value of NaN. Can anyone say why this is happening? Code:
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!"); } }
source share