2012-08-22 16 views
8

Mam klasę, która implementuje SensorEventListener i chciałbym uzyskać z tilt Angle z mojego urządzenia przy użyciu Accelerometer.Uzyskaj kąt pochylenia z akcelerometru Android

Szukałem przykładów w Internecie, ale używają one Sensor.TYPE_MAGNETIC_FIELD.

wierzę moje urządzenie nie posiada tego czujnika bo kiedy zrobić następujący czek
manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size(), mam zerowy.

Czy istnieje sposób, aby uzyskać tilt Angle za pomocą tylko wartości Sensor.TYPE_ACCELEROMETER?

Odpowiedz

0

Spróbuj tego,

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

Jak powiedziałem moje urządzenie nie masz Sensor.TYPE_MAGNETIC_FIELD. Czy istnieje sposób na uzyskanie kąta pochylenia za pomocą wartości Sensor.TYPE_ACCELEROMETER? – user1615888

+0

następnie użyj tylko Sensor.TYPE-Accelerometer case – AndroidCrazy

+1

Ale wtedy mValuesMagnet będzie null i nie może być. – user1615888

0

Można użyć akcelerometru, aby uzyskać odczyt nachylenia. Jeśli ustawisz akcelerometr, zauważysz, że zawiera on siłę grawitacji. Jeśli więc telefon jest odkryty na stole, oś Z zarejestruje się gdzieś blisko 9,81 (siła grawitacji), a osie x i y będą na poziomie 0. Podczas przechylania telefonu będzie rzutowana siła grawitacji na osi X i/lub Y. W ten sposób wartości xiy informują o nachyleniu telefonu.

Powiązane problemy