使用android传感器时,应该使用哪个传感器来确定设备是否已向上或向下倾斜?
使用以下代码:
SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel,mValuesMagnet);
SensorManager.remapCoordinateSystem(mRotationMatrix,
SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, R2);
SensorManager.getOrientation(R2, mValuesOrientation);
我得到了三个方位值(方位角,俯仰,横滚)
如何使用三个方向值来确定设备是否已向上或向下倾斜。
最佳答案
要获得设备倾斜以及其他攻击角度,您需要注册一个侦听器,用于输入加速度计和输入磁场事件:
mngr = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
accelerometer = mngr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
magneticField = mngr.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
int rate = SensorManager.SENSOR_DELAY_GAME; // or other
mngr.registerListener(sensorListener, accelerometer, rate);
mngr.registerListener(sensorListener, magneticField, rate);
一旦激活监听器,您将需要调用
SensorManager.getOrientation()
获取方位角(Z)、俯仰角(X)和横滚角(Y)的当前值。
您可以在这里找到一个详细的代码示例:http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html