Android 直立时可以使用什么传感器来检测旋转?

Android 直立时可以使用什么传感器来检测旋转?,android,android-sensors,Android,Android Sensors,您好,我正在创建一个应用程序,在该应用程序中,用户将手机竖直,然后围绕y轴旋转手机(类似于拍摄全景) (来源:) 我需要检测旋转角度。在iOS中,这对于陀螺仪传感器来说相当简单,但我发现Android的运气不一样。如果有人能为我指出正确的方向,那就太好了。可以通过SensorManager管理各种传感器。当然,由于每个设备都决定是否在其型号的硬件平台上安装特定的传感器,因此您必须检查是否存在传感器。有些有类似于iOS的陀螺仪,有些可以用加速计和磁强计传感器代替 您可以从这里开始:假设您的Y轴指向

您好,我正在创建一个应用程序,在该应用程序中,用户将手机竖直,然后围绕y轴旋转手机(类似于拍摄全景)
(来源:)


我需要检测旋转角度。在iOS中,这对于陀螺仪传感器来说相当简单,但我发现Android的运气不一样。如果有人能为我指出正确的方向,那就太好了。

可以通过SensorManager管理各种传感器。当然,由于每个设备都决定是否在其型号的硬件平台上安装特定的传感器,因此您必须检查是否存在传感器。有些有类似于iOS的陀螺仪,有些可以用加速计和磁强计传感器代替


您可以从这里开始:

假设您的Y轴指向地球中心,您要查找的值称为方位角

要监测其变化,您需要注册类型\加速计和类型\磁场事件的侦听器:

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]; // <----------
float[]值=新的float[3];
SensorManager.getOrientation(R,值);

浮动当前_方位_val=值[0];//getOrientation()中的“R”值是多少?谢谢。你的回答会导致ArrayIndexOutOfBoundsException