--------------------------------------------------------------
package com.example.lucainnocenti.sensori; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity implements SensorEventListener{ private SensorManager mSensorManager; private final float[] mAccelerometerReading = new float[3]; private final float[] mMagnetometerReading = new float[3]; private final float[] mRotationMatrix = new float[9]; private final float[] mOrientationAngles = new float[3]; private Sensor mAccelerometer; private Sensor mMagnetometer; private double az; private double pi; private double ro; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); mMagnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override protected void onResume() { super.onResume(); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL, SensorManager.SENSOR_DELAY_UI); mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_NORMAL, SensorManager.SENSOR_DELAY_UI); } @Override protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } @Override public void onSensorChanged(SensorEvent event) { if (event.sensor == mAccelerometer) { System.arraycopy(event.values, 0, mAccelerometerReading, 0, mAccelerometerReading.length); } else if (event.sensor == mMagnetometer) { System.arraycopy(event.values, 0, mMagnetometerReading, 0, mMagnetometerReading.length); } updateOrientationAngles(); } public void updateOrientationAngles() { mSensorManager.getRotationMatrix(mRotationMatrix, null, mAccelerometerReading, mMagnetometerReading); mSensorManager.getOrientation(mRotationMatrix, mOrientationAngles); az = Math.toDegrees(mOrientationAngles[0]); pi = Math.toDegrees(mOrientationAngles[1]); ro = Math.toDegrees(mOrientationAngles[2]); Log.d("orienta", "Az:"+String.valueOf(az)+" Pi:"+String.valueOf(pi)+" Ro:"+String.valueOf(ro)); } }
Nessun commento:
Posta un commento