## 20 July 2009

### Sensor - Accelerometer & Magnetics II

A quick update on the code I presented in the previous post.

I'm not greatly experienced in Java having mainly worked with C++ for the last 15 plus years. I did have a company provided seminar on Java and have a half-dozen Java books on the shelf. But I'm still on the learning curve.

In the code I obtained the magnetice, acclerometer, and orientation sensor arrays by simply assigning their values to another array. I then used that array in subsequent calls to onSensorChanged. Not the proper way of doing this. I should have cloned the arrays which makes a copy. For example:

                case Sensor.TYPE_MAGNETIC_FIELD:                    mags = s_ev.values;                    isReady = true;                    break;

should be:
                case Sensor.TYPE_MAGNETIC_FIELD:                    mags = s_ev.values.clone();                    isReady = true;                    break;

I found this when I output all the values for the sensors to LogCat each time any one of them was updated. I noticed that the values for the accelerometer changed from its previous value when the orientation sensor was changed.