Android-Pitch-und Roll-Problem

Arbeite ich an einem tilt-app für Android. Ich habe ein Problem mit Portrait - & Landschaft-Modus. Wenn die pitch = 90 Grad (Handy am Ende) und auch etwas vor dem roll-Wert spielt verrückt, wenn es keine physischen Wandels in der Rolle. Ich habe nicht in der Lage gewesen, eine Lösung zu finden für dieses problem. Ob jemand kann mich in die richtige Richtung, würde es geschätzt werden.

Hier ein kurzer code-dump, damit Sie wissen, es ist nicht ein Beschleunigungsmesser Fehler.

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;
                    }

InformationsquelleAutor user1234051 | 2012-02-26

Schreibe einen Kommentar