6 import android.content.Context;
7 import android.hardware.Sensor;
8 import android.hardware.SensorEvent;
9 import android.hardware.SensorEventListener;
10 import android.hardware.SensorManager;
12 import static android.content.Context.SENSOR_SERVICE;
15 private SensorManager mSensorManager;
16 private Sensor mRotVectSensor;
17 private float[] mRotationMatrix =
new float[9];
18 private float[] mTruncatedRotationVector =
new float[4];
27 mSensorManager = (SensorManager) context.getSystemService(SENSOR_SERVICE);
28 mRotVectSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
31 static void destroy() {
36 mSensorManager.registerListener(
this, mRotVectSensor, SensorManager.SENSOR_DELAY_FASTEST);
40 mSensorManager.unregisterListener(
this);
43 public void onSensorChanged(SensorEvent event) {
44 if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
45 if (event.values.length > 4) {
46 System.arraycopy(event.values, 0, mTruncatedRotationVector, 0, 4);
47 SensorManager.getRotationMatrixFromVector(mRotationMatrix, mTruncatedRotationVector);
49 SensorManager.getRotationMatrixFromVector(mRotationMatrix, event.values);
72 public void onAccuracyChanged(Sensor sensor,
int accuracy) {