2012-08-22 2 views
8

J'ai une classe qui implémente SensorEventListener et je voudrais obtenir le tilt Angle de mon appareil en utilisant le Accelerometer. J'ai cherché des exemples sur Internet mais ils utilisent Sensor.TYPE_MAGNETIC_FIELD.Obtenir l'angle d'inclinaison de l'accéléromètre android

Je crois que mon appareil ne possède pas ce capteur parce que quand je fais la suivante chèque
manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size(), je reçois zéro.

Y at-il un moyen d'obtenir le tilt Angle en utilisant simplement les valeurs Sensor.TYPE_ACCELEROMETER?

Répondre

0

Essayez ceci,

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

Comme je l'ai dit mon appareil n'avez pas Sensor.TYPE_MAGNETIC_FIELD. Existe-t-il un moyen d'obtenir l'angle d'inclinaison en utilisant simplement les valeurs Sensor.TYPE_ACCELEROMETER? – user1615888

+0

puis utilisez uniquement Sensor.TYPE-Accelerometer case – AndroidCrazy

+1

Mais alors mValuesMagnet sera nul, et il ne peut pas être. – user1615888

0

Vous pouvez utiliser l'accéléromètre pour obtenir une lecture d'inclinaison. Si vous installez un accéléromètre, vous remarquerez qu'il inclut la force de gravité. Donc, si vous téléphonez face vers le haut sur une table, l'axe z enregistrera quelque part près de 9,81 (la force de gravité) et les axes x et y seront à 0. Lorsque vous inclinez le téléphone, la force de gravité sera projetée sur l'axe x et/ou y. Ainsi vous les valeurs x et y vous diront l'inclinaison du téléphone.