2012-08-22 11 views
8

Ich habe eine Klasse, die SensorEventListener implementiert und ich möchte der tilt Angle meines Geräts mit der Accelerometer.Get Neigungswinkel von der Android-Beschleunigungsmesser

Ich suchte nach Beispielen im Internet, aber sie verwenden Sensor.TYPE_MAGNETIC_FIELD.

Ich glaube, mein Gerät nicht diesen Sensor, weil, wenn ich die Prüfung folgendes tun
manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size(), bekomme ich Null.

Gibt es eine Möglichkeit, die tilt Angle nur mit Sensor.TYPE_ACCELEROMETER Werte zu erhalten?

Antwort

0

die Sie interessieren,

SensorManager sensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE);   

     final SensorEventListener mEventListener = new SensorEventListener() { 
      public void onAccuracyChanged(Sensor sensor, int accuracy) { 
      } 


      public void onSensorChanged(SensorEvent event) { 
       // TODO Auto-generated method stub 
       switch (event.sensor.getType()) { 
       case Sensor.TYPE_ACCELEROMETER: 
        System.arraycopy(event.values, 0, mValuesAccel, 0, 3); 
        break; 

       case Sensor.TYPE_MAGNETIC_FIELD: 
        System.arraycopy(event.values, 0, mValuesMagnet, 0, 3); 
        break; 
       } 
      }; 
     }; 

     setListners(sensorManager, mEventListener); 

SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet); 
       SensorManager.getOrientation(mRotationMatrix, mValuesOrientation); 
       final CharSequence test; 
       test = ","+mValuesOrientation[0] +","+mValuesOrientation[1]+ ","+ mValuesOrientation[2]; 
+0

Wie gesagt ich mein Gerät nicht Sensor.TYPE_MAGNETIC_FIELD haben. Gibt es eine Möglichkeit, den Neigungswinkel zu ermitteln, indem Sie nur Sensor.TYPE_ACCELEROMETER-Werte verwenden? – user1615888

+0

dann nur Sensor.TYPE-Accelerometer Fall verwenden – AndroidCrazy

+1

Aber dann wird mValuesMagnet Null sein, und es kann nicht sein. – user1615888

0

können Sie das Beschleunigungsmesser verwenden, um einen Neigungsmesswert zu erhalten. Wenn Sie einen Beschleunigungssensor einrichten, werden Sie feststellen, dass er die Schwerkraft enthält. Wenn Sie also mit dem Gesicht nach oben auf einem Tisch telefonieren, wird die Z-Achse irgendwo in der Nähe von 9,81 (der Schwerkraft) registriert und die X- und Y-Achsen liegen bei 0. Wenn Sie das Telefon neigen, wird die Schwerkraft projiziert auf die x- und/oder y-Achse. So können Sie die x und y Werte die Neigung des Telefons sagen.