如何使用Android';陀螺仪?

如何使用Android';陀螺仪?,android,gyroscope,Android,Gyroscope,我正在尝试使用Android中的陀螺仪获取z轴旋转值,我只想在屏幕上显示手机绕z轴旋转的角度。因此,如果我把手机直立着,屏幕对着我,然后向右旋转90度,屏幕仍然对着我,我希望它在屏幕上显示90度 到目前为止,我的代码非常基本,但我似乎找不到任何仅在单轴上旋转的示例: 我有一个文本视图,它只是从onSensorChanged()打印数据 mySensorManager=(SensorManager)getSystemService(Context.SENSOR\u SERVICE); List m

我正在尝试使用Android中的陀螺仪获取z轴旋转值,我只想在屏幕上显示手机绕z轴旋转的角度。因此,如果我把手机直立着,屏幕对着我,然后向右旋转90度,屏幕仍然对着我,我希望它在屏幕上显示90度

到目前为止,我的代码非常基本,但我似乎找不到任何仅在单轴上旋转的示例:

我有一个文本视图,它只是从onSensorChanged()打印数据

mySensorManager=(SensorManager)getSystemService(Context.SENSOR\u SERVICE);
List mySensors=mySensorManager.getSensorList(Sensor.TYPE_陀螺仪);
如果(mySensors.size()>0){
mySensorManager.registerListener(mysensorreventListener、mySensors.get(0)、SensorManager.SENSOR\u DELAY\u UI);
}
私有SensorEventListener mySensorEventListener=新的SensorEventListener(){
@凌驾
传感器更改时的公共无效(传感器事件){
textviewX.setText(“X旋转:+String.valueOf(event.values[0]));
textviewY.setText(“Y-Rotation”+String.valueOf(event.values[1]);
textviewZ.setText(“Z-Rotation”+String.valueOf(event.values[2]);
}
@凌驾
精度更改时的公共无效(传感器,int精度){
}
};

当我在z轴上旋转手机时,它输出的z轴数据只是在0、-0、1和2之间切换,随手机旋转而随机切换。有人能帮我吗?谢谢。

您忽略了传感器不返回纯旋转值这一事实

你需要考虑重力和精度

编辑:我忽略了一个事实,你需要的是角度运动,而不是直线运动


手册仍然适用。

请查看此处。。。
mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
List<Sensor> mySensors = mySensorManager.getSensorList(Sensor.TYPE_GYROSCOPE);

if(mySensors.size() > 0){
 mySensorManager.registerListener(mySensorEventListener, mySensors.get(0), SensorManager.SENSOR_DELAY_UI);
}

private SensorEventListener mySensorEventListener = new SensorEventListener() {

    @Override
    public void onSensorChanged(SensorEvent event) {

        textviewX.setText("X-Rotation: " + String.valueOf(event.values[0]));
        textviewY.setText("Y-Rotation " + String.valueOf(event.values[1]));
        textviewZ.setText("Z-Rotation " + String.valueOf(event.values[2]));
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
};