I'm trying to learn gyroscopes, so I have this code (partly from a book
Meier, Reto (2012-04-05). Professional Android 4 Application Development
(Wrox Professional Guides) (Kindle Locations 13327-13331). John Wiley and
Sons. Kindle Edition.
, partly from my head)
package com.gyro_test;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
public class Gyro_Listener implements SensorEventListener {
final float nanosecondsPerSecond = 1.0f / 100000000.0f;
private long lastTime = 0;
final float[] angle = new float[3];
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (lastTime != 0) {
final float dT = (sensorEvent.timestamp - lastTime)
* nanosecondsPerSecond;
angle[0] += sensorEvent.values[0] * dT;
angle[1] += sensorEvent.values[1] * dT;
angle[2] += sensorEvent.values[2] * dT;
}
lastTime = sensorEvent.timestamp;
System.out.println("angle0 = " + angle[0] + ", angle1 = " + angle[1] + ",
angle2 = " + angle[2]);
}
}
Anyhow, the issue is that when I rotate the tablet by 90 degrees on the
table, angle2 increases by about 15.4. I would expect it to increase by
pi/2.
Anyone know why this is?
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en