嗨,我正在创建一个应用程序,用户在其中将手机竖立,然后围绕y轴旋转(类似于拍摄全景图)。
(来源:apple.com)
我需要检测旋转角度。在iOS中,使用陀螺仪传感器非常简单,但是我在Android上找不到同样的运气。如果有人能指出我正确的方向,那就太好了。
最佳答案
假设您的Y轴指向地球中心,那么您所寻找的值称为方位角。
要监视其更改,您将需要为TYPE_ACCELEROMETER和TYPE_MAGNETIC_FIELD事件注册一个侦听器:
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);
在监听器中,调用:
float[] values = new float[3];
SensorManager.getOrientation(R, values);
float current_azimuth_val = values[0]; // <----------
注意质量。和延迟,如果您要获取的数据高度依赖于硬件。