Gravity sensor value increases

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!"); } } 
+4
source share
1 answer

There are two possibilities:

For more information, please post your code as you access and control the values ​​read from the gravity sensor.

EDIT:

As I mentioned, there is an error in your code. The sensor read delay must be set to one of the following options:

 int SENSOR_DELAY_FASTEST get sensor data as fast as possible int SENSOR_DELAY_GAME rate suitable for games int SENSOR_DELAY_NORMAL rate (default) suitable for screen orientation changes int SENSOR_DELAY_UI rate suitable for the user interface 

And not a custom value !!!

Thanks for finding a solution.

0
source

Source: https://habr.com/ru/post/1438639/


All Articles