Heres my code, which works:
public void onSensorChanged(SensorEvent event) {
Sensor sensor = event.sensor;
int type = sensor.getType();
switch (type) {
case Sensor.TYPE_MAGNETIC_FIELD:
mags = event.values.clone();
isReady = true;
break;
case Sensor.TYPE_ACCELEROMETER:
accels = event.values.clone();
break;
case Sensor.TYPE_ORIENTATION:
orients = event.values.clone();
break;
}
if (mags != null && accels != null && isReady) {
isReady = false;
SensorManager.getRotationMatrix(R, I, accels, mags);
SensorManager.remapCoordinateSystem(R,
SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, outR);
SensorManager.getOrientation(outR, values);
azimuth =
getAzimuth(-convert.radToDeg(values[0]));
pitch= convert.radToDeg(values[1]);
roll = -convert.radToDeg(values[2]);
}
}
On Aug 21, 2:39 am, Mike Collins <[email protected]> wrote:
> I have a sensor event handler that gets fired and I have no problem
> getting and processing acceleration readings. However this code
> always fails.
>
> if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
> {
> float[] geomagnetic = new float[3];
> geomagnetic[0] = geomagnetic[1] = geomagnetic[2] = 0;
>
> float[] r = new float[9];
> float[] I = new float[9];
> boolean b = SensorManager.getRotationMatrix(r, I,
> event.values.clone
> (), event.values.clone());
> if ( ! b)
> {
> Log.e(LOG_TAG, "getRotationMatrix failed");
> return;
> }
> ...
>
> tia,
> mike
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---