Oh and you'll need these:

final int matrix_size = 16;
float[] R = new float[matrix_size];
float[] outR = new float[matrix_size];
float[] I = new float[matrix_size];
float[] values = new float[3];

On Aug 21, 3:06 am, mscwd01 <mscw...@gmail.com> wrote:
> 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 <mike.d.coll...@gmail.com> 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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to