Problema de lanzamiento y lanzamiento de Android

Estoy trabajando en una aplicación de inclinación para Android. Tengo un problema con el modo vertical y horizontal. Cuando el tono = 90 grados (teléfono en el extremo) e incluso un poco antes de que el valor del rollo se vuelva loco cuando no ha habido un cambio físico en el rollo. No he podido encontrar una solución a este problema. Si alguien puede señalarme en la dirección correcta, sería apreciado.

Aquí hay un volcado de código corto, para que sepa que no es un error del acelerómetro.

final SensorEventListener mEventListener = new SensorEventListener(){
     public void onAccuracyChanged(Sensor sensor, int accuracy) {}  
 public void onSensorChanged(SensorEvent event) {
     setListners(sensorManager, mEventListener);

      SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet);
     SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);


        synchronized (this) {

            switch (event.sensor.getType()){
                case Sensor.TYPE_ACCELEROMETER:

                    System.arraycopy(event.values, 0, mValuesAccel, 0, 3);

                    long actualTime = System.currentTimeMillis();

                    //Sensitivity delay
                    if (actualTime - lastUpdate < 250) {
                        return;
                        }
                    else {
                        sysAzimuth = (int)Math.toDegrees(mValuesOrientation[0]);
                        sysPitch = (int)Math.toDegrees(mValuesOrientation[1]);
                        sysRoll = (int)Math.toDegrees(mValuesOrientation[2]);

                        //invert direction with -1
                      pitch = (sysPitch - pitchCal)*-1;
                      roll = (sysRoll - rollCal);
                      azimuth = sysAzimuth;

                    lastUpdate = actualTime;
                    }

Respuestas a la pregunta(8)

Su respuesta a la pregunta