您的位置:首页 > 其它

安卓开发之方向传感器

2016-11-17 17:27 363 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐