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