private SensorManager sensorManager;
oncreate()
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor magneticSensor = sensorManager
.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
Sensor accelerometerSensor = sensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(listener, magneticSensor,
SensorManager.SENSOR_DELAY_GAME);
sensorManager.registerListener(listener, accelerometerSensor,
SensorManager.SENSOR_DELAY_GAME);
@Override
protected void onDestroy()
{
super.onDestroy();
if (sensorManager != null)
{
sensorManager.unregisterListener(listener);
}
}
private SensorEventListener listener = new SensorEventListener()
{
float[] accelerometerValues = new float[3];
float[] magneticValues = new float[3];
@Override
public void onSensorChanged(SensorEvent event)
{
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
{
accelerometerValues = event.values.clone();
}
else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
{
magneticValues = event.values.clone();
}
float[] values = new float[3];
float[] R = new float[9];
SensorManager.getRotationMatrix(R, null, accelerometerValues,magneticValues);
SensorManager.getOrientation(R, values);
float angle = (float)Math.toDegrees(values[1]);//x
float angle1 = (float)Math.toDegrees(values[2]);//y
float angle2 = (float)Math.toDegrees(values[0]);//z
tv.setText("x轴:"+angle+"\n"+"y轴:"+angle1+"\n"+"z轴:"+angle2);//设置一个textview控件显示
}
}
x = 0,
y = 0,
z(0-180)(-180-0)
侧放:
x = 0,
y(0-180)(-180-0)
z(0-180)(-180-0)
竖放:
x(0--90)(-90-0)(0-90)(90-0)
y乱码
z(0-180)(-180-0)