2012-08-22 32 views
8

Tengo una clase que implementa SensorEventListener y me gustaría obtener el tilt Angle de mi dispositivo con el Accelerometer.Obtener ángulo de inclinación desde el acelerómetro Android

Busqué ejemplos en Internet pero usan Sensor.TYPE_MAGNETIC_FIELD.

creo que mi dispositivo no dispone de este sensor, porque cuando lo haga la siguiente comprobación
manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size(), consigo cero.

¿Hay alguna forma de obtener el tilt Angle simplemente usando Sensor.TYPE_ACCELEROMETER?

Respuesta

0

Prueba de esto,

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

Como ya he dicho mi dispositivo no tiene Sensor.TYPE_MAGNETIC_FIELD. ¿Hay alguna manera de obtener el ángulo de inclinación simplemente usando los valores de Sensor.TYPE_ACCELEROMETER? – user1615888

+0

luego use solamente Sensor.TYPE-Accelerometer case – AndroidCrazy

+1

Pero entonces mValuesMagnet será nulo, y no puede ser. – user1615888

0

Usted puede utilizar el acelerómetro para obtener una lectura de inclinación. Si configura un acelerómetro, notará que incluye la fuerza de la gravedad. Entonces, si su teléfono está boca arriba sobre una mesa, el eje z se registrará cerca de 9.81 (la fuerza de la gravedad) y los ejes xey estarán en 0. A medida que inclina el teléfono, se proyectará la fuerza de la gravedad en el eje x y/o y. Por lo tanto, los valores xey indican la inclinación del teléfono.

Cuestiones relacionadas