因为我没有找到任何相关的答案在网上搜索,我张贴关于检测的360度的问题, 原来使用加速度计围绕其轴的Android设备。 例如大约在横向模式y轴:让我们说,在开始位置y值为0(设备是平坦的接地)。 当电话正向旋转90度y = -10
,180度向前倾斜将导致y = 0
,270度的倾斜在y = +10
幅360度在y = 0
。 因此,如何将代码看起来象只检测在预先设定的方向的装置的这一整圈?
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
// assign directions
x = event.values[1];
y = event.values[0];
z = event.values[2];
???
}
}
编辑:已使用getRotationMatrix()方法succeded。
private float[] r = new float[9];
private float[] i = new float[9];
private float[] v = new float[3];
private float[] accValues = new float[3];
private float[] geoValues = new float[3];
private int azimuth, pitch, roll;
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
accValues = event.values.clone();
}
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
geoValues = event.values.clone();
}
boolean success = SensorManager.getRotationMatrix(r, i, accValues,
geoValues);
if (success) {
SensorManager.getOrientation(r, v);
azimuth = v[0] * (180 / Math.PI);
pitch = v[1] * (180 / Math.PI);
roll = v[2] * (180 / Math.PI);
}
}